1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
5 import projectsReducer, { findTreeBranch } from "./project-reducer";
6 import actions from "./project-action";
7 import { TreeItem, TreeItemStatus } from "../../components/tree/tree";
9 describe('project-reducer', () => {
10 it('should add new project to the list', () => {
11 const initialState = undefined;
15 createdAt: '2018-01-01',
16 modifiedAt: '2018-01-01',
17 ownerUuid: 'owner-test123',
22 const state = projectsReducer(initialState, actions.CREATE_PROJECT(project));
23 expect(state).toEqual([project]);
26 it('should load projects', () => {
27 const initialState = undefined;
31 createdAt: '2018-01-01',
32 modifiedAt: '2018-01-01',
33 ownerUuid: 'owner-test123',
38 const projects = [project, project];
39 const state = projectsReducer(initialState, actions.PROJECTS_SUCCESS({ projects, parentItemId: undefined }));
40 expect(state).toEqual([{
59 describe("findTreeBranch", () => {
61 const createTreeItem = (id: string, items?: Array<TreeItem<string>>): TreeItem<string> => ({
67 status: TreeItemStatus.Initial
70 it("should return an array that matches path to the given item", () => {
71 const tree: Array<TreeItem<string>> = [
73 createTreeItem("1.1", [
74 createTreeItem("1.1.1"),
75 createTreeItem("1.1.2")
79 createTreeItem("2.1", [
80 createTreeItem("2.1.1"),
81 createTreeItem("2.1.2")
85 const branch = findTreeBranch(tree, "2.1.1");
86 expect(branch.map(item => item.id)).toEqual(["2", "2.1", "2.1.1"]);
89 it("should return empty array if item is not found", () => {
90 const tree: Array<TreeItem<string>> = [
92 createTreeItem("1.1", [
93 createTreeItem("1.1.1"),
94 createTreeItem("1.1.2")
98 createTreeItem("2.1", [
99 createTreeItem("2.1.1"),
100 createTreeItem("2.1.2")
104 expect(findTreeBranch(tree, "3")).toHaveLength(0);