1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
5 import React from "react";
6 import { configure, mount } from "enzyme";
7 import Adapter from "enzyme-adapter-react-16";
9 import { DataExplorer } from "./data-explorer";
10 import { ColumnSelector } from "../column-selector/column-selector";
11 import { DataTable, DataTableFetchMode } from "../data-table/data-table";
12 import { SearchInput } from "../search-input/search-input";
13 import { TablePagination } from "@material-ui/core";
14 import { ProjectIcon } from "../icon/icon";
15 import { SortDirection } from "../data-table/data-column";
16 import { combineReducers, createStore } from "redux";
17 import { Provider } from "react-redux";
19 configure({ adapter: new Adapter() });
21 describe("<DataExplorer />", () => {
24 const initialMSState = {
33 multiselect: (state: any = initialMSState.multiselect, action: any) => state,
34 resources: (state: any = initialMSState.resources, action: any) => state,
39 it("communicates with <SearchInput/>", () => {
40 const onSearch = jest.fn();
41 const onSetColumns = jest.fn();
43 const dataExplorer = mount(
44 <Provider store={store}>
46 {...mockDataExplorerProps()}
47 items={[{ name: "item 1" }]}
48 searchValue="search value"
50 onSetColumns={onSetColumns}
54 expect(dataExplorer.find(SearchInput).prop("value")).toEqual("search value");
55 dataExplorer.find(SearchInput).prop("onSearch")("new value");
56 expect(onSearch).toHaveBeenCalledWith("new value");
59 // it("communicates with <ColumnSelector/>", () => {
60 // const onColumnToggle = jest.fn();
61 // const onSetColumns = jest.fn();
62 // const columns = [{ name: "Column 1", render: jest.fn(), selected: true, configurable: true, sortDirection: SortDirection.ASC, filters: {} }];
63 // const dataExplorer = mount(
65 // {...mockDataExplorerProps()}
67 // onColumnToggle={onColumnToggle}
68 // items={[{ name: "item 1" }]}
69 // onSetColumns={onSetColumns}
72 // expect(dataExplorer.find(ColumnSelector).prop("columns")).toBe(columns);
73 // dataExplorer.find(ColumnSelector).prop("onColumnToggle")("columns");
74 // expect(onColumnToggle).toHaveBeenCalledWith("columns");
77 // it("communicates with <DataTable/>", () => {
78 // const onFiltersChange = jest.fn();
79 // const onSortToggle = jest.fn();
80 // const onRowClick = jest.fn();
81 // const onSetColumns = jest.fn();
82 // const columns = [{ name: "Column 1", render: jest.fn(), selected: true, configurable: true, sortDirection: SortDirection.ASC, filters: {} }];
83 // const items = [{ name: "item 1" }];
84 // const dataExplorer = mount(
86 // {...mockDataExplorerProps()}
89 // onFiltersChange={onFiltersChange}
90 // onSortToggle={onSortToggle}
91 // onRowClick={onRowClick}
92 // onSetColumns={onSetColumns}
95 // expect(dataExplorer.find(DataTable).prop("columns").slice(1, 2)).toEqual(columns);
96 // expect(dataExplorer.find(DataTable).prop("items")).toBe(items);
97 // dataExplorer.find(DataTable).prop("onRowClick")("event", "rowClick");
98 // dataExplorer.find(DataTable).prop("onFiltersChange")("filtersChange");
99 // dataExplorer.find(DataTable).prop("onSortToggle")("sortToggle");
100 // expect(onFiltersChange).toHaveBeenCalledWith("filtersChange");
101 // expect(onSortToggle).toHaveBeenCalledWith("sortToggle");
102 // expect(onRowClick).toHaveBeenCalledWith("rowClick");
105 // it("communicates with <TablePagination/>", () => {
106 // const onChangePage = jest.fn();
107 // const onChangeRowsPerPage = jest.fn();
108 // const onSetColumns = jest.fn();
109 // const dataExplorer = mount(
111 // {...mockDataExplorerProps()}
112 // items={[{ name: "item 1" }]}
115 // onChangePage={onChangePage}
116 // onChangeRowsPerPage={onChangeRowsPerPage}
117 // onSetColumns={onSetColumns}
120 // expect(dataExplorer.find(TablePagination).prop("page")).toEqual(10);
121 // expect(dataExplorer.find(TablePagination).prop("rowsPerPage")).toEqual(50);
122 // dataExplorer.find(TablePagination).prop("onChangePage")(undefined, 6);
123 // dataExplorer.find(TablePagination).prop("onChangeRowsPerPage")({ target: { value: 10 } });
124 // expect(onChangePage).toHaveBeenCalledWith(6);
125 // expect(onChangeRowsPerPage).toHaveBeenCalledWith(10);
129 const mockDataExplorerProps = () => ({
130 fetchMode: DataTableFetchMode.PAGINATED,
138 rowsPerPageOptions: [0],
140 onFiltersChange: jest.fn(),
141 onSortToggle: jest.fn(),
142 onRowClick: jest.fn(),
143 onRowDoubleClick: jest.fn(),
144 onColumnToggle: jest.fn(),
145 onChangePage: jest.fn(),
146 onChangeRowsPerPage: jest.fn(),
147 onContextMenu: jest.fn(),
148 defaultIcon: ProjectIcon,
149 onSetColumns: jest.fn(),
150 onLoadMore: jest.fn(),
151 defaultMessages: ["testing"],
152 contextMenuColumn: true,
153 setCheckedListOnStore: jest.fn(),
154 toggleMSToolbar: jest.fn(),
155 isMSToolbarVisible: false,