From: Michal Klobukowski Date: Thu, 14 Jun 2018 14:00:23 +0000 (+0200) Subject: Create tests for columns configurator X-Git-Tag: 1.2.0~75^2~12 X-Git-Url: https://git.arvados.org/arvados-workbench2.git/commitdiff_plain/9b9176157227d347493ad2a7572dbca57ed9308b Create tests for columns configurator Feature #13601 Arvados-DCO-1.1-Signed-off-by: Michal Klobukowski --- diff --git a/src/components/data-explorer/columns-configurator/columns-configurator.test.tsx b/src/components/data-explorer/columns-configurator/columns-configurator.test.tsx new file mode 100644 index 00000000..56b195f7 --- /dev/null +++ b/src/components/data-explorer/columns-configurator/columns-configurator.test.tsx @@ -0,0 +1,79 @@ +// Copyright (C) The Arvados Authors. All rights reserved. +// +// SPDX-License-Identifier: AGPL-3.0 + +import * as React from "react"; +import { mount, configure } from "enzyme"; +import * as Adapter from "enzyme-adapter-react-16"; +import ColumnsConfigurator, { ColumnsConfiguratorTrigger } from "./columns-configurator"; +import { Column } from "../column"; +import { ListItem, Checkbox } from "@material-ui/core"; + +configure({ adapter: new Adapter() }); + +describe("", () => { + it("shows only configurable columns", () => { + const columns: Array> = [ + { + header: "Column 1", + render: () => , + selected: true + }, + { + header: "Column 2", + render: () => , + selected: true, + configurable: true, + }, + { + header: "Column 3", + render: () => , + selected: true, + configurable: false + } + ]; + const columnsConfigurator = mount(); + columnsConfigurator.find(ColumnsConfiguratorTrigger).simulate("click"); + expect(columnsConfigurator.find(ListItem)).toHaveLength(2); + }); + + it("renders checked checkboxes next to selected columns", () => { + const columns: Array> = [ + { + header: "Column 1", + render: () => , + selected: true + }, + { + header: "Column 2", + render: () => , + selected: false + }, + { + header: "Column 3", + render: () => , + selected: true + } + ]; + const columnsConfigurator = mount(); + columnsConfigurator.find(ColumnsConfiguratorTrigger).simulate("click"); + expect(columnsConfigurator.find(Checkbox).at(0).prop("checked")).toBe(true); + expect(columnsConfigurator.find(Checkbox).at(1).prop("checked")).toBe(false); + expect(columnsConfigurator.find(Checkbox).at(2).prop("checked")).toBe(true); + }); + + it("calls onColumnToggle with clicked column", () => { + const columns: Array> = [ + { + header: "Column 1", + render: () => , + selected: true + } + ]; + const onColumnToggle = jest.fn(); + const columnsConfigurator = mount(); + columnsConfigurator.find(ColumnsConfiguratorTrigger).simulate("click"); + columnsConfigurator.find(ListItem).simulate("click"); + expect(onColumnToggle).toHaveBeenCalledWith(columns[0]); + }); +}); \ No newline at end of file diff --git a/src/components/data-explorer/columns-configurator/columns-configurator.tsx b/src/components/data-explorer/columns-configurator/columns-configurator.tsx index 73d38b71..cf5841eb 100644 --- a/src/components/data-explorer/columns-configurator/columns-configurator.tsx +++ b/src/components/data-explorer/columns-configurator/columns-configurator.tsx @@ -46,7 +46,7 @@ const ColumnsConfigurator: React.SFC = (props) => ( +export const ColumnsConfiguratorTrigger: React.SFC = (props) => (