15951: Removes dead code, updates tests to work with component being used.
authorLucas Di Pentima <lucas@di-pentima.com.ar>
Wed, 4 Mar 2020 01:37:21 +0000 (22:37 -0300)
committerLucas Di Pentima <lucas@di-pentima.com.ar>
Wed, 4 Mar 2020 01:37:21 +0000 (22:37 -0300)
Arvados-DCO-1.1-Signed-off-by: Lucas Di Pentima <lucas@di-pentima.com.ar>

src/components/data-table-filters/data-table-filters-popover.test.tsx [new file with mode: 0644]
src/components/data-table-filters/data-table-filters.test.tsx [deleted file]
src/components/data-table-filters/data-table-filters.tsx
src/components/data-table/data-table.test.tsx

diff --git a/src/components/data-table-filters/data-table-filters-popover.test.tsx b/src/components/data-table-filters/data-table-filters-popover.test.tsx
new file mode 100644 (file)
index 0000000..f7bd00f
--- /dev/null
@@ -0,0 +1,24 @@
+// 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 { DataTableFiltersPopover } from "./data-table-filters-popover";
+import * as Adapter from 'enzyme-adapter-react-16';
+import { Checkbox, IconButton } from "@material-ui/core";
+import { getInitialProcessStatusFilters } from "~/store/resource-type-filters/resource-type-filters"
+
+configure({ adapter: new Adapter() });
+
+describe("<DataTableFiltersPopover />", () => {
+    it("renders filters according to their state", () => {
+        // 1st filter (All) is selected, the rest aren't.
+        const filters = getInitialProcessStatusFilters()
+
+        const dataTableFilter = mount(<DataTableFiltersPopover name="" filters={filters} />);
+        dataTableFilter.find(IconButton).simulate("click");
+        expect(dataTableFilter.find(Checkbox).at(0).prop("checked")).toBeTruthy();
+        expect(dataTableFilter.find(Checkbox).at(1).prop("checked")).toBeFalsy();
+    });
+});
diff --git a/src/components/data-table-filters/data-table-filters.test.tsx b/src/components/data-table-filters/data-table-filters.test.tsx
deleted file mode 100644 (file)
index dc1969f..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-// 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 { DataTableFilters } from "./data-table-filters";
-import * as Adapter from 'enzyme-adapter-react-16';
-import { Checkbox, ButtonBase } from "@material-ui/core";
-
-configure({ adapter: new Adapter() });
-
-describe("<DataTableFilter />", () => {
-    it("renders filters according to their state", () => {
-        const filters = [{
-            name: "Filter 1",
-            selected: true
-        }, {
-            name: "Filter 2",
-            selected: false
-        }];
-        const dataTableFilter = mount(<DataTableFilters name="" filters={filters} />);
-        dataTableFilter.find(ButtonBase).simulate("click");
-        expect(dataTableFilter.find(Checkbox).at(0).prop("checked")).toBeTruthy();
-        expect(dataTableFilter.find(Checkbox).at(1).prop("checked")).toBeFalsy();
-    });
-});
index a57f29aac44805b3abb24aad5128447b635b32b3..ed7b30e759078918460d1f30cedecc88eb027eb1 100644 (file)
@@ -2,207 +2,7 @@
 //
 // SPDX-License-Identifier: AGPL-3.0
 
-import * as React from "react";
-import {
-    WithStyles,
-    withStyles,
-    ButtonBase,
-    StyleRulesCallback,
-    Theme,
-    Popover,
-    List,
-    ListItem,
-    Checkbox,
-    ListItemText,
-    Button,
-    Card,
-    CardActions,
-    Typography,
-    CardContent,
-    Tooltip
-} from "@material-ui/core";
-import * as classnames from "classnames";
-import { DefaultTransformOrigin } from "../popover/helpers";
-import { createTree, initTreeNode, mapTree } from '~/models/tree';
-import { DataTableFilters as DataTableFiltersModel, DataTableFiltersTree } from "./data-table-filters-tree";
-import { pipe } from 'lodash/fp';
-import { setNode } from '~/models/tree';
-
-export type CssRules = "root" | "icon" | "active" | "checkbox";
-
-const styles: StyleRulesCallback<CssRules> = (theme: Theme) => ({
-    root: {
-        cursor: "pointer",
-        display: "inline-flex",
-        justifyContent: "flex-start",
-        flexDirection: "inherit",
-        alignItems: "center",
-        "&:hover": {
-            color: theme.palette.text.primary,
-        },
-        "&:focus": {
-            color: theme.palette.text.primary,
-        },
-    },
-    active: {
-        color: theme.palette.text.primary,
-        '& $icon': {
-            opacity: 1,
-        },
-    },
-    icon: {
-        marginRight: 4,
-        marginLeft: 4,
-        opacity: 0.7,
-        userSelect: "none",
-        width: 16
-    },
-    checkbox: {
-        width: 24,
-        height: 24
-    }
-});
-
 export interface DataTableFilterItem {
     name: string;
     selected: boolean;
 }
-
-export interface DataTableFilterProps {
-    name: string;
-    filters: DataTableFilterItem[];
-    onChange?: (filters: DataTableFilterItem[]) => void;
-}
-
-interface DataTableFilterState {
-    anchorEl?: HTMLElement;
-    filters: DataTableFilterItem[];
-    prevFilters: DataTableFilterItem[];
-    filtersTree: DataTableFiltersModel;
-}
-
-const filters: DataTableFiltersModel = pipe(
-    createTree,
-    setNode(initTreeNode({ id: 'Project', value: { name: 'Project' } })),
-    setNode(initTreeNode({ id: 'Process', value: { name: 'Process' } })),
-    setNode(initTreeNode({ id: 'Data collection', value: { name: 'Data collection' } })),
-    setNode(initTreeNode({ id: 'General', parent: 'Data collection', value: { name: 'General' } })),
-    setNode(initTreeNode({ id: 'Output', parent: 'Data collection', value: { name: 'Output' } })),
-    setNode(initTreeNode({ id: 'Log', parent: 'Data collection', value: { name: 'Log' } })),
-    mapTree(node => ({...node, selected: true})),
-)();
-
-export const DataTableFilters = withStyles(styles)(
-    class extends React.Component<DataTableFilterProps & WithStyles<CssRules>, DataTableFilterState> {
-        state: DataTableFilterState = {
-            anchorEl: undefined,
-            filters: [],
-            prevFilters: [],
-            filtersTree: filters,
-        };
-        icon = React.createRef<HTMLElement>();
-
-        render() {
-            const { name, classes, children } = this.props;
-            const isActive = this.state.filters.some(f => f.selected);
-            return <>
-                <Tooltip title='Filters'>
-                    <ButtonBase
-                        className={classnames([classes.root, { [classes.active]: isActive }])}
-                        component="span"
-                        onClick={this.open}
-                        disableRipple>
-                        {children}
-                        <i className={classnames(["fas fa-filter", classes.icon])}
-                            data-fa-transform="shrink-3"
-                            ref={this.icon} />
-                    </ButtonBase>
-                </Tooltip>
-                <Popover
-                    anchorEl={this.state.anchorEl}
-                    open={!!this.state.anchorEl}
-                    anchorOrigin={DefaultTransformOrigin}
-                    transformOrigin={DefaultTransformOrigin}
-                    onClose={this.cancel}>
-                    <Card>
-                        <CardContent>
-                            <Typography variant="caption">
-                                {name}
-                            </Typography>
-                        </CardContent>
-                        <List dense>
-                            {this.state.filters.map((filter, index) =>
-                                <ListItem
-                                    key={index}>
-                                    <Checkbox
-                                        onClick={this.toggleFilter(filter)}
-                                        color="primary"
-                                        checked={filter.selected}
-                                        className={classes.checkbox} />
-                                    <ListItemText>
-                                        {filter.name}
-                                    </ListItemText>
-                                </ListItem>
-                            )}
-                        </List>
-                        <DataTableFiltersTree
-                            filters={this.state.filtersTree}
-                            onChange={filtersTree => this.setState({ filtersTree })} />
-                        <CardActions>
-                            <Button
-                                color="primary"
-                                variant='contained'
-                                size="small"
-                                onClick={this.submit}>
-                                Ok
-                            </Button>
-                            <Button
-                                color="primary"
-                                variant="outlined"
-                                size="small"
-                                onClick={this.cancel}>
-                                Cancel
-                            </Button>
-                        </CardActions >
-                    </Card>
-                </Popover>
-            </>;
-        }
-
-        static getDerivedStateFromProps(props: DataTableFilterProps, state: DataTableFilterState): DataTableFilterState {
-            return props.filters !== state.prevFilters
-                ? { ...state, filters: props.filters, prevFilters: props.filters }
-                : state;
-        }
-
-        open = () => {
-            this.setState({ anchorEl: this.icon.current || undefined });
-        }
-
-        submit = () => {
-            const { onChange } = this.props;
-            if (onChange) {
-                onChange(this.state.filters);
-            }
-            this.setState({ anchorEl: undefined });
-        }
-
-        cancel = () => {
-            this.setState(prev => ({
-                ...prev,
-                filters: prev.prevFilters,
-                anchorEl: undefined
-            }));
-        }
-
-        toggleFilter = (toggledFilter: DataTableFilterItem) => () => {
-            this.setState(prev => ({
-                ...prev,
-                filters: prev.filters.map(filter =>
-                    filter === toggledFilter
-                        ? { ...filter, selected: !filter.selected }
-                        : filter)
-            }));
-        }
-    }
-);
index d0b83b969695d00dfc4e31170e0d072f112e9055..3e4cc2123146fa0ff1bc098c3b80465bae56ac8f 100644 (file)
@@ -8,7 +8,6 @@ import { pipe } from 'lodash/fp';
 import { TableHead, TableCell, Typography, TableBody, Button, TableSortLabel } from "@material-ui/core";
 import * as Adapter from "enzyme-adapter-react-16";
 import { DataTable, DataColumns } from "./data-table";
-import { DataTableFilters } from "~/components/data-table-filters/data-table-filters";
 import { SortDirection, createDataColumn } from "./data-column";
 import { DataTableFiltersPopover } from '~/components/data-table-filters/data-table-filters-popover';
 import { createTree, setNode, initTreeNode } from '~/models/tree';
@@ -162,7 +161,7 @@ describe("<DataTable />", () => {
         expect(onSortToggle).toHaveBeenCalledWith(columns[0]);
     });
 
-    it("does not display <DataTableFilter /> if there is no filters provided", () => {
+    it("does not display <DataTableFiltersPopover /> if there is no filters provided", () => {
         const columns: DataColumns<string> = [{
             name: "Column 1",
             sortDirection: SortDirection.ASC,
@@ -180,7 +179,7 @@ describe("<DataTable />", () => {
             onRowDoubleClick={jest.fn()}
             onSortToggle={jest.fn()}
             onContextMenu={jest.fn()} />);
-        expect(dataTable.find(DataTableFilters)).toHaveLength(0);
+        expect(dataTable.find(DataTableFiltersPopover)).toHaveLength(0);
     });
 
     it("passes filter props to <DataTableFiltersPopover />", () => {
@@ -209,24 +208,4 @@ describe("<DataTable />", () => {
         dataTable.find(DataTableFiltersPopover).prop("onChange")([]);
         expect(onFiltersChange).toHaveBeenCalledWith([], columns[0]);
     });
-
-    // it("shows default view if there is no items", () => {
-    //     const columns: DataColumns<string> = [
-    //         createDataColumn({
-    //             name: "Column 1",
-    //             render: () => <span />,
-    //             selected: true,
-    //             configurable: true
-    //         }),
-    //     ];
-    //     const dataTable = mount(<DataTable
-    //         columns={columns}
-    //         items={[]}
-    //         onFiltersChange={jest.fn()}
-    //         onRowClick={jest.fn()}
-    //         onRowDoubleClick={jest.fn()}
-    //         onContextMenu={jest.fn()}
-    //         onSortToggle={jest.fn()} />);
-    //     expect(dataTable.find(DataTableDefaultView)).toHaveLength(1);
-    // });
 });