X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/e2ea1359533664ead0ae9b810fe56bf518846c78..838af71bfe460c7f5a03121acf8a4d239893cdac:/src/components/data-explorer/data-explorer.test.tsx diff --git a/src/components/data-explorer/data-explorer.test.tsx b/src/components/data-explorer/data-explorer.test.tsx index 8ced6cb3..a34ab1c8 100644 --- a/src/components/data-explorer/data-explorer.test.tsx +++ b/src/components/data-explorer/data-explorer.test.tsx @@ -3,40 +3,28 @@ // SPDX-License-Identifier: AGPL-3.0 import * as React from "react"; -import { mount, configure } from "enzyme"; +import { configure, mount } from "enzyme"; import * as Adapter from 'enzyme-adapter-react-16'; -import DataExplorer from "./data-explorer"; -import ContextMenu from "../context-menu/context-menu"; -import ColumnSelector from "../column-selector/column-selector"; -import DataTable from "../data-table/data-table"; -import SearchInput from "../search-input/search-input"; +import { DataExplorer } from "./data-explorer"; +import { ColumnSelector } from "../column-selector/column-selector"; +import { DataTable } from "../data-table/data-table"; +import { SearchInput } from "../search-input/search-input"; +import { TablePagination } from "@material-ui/core"; +import { ProjectIcon } from '../icon/icon'; +import { DefaultView } from '../default-view/default-view'; configure({ adapter: new Adapter() }); describe("", () => { - it("communicates with ", () => { - const onContextAction = jest.fn(); - const dataExplorer = mount(); - expect(dataExplorer.find(ContextMenu).prop("actions")).toEqual([]); - dataExplorer.find(DataTable).prop("onRowContextMenu")({ - preventDefault: jest.fn() - }, "Item 1"); - dataExplorer.find(ContextMenu).prop("onActionClick")({ name: "Action 1", icon: "" }); - expect(onContextAction).toHaveBeenCalledWith({ name: "Action 1", icon: "" }, "Item 1"); - }); - + it("communicates with ", () => { const onSearch = jest.fn(); const dataExplorer = mount(); + onSearch={onSearch} />); expect(dataExplorer.find(SearchInput).prop("value")).toEqual("search value"); dataExplorer.find(SearchInput).prop("onSearch")("new value"); expect(onSearch).toHaveBeenCalledWith("new value"); @@ -44,13 +32,12 @@ describe("", () => { it("communicates with ", () => { const onColumnToggle = jest.fn(); - const columns = [{ name: "Column 1", render: jest.fn(), selected: true }]; + const columns = [{ name: "Column 1", render: jest.fn(), selected: true, configurable: true }]; const dataExplorer = mount(); + items={[{ name: "item 1" }]} />); expect(dataExplorer.find(ColumnSelector).prop("columns")).toBe(columns); dataExplorer.find(ColumnSelector).prop("onColumnToggle")("columns"); expect(onColumnToggle).toHaveBeenCalledWith("columns"); @@ -60,8 +47,8 @@ describe("", () => { const onFiltersChange = jest.fn(); const onSortToggle = jest.fn(); const onRowClick = jest.fn(); - const columns = [{ name: "Column 1", render: jest.fn(), selected: true }]; - const items = ["Item 1"]; + const columns = [{ name: "Column 1", render: jest.fn(), selected: true, configurable: true }]; + const items = [{ name: "item 1" }]; const dataExplorer = mount(", () => { onFiltersChange={onFiltersChange} onSortToggle={onSortToggle} onRowClick={onRowClick} />); - expect(dataExplorer.find(DataTable).prop("columns")).toBe(columns); + expect(dataExplorer.find(DataTable).prop("columns").slice(0, -1)).toEqual(columns); expect(dataExplorer.find(DataTable).prop("items")).toBe(items); dataExplorer.find(DataTable).prop("onRowClick")("event", "rowClick"); dataExplorer.find(DataTable).prop("onFiltersChange")("filtersChange"); @@ -78,17 +65,54 @@ describe("", () => { expect(onSortToggle).toHaveBeenCalledWith("sortToggle"); expect(onRowClick).toHaveBeenCalledWith("rowClick"); }); + + it("does not render if there is no items", () => { + const dataExplorer = mount(); + expect(dataExplorer.find(DataTable)).toHaveLength(0); + expect(dataExplorer.find(DefaultView)).toHaveLength(1); + }); + + it("communicates with ", () => { + const onChangePage = jest.fn(); + const onChangeRowsPerPage = jest.fn(); + const dataExplorer = mount(); + expect(dataExplorer.find(TablePagination).prop("page")).toEqual(10); + expect(dataExplorer.find(TablePagination).prop("rowsPerPage")).toEqual(50); + dataExplorer.find(TablePagination).prop("onChangePage")(undefined, 6); + dataExplorer.find(TablePagination).prop("onChangeRowsPerPage")({ target: { value: 10 } }); + expect(onChangePage).toHaveBeenCalledWith(6); + expect(onChangeRowsPerPage).toHaveBeenCalledWith(10); + }); }); const mockDataExplorerProps = () => ({ columns: [], items: [], + itemsAvailable: 0, contextActions: [], searchValue: "", + page: 0, + rowsPerPage: 0, + rowsPerPageOptions: [0], onSearch: jest.fn(), onFiltersChange: jest.fn(), onSortToggle: jest.fn(), onRowClick: jest.fn(), + onRowDoubleClick: jest.fn(), onColumnToggle: jest.fn(), - onContextAction: jest.fn() -}); \ No newline at end of file + onChangePage: jest.fn(), + onChangeRowsPerPage: jest.fn(), + onContextMenu: jest.fn(), + defaultIcon: ProjectIcon, + defaultMessages: ['testing'], +});