[ARVADOS-WORKBENCH2] updated: 1.1.4-284-g975f9b6

Git user git at public.curoverse.com
Fri Jul 13 03:42:11 EDT 2018


Summary of changes:
 .../data-explorer/data-explorer.test.tsx           | 11 ++-
 src/components/data-table/data-table.test.tsx      | 49 +++++------
 .../details-panel-factory.tsx                      |  2 +-
 src/components/tree/tree.test.tsx                  | 64 +++++++--------
 src/models/kinds.ts                                | 12 ---
 src/store/context-menu/context-menu-actions.ts     | 15 ++++
 src/store/context-menu/context-menu-reducer.ts     | 32 ++++++++
 src/store/details-panel/details-panel-action.ts    |  4 +-
 src/store/navigation/navigation-action.ts          |  3 +-
 src/store/project/project-reducer.test.ts          |  3 -
 .../main-app-bar/main-app-bar.test.tsx             |  5 ++
 .../project-tree/project-tree.test.tsx             | 96 ++++++++--------------
 src/views/project-panel/project-panel-item.ts      |  2 +-
 src/views/project-panel/project-panel.tsx          |  2 +-
 src/views/workbench/workbench.tsx                  |  2 +-
 15 files changed, 151 insertions(+), 151 deletions(-)
 delete mode 100644 src/models/kinds.ts
 create mode 100644 src/store/context-menu/context-menu-actions.ts
 create mode 100644 src/store/context-menu/context-menu-reducer.ts

       via  975f9b6c2e0f6d5988c01d7dbe6e2a6214d54de6 (commit)
      from  a19a2cd08f80d39455d245156617a87d72bed3ec (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.


commit 975f9b6c2e0f6d5988c01d7dbe6e2a6214d54de6
Author: Michal Klobukowski <michal.klobukowski at contractors.roche.com>
Date:   Fri Jul 13 09:41:13 2018 +0200

    Update Resource kind reference, update missing component props in tests
    
    Feature #13798
    
    Arvados-DCO-1.1-Signed-off-by: Michal Klobukowski <michal.klobukowski at contractors.roche.com>

diff --git a/src/components/data-explorer/data-explorer.test.tsx b/src/components/data-explorer/data-explorer.test.tsx
index c043082..5d4877f 100644
--- a/src/components/data-explorer/data-explorer.test.tsx
+++ b/src/components/data-explorer/data-explorer.test.tsx
@@ -7,12 +7,10 @@ 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 { TablePagination } from "@material-ui/core";
-import { MockItem } from "../data-table/data-table.test";
 
 configure({ adapter: new Adapter() });
 
@@ -22,7 +20,7 @@ describe("<DataExplorer />", () => {
         const onSearch = jest.fn();
         const dataExplorer = mount(<DataExplorer
             {...mockDataExplorerProps()}
-            items={[{ key: "1", name: "item 1" }] as MockItem[]}
+            items={[{ name: "item 1" }]}
             searchValue="search value"
             onSearch={onSearch} />);
         expect(dataExplorer.find(SearchInput).prop("value")).toEqual("search value");
@@ -37,7 +35,7 @@ describe("<DataExplorer />", () => {
             {...mockDataExplorerProps()}
             columns={columns}
             onColumnToggle={onColumnToggle}
-            items={[{ key: "1", name: "item 1" }] as MockItem[]} />);
+            items={[{ name: "item 1" }]} />);
         expect(dataExplorer.find(ColumnSelector).prop("columns")).toBe(columns);
         dataExplorer.find(ColumnSelector).prop("onColumnToggle")("columns");
         expect(onColumnToggle).toHaveBeenCalledWith("columns");
@@ -48,7 +46,7 @@ describe("<DataExplorer />", () => {
         const onSortToggle = jest.fn();
         const onRowClick = jest.fn();
         const columns = [{ name: "Column 1", render: jest.fn(), selected: true }];
-        const items = [{ key: "1", name: "item 1" }] as MockItem[];
+        const items = [{ name: "item 1" }];
         const dataExplorer = mount(<DataExplorer
             {...mockDataExplorerProps()}
             columns={columns}
@@ -79,7 +77,7 @@ describe("<DataExplorer />", () => {
         const onChangeRowsPerPage = jest.fn();
         const dataExplorer = mount(<DataExplorer
             {...mockDataExplorerProps()}
-            items={[{ key: "1", name: "item 1" }] as MockItem[]}
+            items={[{ name: "item 1" }]}
             page={10}
             rowsPerPage={50}
             onChangePage={onChangePage}
@@ -106,6 +104,7 @@ const mockDataExplorerProps = () => ({
     onFiltersChange: jest.fn(),
     onSortToggle: jest.fn(),
     onRowClick: jest.fn(),
+    onRowDoubleClick: jest.fn(),
     onColumnToggle: jest.fn(),
     onChangePage: jest.fn(),
     onChangeRowsPerPage: jest.fn(),
diff --git a/src/components/data-table/data-table.test.tsx b/src/components/data-table/data-table.test.tsx
index 2ee3507..ec84aca 100644
--- a/src/components/data-table/data-table.test.tsx
+++ b/src/components/data-table/data-table.test.tsx
@@ -6,19 +6,15 @@ import * as React from "react";
 import { mount, configure } from "enzyme";
 import { TableHead, TableCell, Typography, TableBody, Button, TableSortLabel } from "@material-ui/core";
 import * as Adapter from "enzyme-adapter-react-16";
-import DataTable, { DataColumns, DataItem } from "./data-table";
+import DataTable, { DataColumns } from "./data-table";
 import DataTableFilters from "../data-table-filters/data-table-filters";
 import { SortDirection } from "./data-column";
 
 configure({ adapter: new Adapter() });
 
-export interface MockItem extends DataItem {
-    name: string;
-}
-
 describe("<DataTable />", () => {
     it("shows only selected columns", () => {
-        const columns: DataColumns<MockItem> = [
+        const columns: DataColumns<string> = [
             {
                 name: "Column 1",
                 render: () => <span />,
@@ -37,16 +33,17 @@ describe("<DataTable />", () => {
         ];
         const dataTable = mount(<DataTable
             columns={columns}
-            items={[{ key: "1", name: "item 1" }] as MockItem[]}
+            items={[{ key: "1", name: "item 1" }]}
             onFiltersChange={jest.fn()}
             onRowClick={jest.fn()}
+            onRowDoubleClick={jest.fn()}
             onContextMenu={jest.fn()}
             onSortToggle={jest.fn()} />);
         expect(dataTable.find(TableHead).find(TableCell)).toHaveLength(2);
     });
 
     it("renders column name", () => {
-        const columns: DataColumns<MockItem> = [
+        const columns: DataColumns<string> = [
             {
                 name: "Column 1",
                 render: () => <span />,
@@ -55,16 +52,17 @@ describe("<DataTable />", () => {
         ];
         const dataTable = mount(<DataTable
             columns={columns}
-            items={[{ key: "1", name: "item 1" }] as MockItem[]}
+            items={["item 1"]}
             onFiltersChange={jest.fn()}
             onRowClick={jest.fn()}
+            onRowDoubleClick={jest.fn()}
             onContextMenu={jest.fn()}
             onSortToggle={jest.fn()} />);
         expect(dataTable.find(TableHead).find(TableCell).text()).toBe("Column 1");
     });
 
     it("uses renderHeader instead of name prop", () => {
-        const columns: DataColumns<MockItem> = [
+        const columns: DataColumns<string> = [
             {
                 name: "Column 1",
                 renderHeader: () => <span>Column Header</span>,
@@ -74,16 +72,17 @@ describe("<DataTable />", () => {
         ];
         const dataTable = mount(<DataTable
             columns={columns}
-            items={[{ key: "1", name: "item 1" }] as MockItem[]}
+            items={[]}
             onFiltersChange={jest.fn()}
             onRowClick={jest.fn()}
+            onRowDoubleClick={jest.fn()}
             onContextMenu={jest.fn()}
             onSortToggle={jest.fn()} />);
         expect(dataTable.find(TableHead).find(TableCell).text()).toBe("Column Header");
     });
 
     it("passes column key prop to corresponding cells", () => {
-        const columns: DataColumns<MockItem> = [
+        const columns: DataColumns<string> = [
             {
                 name: "Column 1",
                 key: "column-1-key",
@@ -93,9 +92,10 @@ describe("<DataTable />", () => {
         ];
         const dataTable = mount(<DataTable
             columns={columns}
-            items={[{ key: "1", name: "item 1" }] as MockItem[]}
+            items={["item 1"]}
             onFiltersChange={jest.fn()}
             onRowClick={jest.fn()}
+            onRowDoubleClick={jest.fn()}
             onContextMenu={jest.fn()}
             onSortToggle={jest.fn()} />);
         expect(dataTable.find(TableHead).find(TableCell).key()).toBe("column-1-key");
@@ -103,23 +103,24 @@ describe("<DataTable />", () => {
     });
 
     it("renders items", () => {
-        const columns: DataColumns<MockItem> = [
+        const columns: DataColumns<string> = [
             {
                 name: "Column 1",
-                render: (item) => <Typography>{item.name}</Typography>,
+                render: (item) => <Typography>{item}</Typography>,
                 selected: true
             },
             {
                 name: "Column 2",
-                render: (item) => <Button>{item.name}</Button>,
+                render: (item) => <Button>{item}</Button>,
                 selected: true
             }
         ];
         const dataTable = mount(<DataTable
             columns={columns}
-            items={[{ key: "1", name: "item 1" }] as MockItem[]}
+            items={["item 1"]}
             onFiltersChange={jest.fn()}
             onRowClick={jest.fn()}
+            onRowDoubleClick={jest.fn()}
             onContextMenu={jest.fn()}
             onSortToggle={jest.fn()} />);
         expect(dataTable.find(TableBody).find(Typography).text()).toBe("item 1");
@@ -127,18 +128,19 @@ describe("<DataTable />", () => {
     });
 
     it("passes sorting props to <TableSortLabel />", () => {
-        const columns: DataColumns<MockItem> = [{
+        const columns: DataColumns<string> = [{
             name: "Column 1",
             sortDirection: SortDirection.Asc,
             selected: true,
-            render: (item) => <Typography>{item.name}</Typography>
+            render: (item) => <Typography>{item}</Typography>
         }];
         const onSortToggle = jest.fn();
         const dataTable = mount(<DataTable
             columns={columns}
-            items={[{ key: "1", name: "item 1" }] as MockItem[]}
+            items={["item 1"]}
             onFiltersChange={jest.fn()}
             onRowClick={jest.fn()}
+            onRowDoubleClick={jest.fn()}
             onContextMenu={jest.fn()}
             onSortToggle={onSortToggle} />);
         expect(dataTable.find(TableSortLabel).prop("active")).toBeTruthy();
@@ -147,19 +149,20 @@ describe("<DataTable />", () => {
     });
 
     it("passes filter props to <DataTableFilter />", () => {
-        const columns: DataColumns<MockItem> = [{
+        const columns: DataColumns<string> = [{
             name: "Column 1",
             sortDirection: SortDirection.Asc,
             selected: true,
             filters: [{ name: "Filter 1", selected: true }],
-            render: (item) => <Typography>{item.name}</Typography>
+            render: (item) => <Typography>{item}</Typography>
         }];
         const onFiltersChange = jest.fn();
         const dataTable = mount(<DataTable
             columns={columns}
-            items={[{ key: "1", name: "item 1" }] as MockItem[]}
+            items={[]}
             onFiltersChange={onFiltersChange}
             onRowClick={jest.fn()}
+            onRowDoubleClick={jest.fn()}
             onSortToggle={jest.fn()}
             onContextMenu={jest.fn()} />);
         expect(dataTable.find(DataTableFilters).prop("filters")).toBe(columns[0].filters);
diff --git a/src/components/details-panel-factory/details-panel-factory.tsx b/src/components/details-panel-factory/details-panel-factory.tsx
index 4383e79..bb7d855 100644
--- a/src/components/details-panel-factory/details-panel-factory.tsx
+++ b/src/components/details-panel-factory/details-panel-factory.tsx
@@ -2,7 +2,6 @@
 //
 // SPDX-License-Identifier: AGPL-3.0
 
-import { ResourceKind } from '../../models/kinds';
 import ProjectItem from './items/project-item';
 import CollectionItem from './items/collection-item';
 import ProcessItem from './items/process-item';
@@ -10,6 +9,7 @@ import AbstractItem from './items/abstract-item';
 import EmptyItem from './items/empty-item';
 import { DetailsPanelResource } from '../../views-components/details-panel/details-panel';
 import { EmptyResource } from '../../models/empty';
+import { ResourceKind } from '../../models/resource';
 
 export default class DetailsPanelFactory {
     static createItem(res: DetailsPanelResource): AbstractItem {
diff --git a/src/components/tree/tree.test.tsx b/src/components/tree/tree.test.tsx
index bb0499f..9ac0511 100644
--- a/src/components/tree/tree.test.tsx
+++ b/src/components/tree/tree.test.tsx
@@ -5,51 +5,47 @@ import * as React from 'react';
 import { mount } from 'enzyme';
 import * as Enzyme from 'enzyme';
 import * as Adapter from 'enzyme-adapter-react-16';
-import { Collapse } from '@material-ui/core';
-import CircularProgress from '@material-ui/core/CircularProgress';
 import ListItem from "@material-ui/core/ListItem/ListItem";
 
-import Tree, {TreeItem} from './tree';
-import { Project } from '../../models/project';
+import Tree, { TreeItem } from './tree';
+import { ProjectResource } from '../../models/project';
+import { mockProjectResource } from '../../models/test-utils';
+
 Enzyme.configure({ adapter: new Adapter() });
 
 describe("Tree component", () => {
 
-	it("should render ListItem", () => {
-		const project: TreeItem<Project> = {
-            data: {
-                name: "sample name",
-                createdAt: "2018-06-12",
-                modifiedAt: "2018-06-13",
-                uuid: "uuid",
-                ownerUuid: "ownerUuid",
-                href: "href",
-            },
+    it("should render ListItem", () => {
+        const project: TreeItem<ProjectResource> = {
+            data: mockProjectResource(),
             id: "3",
             open: true,
-			active: true,
-			status: 1,
+            active: true,
+            status: 1,
         };
-		const wrapper = mount(<Tree render={project => <div/>} toggleItem={() => { }} items={[project]}/>)
-		expect(wrapper.find(ListItem)).toHaveLength(1);
-	});
-    
+        const wrapper = mount(<Tree
+            render={project => <div />}
+            toggleItemOpen={jest.fn()}
+            toggleItemActive={jest.fn()}
+            onContextMenu={jest.fn()}
+            items={[project]} />);
+        expect(wrapper.find(ListItem)).toHaveLength(1);
+    });
+
     it("should render arrow", () => {
-		const project: TreeItem<Project> = {
-            data: {
-                name: "sample name",
-                createdAt: "2018-06-12",
-                modifiedAt: "2018-06-13",
-                uuid: "uuid",
-                ownerUuid: "ownerUuid",
-                href: "href",
-            },
+        const project: TreeItem<ProjectResource> = {
+            data: mockProjectResource(),
             id: "3",
             open: true,
-			active: true,
-			status: 1,
+            active: true,
+            status: 1,
         };
-		const wrapper = mount(<Tree render={project => <div/>} toggleItem={() => { }} items={[project]}/>)
-		expect(wrapper.find('i')).toHaveLength(1);
-	});
+        const wrapper = mount(<Tree
+            render={project => <div />}
+            toggleItemOpen={jest.fn()}
+            toggleItemActive={jest.fn()}
+            onContextMenu={jest.fn()}
+            items={[project]} />);
+        expect(wrapper.find('i')).toHaveLength(1);
+    });
 });
diff --git a/src/models/kinds.ts b/src/models/kinds.ts
deleted file mode 100644
index 15bd622..0000000
--- a/src/models/kinds.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (C) The Arvados Authors. All rights reserved.
-//
-// SPDX-License-Identifier: AGPL-3.0
-
-export enum ResourceKind {
-    Collection = "arvados#collection",
-    ContainerRequest = "arvados#containerRequest",
-    Group = "arvados#group",
-    Process = "arvados#containerRequest",
-    Project = "arvados#group",
-    Workflow = "arvados#workflow"
-}
\ No newline at end of file
diff --git a/src/store/context-menu/context-menu-actions.ts b/src/store/context-menu/context-menu-actions.ts
new file mode 100644
index 0000000..89d6524
--- /dev/null
+++ b/src/store/context-menu/context-menu-actions.ts
@@ -0,0 +1,15 @@
+// Copyright (C) The Arvados Authors. All rights reserved.
+//
+// SPDX-License-Identifier: AGPL-3.0
+
+// import { default as unionize, ofType, UnionOf } from "unionize";
+
+// const actions = unionize({
+//     OPEN_CONTEXT_MENU: ofType<{position: {x: number, y: number}}>()
+// }, {
+//     tag: 'type',
+//     value: 'payload'
+// });
+
+// export type ContextMenuAction = UnionOf<typeof actions>;
+// export default actions;
\ No newline at end of file
diff --git a/src/store/context-menu/context-menu-reducer.ts b/src/store/context-menu/context-menu-reducer.ts
new file mode 100644
index 0000000..9a825a5
--- /dev/null
+++ b/src/store/context-menu/context-menu-reducer.ts
@@ -0,0 +1,32 @@
+// Copyright (C) The Arvados Authors. All rights reserved.
+//
+// SPDX-License-Identifier: AGPL-3.0
+
+// import actions, { DetailsPanelAction } from "./details-panel-action";
+// import { Resource, ResourceKind } from "../../models/resource";
+
+// export interface ContextMenuState {
+//     position: {
+//         x: number;
+//         y: number;
+//     },
+//     resource: {
+//         uuid: string;
+//         kind: ResourceKind.
+//     }
+// }
+
+// const initialState = {
+//     item: null,
+//     isOpened: false
+// };
+
+// const reducer = (state: DetailsPanelState = initialState, action: DetailsPanelAction) =>
+//     actions.match(action, {
+//         default: () => state,
+//         LOAD_DETAILS: () => state,
+//         LOAD_DETAILS_SUCCESS: ({ item }) => ({ ...state, item }),
+//         TOGGLE_DETAILS_PANEL: () => ({ ...state, isOpened: !state.isOpened })
+//     });
+
+// export default reducer;
diff --git a/src/store/details-panel/details-panel-action.ts b/src/store/details-panel/details-panel-action.ts
index 647e24f..630428c 100644
--- a/src/store/details-panel/details-panel-action.ts
+++ b/src/store/details-panel/details-panel-action.ts
@@ -4,11 +4,9 @@
 
 import { unionize, ofType, UnionOf } from "unionize";
 import CommonResourceService from "../../common/api/common-resource-service";
-import { ResourceKind } from "../../models/kinds";
 import { Dispatch } from "redux";
-import { groupsService } from "../../services/services";
 import { serverApi } from "../../common/api/server-api";
-import { Resource } from "../../models/resource";
+import { Resource, ResourceKind } from "../../models/resource";
 
 const actions = unionize({
     TOGGLE_DETAILS_PANEL: ofType<{}>(),
diff --git a/src/store/navigation/navigation-action.ts b/src/store/navigation/navigation-action.ts
index 89ae727..d7630d7 100644
--- a/src/store/navigation/navigation-action.ts
+++ b/src/store/navigation/navigation-action.ts
@@ -10,8 +10,7 @@ import { findTreeItem } from "../project/project-reducer";
 import dataExplorerActions from "../data-explorer/data-explorer-action";
 import { PROJECT_PANEL_ID } from "../../views/project-panel/project-panel";
 import { RootState } from "../store";
-import { ResourceKind } from "../../models/kinds";
-import { Resource } from "../../models/resource";
+import { Resource, ResourceKind } from "../../models/resource";
 
 export const getResourceUrl = <T extends Resource>(resource: T): string => {
     switch (resource.kind) {
diff --git a/src/store/project/project-reducer.test.ts b/src/store/project/project-reducer.test.ts
index 970af6c..dbac4e9 100644
--- a/src/store/project/project-reducer.test.ts
+++ b/src/store/project/project-reducer.test.ts
@@ -5,10 +5,7 @@
 import projectsReducer, { getTreePath } from "./project-reducer";
 import actions from "./project-action";
 import { TreeItem, TreeItemStatus } from "../../components/tree/tree";
-import { ResourceKind } from "../../models/kinds";
 import { mockProjectResource } from "../../models/test-utils";
-import { ProjectResource } from "../../models/project";
-import { GroupClass } from "../../models/group";
 
 describe('project-reducer', () => {
 
diff --git a/src/views-components/main-app-bar/main-app-bar.test.tsx b/src/views-components/main-app-bar/main-app-bar.test.tsx
index 7bdb63b..f58b26a 100644
--- a/src/views-components/main-app-bar/main-app-bar.test.tsx
+++ b/src/views-components/main-app-bar/main-app-bar.test.tsx
@@ -29,6 +29,7 @@ describe("<MainAppBar />", () => {
             <MainAppBar
                 user={user}
                 onDetailsPanelToggle={jest.fn()}
+                onContextMenu={jest.fn()}
                 {...{ searchText: "", breadcrumbs: [], menuItems: { accountMenu: [], helpMenu: [], anonymousMenu: [] }, onSearch: jest.fn(), onBreadcrumbClick: jest.fn(), onMenuItemClick: jest.fn() }}
             />
         );
@@ -43,6 +44,7 @@ describe("<MainAppBar />", () => {
             <MainAppBar
                 menuItems={menuItems}
                 onDetailsPanelToggle={jest.fn()}
+                onContextMenu={jest.fn()}
                 {...{ searchText: "", breadcrumbs: [], onSearch: jest.fn(), onBreadcrumbClick: jest.fn(), onMenuItemClick: jest.fn() }}
             />
         );
@@ -59,6 +61,7 @@ describe("<MainAppBar />", () => {
                 searchText="search text"
                 searchDebounce={2000}
                 onSearch={onSearch}
+                onContextMenu={jest.fn()}
                 onDetailsPanelToggle={jest.fn()}
                 {...{ user, breadcrumbs: [], menuItems: { accountMenu: [], helpMenu: [], anonymousMenu: [] }, onBreadcrumbClick: jest.fn(), onMenuItemClick: jest.fn() }}
             />
@@ -77,6 +80,7 @@ describe("<MainAppBar />", () => {
             <MainAppBar
                 breadcrumbs={items}
                 onBreadcrumbClick={onBreadcrumbClick}
+                onContextMenu={jest.fn()}
                 onDetailsPanelToggle={jest.fn()}
                 {...{ user, searchText: "", menuItems: { accountMenu: [], helpMenu: [], anonymousMenu: [] }, onSearch: jest.fn(), onMenuItemClick: jest.fn() }}
             />
@@ -94,6 +98,7 @@ describe("<MainAppBar />", () => {
             <MainAppBar
                 menuItems={menuItems}
                 onMenuItemClick={onMenuItemClick}
+                onContextMenu={jest.fn()}
                 onDetailsPanelToggle={jest.fn()}
                 {...{ user, searchText: "", breadcrumbs: [], onSearch: jest.fn(), onBreadcrumbClick: jest.fn() }}
             />
diff --git a/src/views-components/project-tree/project-tree.test.tsx b/src/views-components/project-tree/project-tree.test.tsx
index 7725da5..d53f8a9 100644
--- a/src/views-components/project-tree/project-tree.test.tsx
+++ b/src/views-components/project-tree/project-tree.test.tsx
@@ -12,99 +12,67 @@ import CircularProgress from '@material-ui/core/CircularProgress';
 
 import ProjectTree from './project-tree';
 import { TreeItem } from '../../components/tree/tree';
-import { Project } from '../../models/project';
-import { ResourceKind } from "../../models/resource";
+import { ProjectResource } from '../../models/project';
+import { mockProjectResource } from '../../models/test-utils';
 
 Enzyme.configure({ adapter: new Adapter() });
 
 describe("ProjectTree component", () => {
 
     it("should render ListItemIcon", () => {
-        const project: TreeItem<Project> = {
-            data: {
-                name: "sample name",
-                createdAt: "2018-06-12",
-                modifiedAt: "2018-06-13",
-                uuid: "uuid",
-                ownerUuid: "ownerUuid",
-                href: "href",
-                kind: ResourceKind.PROJECT
-            },
+        const project: TreeItem<ProjectResource> = {
+            data: mockProjectResource(),
             id: "3",
             open: true,
             active: true,
             status: 1
         };
-        const wrapper = mount(<ProjectTree projects={[project]} toggleOpen={jest.fn()} toggleActive={jest.fn()} />);
+        const wrapper = mount(<ProjectTree
+            projects={[project]}
+            toggleOpen={jest.fn()}
+            toggleActive={jest.fn()}
+            onContextMenu={jest.fn()} />);
 
         expect(wrapper.find(ListItemIcon)).toHaveLength(1);
     });
 
     it("should render 2 ListItemIcons", () => {
-        const project: Array<TreeItem<Project>> = [
+        const project: Array<TreeItem<ProjectResource>> = [
             {
-                data: {
-                    name: "sample name",
-                    createdAt: "2018-06-12",
-                    modifiedAt: "2018-06-13",
-                    uuid: "uuid",
-                    ownerUuid: "ownerUuid",
-                    href: "href",
-                    kind: ResourceKind.PROJECT
-                },
+                data: mockProjectResource(),
                 id: "3",
                 open: false,
                 active: true,
                 status: 1
             },
             {
-                data: {
-                    name: "sample name",
-                    createdAt: "2018-06-12",
-                    modifiedAt: "2018-06-13",
-                    uuid: "uuid",
-                    ownerUuid: "ownerUuid",
-                    href: "href",
-                    kind: ResourceKind.PROJECT
-                },
+                data: mockProjectResource(),
                 id: "3",
                 open: false,
                 active: true,
                 status: 1
             }
         ];
-        const wrapper = mount(<ProjectTree projects={project} toggleOpen={jest.fn()} toggleActive={jest.fn()} />);
+        const wrapper = mount(<ProjectTree
+            projects={project}
+            toggleOpen={jest.fn()}
+            toggleActive={jest.fn()}
+            onContextMenu={jest.fn()} />);
 
         expect(wrapper.find(ListItemIcon)).toHaveLength(2);
     });
 
     it("should render Collapse", () => {
-        const project: Array<TreeItem<Project>> = [
+        const project: Array<TreeItem<ProjectResource>> = [
             {
-                data: {
-                    name: "sample name",
-                    createdAt: "2018-06-12",
-                    modifiedAt: "2018-06-13",
-                    uuid: "uuid",
-                    ownerUuid: "ownerUuid",
-                    href: "href",
-                    kind: ResourceKind.PROJECT
-                },
+                data: mockProjectResource(),
                 id: "3",
                 open: true,
                 active: true,
                 status: 2,
                 items: [
                     {
-                        data: {
-                            name: "sample name",
-                            createdAt: "2018-06-12",
-                            modifiedAt: "2018-06-13",
-                            uuid: "uuid",
-                            ownerUuid: "ownerUuid",
-                            href: "href",
-                            kind: ResourceKind.PROJECT
-                        },
+                        data: mockProjectResource(),
                         id: "3",
                         open: true,
                         active: true,
@@ -113,28 +81,28 @@ describe("ProjectTree component", () => {
                 ]
             }
         ];
-        const wrapper = mount(<ProjectTree projects={project} toggleOpen={jest.fn()} toggleActive={jest.fn()}/>);
+        const wrapper = mount(<ProjectTree 
+            projects={project} 
+            toggleOpen={jest.fn()} 
+            toggleActive={jest.fn()}
+            onContextMenu={jest.fn()} />);
 
         expect(wrapper.find(Collapse)).toHaveLength(1);
     });
 
     it("should render CircularProgress", () => {
-        const project: TreeItem<Project> = {
-            data: {
-                name: "sample name",
-                createdAt: "2018-06-12",
-                modifiedAt: "2018-06-13",
-                uuid: "uuid",
-                ownerUuid: "ownerUuid",
-                href: "href",
-                kind: ResourceKind.PROJECT
-            },
+        const project: TreeItem<ProjectResource> = {
+            data: mockProjectResource(),
             id: "3",
             open: false,
             active: true,
             status: 1
         };
-        const wrapper = mount(<ProjectTree projects={[project]} toggleOpen={jest.fn()} toggleActive={jest.fn()} />);
+        const wrapper = mount(<ProjectTree 
+            projects={[project]} 
+            toggleOpen={jest.fn()} 
+            toggleActive={jest.fn()}
+            onContextMenu={jest.fn()} />);
 
         expect(wrapper.find(CircularProgress)).toHaveLength(1);
     });
diff --git a/src/views/project-panel/project-panel-item.ts b/src/views/project-panel/project-panel-item.ts
index 4135fce..1d665a6 100644
--- a/src/views/project-panel/project-panel-item.ts
+++ b/src/views/project-panel/project-panel-item.ts
@@ -2,8 +2,8 @@
 //
 // SPDX-License-Identifier: AGPL-3.0
 
-import { ResourceKind } from "../../models/kinds";
 import { GroupContentsResource } from "../../services/groups-service/groups-service";
+import { ResourceKind } from "../../models/resource";
 
 export interface ProjectPanelItem {
     uuid: string;
diff --git a/src/views/project-panel/project-panel.tsx b/src/views/project-panel/project-panel.tsx
index 01e39ed..b902cd2 100644
--- a/src/views/project-panel/project-panel.tsx
+++ b/src/views/project-panel/project-panel.tsx
@@ -11,10 +11,10 @@ import { DispatchProp, connect } from 'react-redux';
 import { DataColumns } from '../../components/data-table/data-table';
 import { RouteComponentProps } from 'react-router';
 import { RootState } from '../../store/store';
-import { ResourceKind } from '../../models/kinds';
 import { DataTableFilterItem } from '../../components/data-table-filters/data-table-filters';
 import { ContainerRequestState } from '../../models/container-request';
 import { SortDirection } from '../../components/data-table/data-column';
+import { ResourceKind } from '../../models/resource';
 
 export const PROJECT_PANEL_ID = "projectPanel";
 
diff --git a/src/views/workbench/workbench.tsx b/src/views/workbench/workbench.tsx
index 75cc336..6972b2f 100644
--- a/src/views/workbench/workbench.tsx
+++ b/src/views/workbench/workbench.tsx
@@ -32,9 +32,9 @@ import CreateProjectDialog from "../../views-components/create-project-dialog/cr
 import { authService } from '../../services/services';
 
 import detailsPanelActions, { loadDetails } from "../../store/details-panel/details-panel-action";
-import { ResourceKind } from '../../models/kinds';
 import { SidePanelIdentifiers } from '../../store/side-panel/side-panel-reducer';
 import { ProjectResource } from '../../models/project';
+import { ResourceKind } from '../../models/resource';
 
 const drawerWidth = 240;
 const appBarHeight = 100;

-----------------------------------------------------------------------


hooks/post-receive
-- 




More information about the arvados-commits mailing list