Added webpack for js
This commit is contained in:
@@ -5,4 +5,4 @@
|
||||
"regenerator": true
|
||||
}]
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 () => {
|
||||
|
||||
})
|
||||
|
||||
23777
static/main/js/control_page/package-lock.json
generated
23777
static/main/js/control_page/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -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"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
16
static/main/js/control_page/src/index.js
Normal file
16
static/main/js/control_page/src/index.js
Normal 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();
|
||||
32
static/main/js/control_page/test_users.json
Normal file
32
static/main/js/control_page/test_users.json
Normal 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
|
||||
}
|
||||
31
static/main/js/control_page/webpack.config.js
Normal file
31
static/main/js/control_page/webpack.config.js
Normal 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'
|
||||
}
|
||||
Reference in New Issue
Block a user