1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
5 import * as React from "react";
6 import { mount, configure } from "enzyme";
7 import DataTableFilter, { DataTableFilterItem } from "./data-table-filters";
9 import * as Adapter from 'enzyme-adapter-react-16';
10 import { Checkbox, ButtonBase, ListItem, Button, ListItemText } from "@material-ui/core";
11 import dataTableFilters from "./data-table-filters";
13 configure({ adapter: new Adapter() });
15 describe("<DataTableFilter />", () => {
16 it("renders filters according to their state", () => {
24 const dataTableFilter = mount(<DataTableFilter name="" filters={filters} />);
25 dataTableFilter.find(ButtonBase).simulate("click");
26 expect(dataTableFilter.find(Checkbox).at(0).prop("checked")).toBeTruthy();
27 expect(dataTableFilter.find(Checkbox).at(1).prop("checked")).toBeFalsy();
30 it("updates filters after filters prop change", () => {
35 const updatedFilters = [, {
39 const dataTableFilter = mount(<DataTableFilter name="" filters={filters} />);
40 dataTableFilter.find(ButtonBase).simulate("click");
41 expect(dataTableFilter.find(Checkbox).prop("checked")).toBeTruthy();
42 dataTableFilter.find(ListItem).simulate("click");
43 expect(dataTableFilter.find(Checkbox).prop("checked")).toBeFalsy();
44 dataTableFilter.setProps({filters: updatedFilters});
45 expect(dataTableFilter.find(Checkbox).prop("checked")).toBeTruthy();
46 expect(dataTableFilter.find(ListItemText).text()).toBe("Filter 2");
49 it("calls onChange with modified list of filters", () => {
57 const onChange = jest.fn();
58 const dataTableFilter = mount(<DataTableFilter name="" filters={filters} onChange={onChange} />);
59 dataTableFilter.find(ButtonBase).simulate("click");
60 dataTableFilter.find(ListItem).at(1).simulate("click");
61 dataTableFilter.find(Button).at(0).simulate("click");
62 expect(onChange).toHaveBeenCalledWith([{