X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/28bb06ae7b9983da793f2459c5cc3e8debd71949..232eac919b067a3783348eab549c9fc555b80abd:/src/components/tree/tree.test.tsx diff --git a/src/components/tree/tree.test.tsx b/src/components/tree/tree.test.tsx index ffdc74f9..45981d89 100644 --- a/src/components/tree/tree.test.tsx +++ b/src/components/tree/tree.test.tsx @@ -1,7 +1,99 @@ // Copyright (C) The Arvados Authors. All rights reserved. // // SPDX-License-Identifier: AGPL-3.0 +import * as React from 'react'; +import { mount } from 'enzyme'; +import * as Enzyme from 'enzyme'; +import * as Adapter from 'enzyme-adapter-react-16'; +import ListItem from "@material-ui/core/ListItem/ListItem"; -it("should render the tree", () => { - expect(true).toBe(true); -}); \ No newline at end of file +import { Tree, TreeItem } from './tree'; +import { ProjectResource } from '../../models/project'; +import { mockProjectResource } from '../../models/test-utils'; +import { Checkbox } from '@material-ui/core'; + +Enzyme.configure({ adapter: new Adapter() }); + +describe("Tree component", () => { + + it("should render ListItem", () => { + const project: TreeItem = { + data: mockProjectResource(), + id: "3", + open: true, + active: true, + status: 1, + }; + const wrapper = mount(
} + toggleItemOpen={jest.fn()} + toggleItemActive={jest.fn()} + onContextMenu={jest.fn()} + items={[project]} />); + expect(wrapper.find(ListItem)).toHaveLength(1); + }); + + it("should render arrow", () => { + const project: TreeItem = { + data: mockProjectResource(), + id: "3", + open: true, + active: true, + status: 1, + }; + const wrapper = mount(
} + toggleItemOpen={jest.fn()} + toggleItemActive={jest.fn()} + onContextMenu={jest.fn()} + items={[project]} />); + expect(wrapper.find('i')).toHaveLength(1); + }); + + it("should render checkbox", () => { + const project: TreeItem = { + data: mockProjectResource(), + id: "3", + open: true, + active: true, + status: 1, + }; + const wrapper = mount(
} + toggleItemOpen={jest.fn()} + toggleItemActive={jest.fn()} + onContextMenu={jest.fn()} + items={[project]} />); + expect(wrapper.find(Checkbox)).toHaveLength(1); + }); + + it("call onSelectionChanged with associated item", () => { + const project: TreeItem = { + data: mockProjectResource(), + id: "3", + open: true, + active: true, + status: 1, + }; + const spy = jest.fn(); + const onSelectionChanged = (event: any, item: TreeItem) => spy(item); + const wrapper = mount(
} + toggleItemOpen={jest.fn()} + toggleItemActive={jest.fn()} + onContextMenu={jest.fn()} + onSelectionChange={onSelectionChanged} + items={[project]} />); + wrapper.find(Checkbox).prop('onClick')(); + expect(spy).toHaveBeenLastCalledWith({ + data: mockProjectResource(), + id: "3", + open: true, + active: true, + status: 1, + }); + }); + +});