Added webpack for js

This commit is contained in:
Yuriy Kulakov
2021-05-04 18:19:30 +03:00
parent f4e5b9192e
commit 79fb2412d6
11 changed files with 22854 additions and 1108 deletions

View File

@@ -5,4 +5,4 @@
"regenerator": true
}]
]
}
}

View File

@@ -1,19 +1,35 @@
import React from "react";
import {render, unmountComponentAtNode} from "react-dom";
import {act} from "react-dom/test-utils";
import TableBody from "./control";
import {TableBody} from "./src/control";
import * as test_data from "./test_users.json"
import axios from "axios";
import MockAdapter from 'axios-mock-adapter'
let container = null;
let table = null;
let load = null;
let engineer_count = null
let agents_count = null
let licences_remaining = null
beforeEach(() => {
table = document.createElement("table");
container = document.createElement("tbody");
container.id = "tbody";
table.appendChild(container);
load = document.createElement("p");
load.id = "loading"
load.innerHTML = "Данные загружаются";
licences_remaining = document.createElement('p')
licences_remaining.id = "licences_remaining"
engineer_count = document.createElement("p")
agents_count = document.createElement("p")
engineer_count.className = "info-quantity-value"
agents_count.className = "info-quantity-value"
document.body.appendChild(table);
document.body.appendChild(engineer_count)
document.body.appendChild(agents_count)
document.body.appendChild(licences_remaining)
document.body.appendChild(load);
jest.useFakeTimers();
});
@@ -23,15 +39,39 @@ afterEach(() => {
container.remove();
table.remove();
load.remove();
engineer_count.remove()
agents_count.remove()
licences_remaining.remove()
container = null;
table = null;
load = null;
engineer_count = null
agents_count = null
licences_remaining = null
jest.useRealTimers();
});
it("has rows on mount", () => {
it("has rows no on mount", () => {
act(() => {
let container = document.createElement("tbody");
render(<TableBody/>, container);
});
expect(container.getElementsByTagName("tr").length).not.toBe(0);
expect(container.getElementsByTagName("tr").length).toBe(0);
});
it("has valid number of workplaces",async () => {
let mock = new MockAdapter(axios)
mock.onGet("/api/users").reply(200, test_data)
await act(async () => {
render(<TableBody/>, container)
})
let licences = Number(licences_remaining.textContent.replace(/Свободных мест: /, ''))
expect(licences).toEqual(1)
mock.restore()
})
it ("Pretext must be deleted on render", async () => {
})

File diff suppressed because it is too large Load Diff

View File

@@ -2,7 +2,7 @@
"name": "control_page",
"version": "1.0.0",
"description": "",
"main": "control.js",
"main": "src/control.js",
"scripts": {
"test": "jest"
},
@@ -21,6 +21,12 @@
"@babel/cli": "^7.13.16",
"@babel/core": "^7.13.16",
"@babel/preset-env": "^7.13.15",
"jest": "^26.6.3"
"axios": "^0.21.1",
"axios-mock-adapter": "^1.19.0",
"babel-loader": "^8.2.2",
"jest": "^26.6.3",
"npx": "^10.2.2",
"webpack": "^5.36.2",
"webpack-cli": "^4.6.0"
}
}

View File

@@ -1,16 +1,7 @@
"use strict";
import React from "react";
import ReactDOM from "react-dom";
import axios from "axios";
let React = require('react')
function head_checkbox() {
let head_checkbox = document.getElementById("head-checkbox");
head_checkbox.addEventListener("click", () => {
let checkboxes = document.getElementsByName("users");
for (let checkbox of checkboxes) checkbox.click();
});
}
// React
class ModelUserTableRow extends React.Component {
render() {
return (
@@ -76,7 +67,7 @@ class ZendeskUserTableRows extends React.Component {
}
}
class TableBody extends React.Component {
export class TableBody extends React.Component {
constructor(props) {
super(props);
this.state = {
@@ -137,6 +128,3 @@ class TableBody extends React.Component {
);
}
}
ReactDOM.render(<TableBody />, document.getElementById("tbody"));
head_checkbox();

View File

@@ -0,0 +1,16 @@
import {TableBody} from "./control"
import ReactDOM from "react-dom";
import React from "react";
function head_checkbox() {
let head_checkbox = document.getElementById("head-checkbox");
head_checkbox.addEventListener("click", () => {
let checkboxes = document.getElementsByName("users");
for (let checkbox of checkboxes) checkbox.click();
});
}
ReactDOM.render(<TableBody />, document.getElementById("tbody"));
head_checkbox();

View File

@@ -0,0 +1,32 @@
{
"users": [
{
"user": {
"email": "123@test.ru"
},
"id": 2,
"name": "UserForAccessTest",
"zendesk_role": "light_agent"
}
],
"engineers": 2,
"light_agents": 2,
"zendesk_users": [
{
"name": "Степаненко Ольга s101",
"zendesk_role": "engineer",
"email": "stepanenko_olga@mail.ru"
},
{
"name": "TEST",
"zendesk_role": "engineer",
"email": "akovalev1305@gmail.com"
},
{
"name": "Vasua",
"zendesk_role": "light_agent",
"email": "krav-88@mail.ru"
}
],
"max_agents": 3
}

View File

@@ -0,0 +1,31 @@
const path = require('path')
module.exports = {
entry: './src/index.js',
module: {
rules: [
{
test: /\.(js)$/,
exclude: path.resolve(__dirname, 'node_modules/'),
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env', "@babel/preset-react"],
plugins: [["@babel/plugin-transform-runtime", {"regenerator": true}]],
}
}
}
]
},
resolve: {
extensions: [
'.js',
'.jsx'
]
},
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'index_bundle.js'
},
mode: 'development'
}