Merge branch 'master' into feature/TW-957

This commit is contained in:
Sean Macfarlane
2020-07-30 11:00:59 -04:00
4 changed files with 211 additions and 5 deletions

View File

@@ -21,12 +21,23 @@ Object.defineProperty(window, 'matchMedia', {
});
const mockProps = {
title: '',
editable: false,
dataIndex: '',
record: {},
title: 'CHANNEL',
editable: true,
dataIndex: 'channel',
record: {
cellSize: [-90, -90, -90],
channel: [36, 6, 149],
clientDisconnectThreshold: [-90, -90, -90],
id: '1',
key: '1',
minLoad: [40, 40, 50],
name: 'AP 1',
probeResponseThreshold: [-90, -90, -90],
snrDrop: [30, 30, 20],
},
handleSave: () => {},
};
describe('<EditableCell />', () => {
afterEach(cleanup);
@@ -62,6 +73,8 @@ describe('<EditableCell />', () => {
};
const { getByTestId } = render(<EditableCellComp />);
const tableCell = getByTestId('bulkEditTableCell');
const ENTER = { keyCode: 13 };
fireEvent.keyDown(tableCell, ENTER);
fireEvent.click(tableCell);
const input = getByTestId('bulkEditFormInput');
fireEvent.change(input, { target: { value: '' } });
@@ -71,4 +84,76 @@ describe('<EditableCell />', () => {
expect(handleSaveSpy).not.toHaveBeenCalled();
});
});
it('handleSave should be called when input is valid and Enter key is pressed', async () => {
const handleSaveSpy = jest.fn();
const EditableCellComp = () => {
const [form] = Form.useForm();
return (
<div form={form}>
<EditableContext.Provider value={form}>
<EditableCell {...mockProps} editable handleSave={handleSaveSpy} />
</EditableContext.Provider>
</div>
);
};
const { getByTestId } = render(<EditableCellComp />);
const tableCell = getByTestId('bulkEditTableCell');
fireEvent.click(tableCell);
const input = getByTestId('bulkEditFormInput');
expect(input).toBeInTheDocument();
fireEvent.change(input, { target: { value: '123' } });
await waitFor(() => {
expect(input.value).toBe('123');
});
const ENTER = { keyCode: 13 };
fireEvent.keyDown(input, ENTER);
await waitFor(() => {
expect(handleSaveSpy).toHaveBeenCalled();
});
});
it('cell should not be editable when editable flag is false', async () => {
const EditableCellComp = () => {
const [form] = Form.useForm();
return (
<div form={form}>
<EditableContext.Provider value={form}>
<EditableCell editable={false} />
</EditableContext.Provider>
</div>
);
};
render(<EditableCellComp />);
});
it('cell should be Render When Props Not Provide', async () => {
const EditableCellComp = () => {
const [form] = Form.useForm();
return (
<div form={form}>
<EditableContext.Provider value={form}>
<EditableCell editable />
</EditableContext.Provider>
</div>
);
};
const { getByTestId } = render(<EditableCellComp />);
const tableCell = getByTestId('bulkEditTableCell');
fireEvent.click(tableCell);
const input = getByTestId('bulkEditFormInput');
expect(input).toBeInTheDocument();
fireEvent.change(input, { target: { value: '123' } });
await waitFor(() => {
expect(input.value).toBe('123');
});
const ENTER = { keyCode: 13 };
fireEvent.keyDown(input, ENTER);
});
});

View File

@@ -0,0 +1,39 @@
import React from 'react';
import '@testing-library/jest-dom/extend-expect';
import { render } from 'tests/utils';
import { Form } from 'antd';
import { EditableRow, EditableContext } from '..';
Object.defineProperty(window, 'matchMedia', {
writable: true,
value: jest.fn().mockImplementation(query => ({
matches: false,
media: query,
onchange: null,
addListener: jest.fn(), // deprecated
removeListener: jest.fn(), // deprecated
addEventListener: jest.fn(),
removeEventListener: jest.fn(),
dispatchEvent: jest.fn(),
})),
});
const mockProps = {
index: 0,
};
describe('<EditableRow />', () => {
it('Should work with default props', () => {
const EditableRowComp = () => {
const [form] = Form.useForm();
return (
<div form={form}>
<EditableContext.Provider value={form}>
<EditableRow {...mockProps} />
</EditableContext.Provider>
</div>
);
};
render(<EditableRowComp />);
});
});

View File

@@ -0,0 +1,78 @@
import '@testing-library/jest-dom/extend-expect';
import { cleanup, fireEvent, waitFor } from '@testing-library/react';
import React from 'react';
import { render } from 'tests/utils';
import BulkEditAPTable from '..';
Object.defineProperty(window, 'matchMedia', {
writable: true,
value: jest.fn().mockImplementation(query => ({
matches: false,
media: query,
onchange: null,
addListener: jest.fn(), // deprecated
removeListener: jest.fn(), // deprecated
addEventListener: jest.fn(),
removeEventListener: jest.fn(),
dispatchEvent: jest.fn(),
})),
});
const mockProps = {
tableColumns: [
{ dataIndex: 'name', editable: true, key: 'name', title: 'NAME' },
{ dataIndex: 'name', editable: false, key: 'name', title: 'NAME-1' },
],
tableData: [
{
key: '1',
id: '1',
name: 'AP 1',
channel: [25, 23, 61],
cellSize: [-90, -90, -90],
clientDisconnectThreshold: [-90, -90, -90],
probeResponseThreshold: [-90, -90, -90],
minLoad: [50, 40, 40],
snrDrop: [20, 30, 30],
},
],
onEditedRows: jest.fn(),
onLoadMore: jest.fn(),
isLastPage: false,
resetEditedRows: false,
};
describe('<BulkEditAPTableComp />', () => {
afterEach(cleanup);
it('Should work with default props', () => {
const BulkEditAPTableComp = () => {
return <BulkEditAPTable {...mockProps} />;
};
render(<BulkEditAPTableComp />);
});
it('Should work when a single table cell is edited multiple times', async () => {
const BulkEditAPTableComp = () => {
return <BulkEditAPTable {...mockProps} />;
};
const { getByTestId } = render(<BulkEditAPTableComp />);
const tableCell = getByTestId('bulkEditTableCell');
fireEvent.click(tableCell);
const input = getByTestId('bulkEditFormInput');
fireEvent.click(input);
const ENTER = { keyCode: 13 };
fireEvent.keyDown(input, ENTER);
await waitFor(() => expect(getByTestId('bulkEditTableCell')).toBeInTheDocument());
const newTableCell = getByTestId('bulkEditTableCell');
fireEvent.click(newTableCell);
const newInput = getByTestId('bulkEditFormInput');
fireEvent.click(newInput);
fireEvent.keyDown(newInput, ENTER);
await waitFor(() => expect(getByTestId('bulkEditTableCell')).toBeInTheDocument());
});
});

View File

@@ -25,6 +25,10 @@ const mockProps = {
onSaveChanges: () => {},
onLoadMore: () => {},
isLastPage: true,
breadcrumbPath: [
{ id: 2, name: 'Menlo Park' },
{ id: 8, name: 'Ottawa' },
],
};
describe('<BulkEditAccessPoints />', () => {
afterEach(cleanup);
@@ -69,7 +73,7 @@ describe('<BulkEditAccessPoints />', () => {
expect(getByRole('button', { name: 'Load More' })).toBeVisible();
});
it('onLoadMore should be called when ', async () => {
it('onLoadMore should be called when Load More button is clicked', async () => {
const submitSpy = jest.fn();
const { getByRole } = render(
<Router>