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 } 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',
21 const state = projectsReducer(initialState, actions.CREATE_PROJECT(project));
22 expect(state).toEqual([project]);
25 it('should load projects', () => {
26 const initialState = undefined;
30 createdAt: '2018-01-01',
31 modifiedAt: '2018-01-01',
32 ownerUuid: 'owner-test123',
36 const projects = [project, project];
37 const state = projectsReducer(initialState, actions.PROJECTS_SUCCESS({ projects, parentItemId: undefined }));
38 expect(state).toEqual([{
55 describe("findTreeBranch", () => {
57 const createTreeItem = (id: string, items?: Array<TreeItem<string>>): TreeItem<string> => ({
65 it("should return an array that matches path to the given item", () => {
66 const tree: Array<TreeItem<string>> = [
68 createTreeItem("1.1", [
69 createTreeItem("1.1.1"),
70 createTreeItem("1.1.2")
74 createTreeItem("2.1", [
75 createTreeItem("2.1.1"),
76 createTreeItem("2.1.2")
80 const branch = findTreeBranch(tree, "2.1.1");
81 expect(branch.map(item => item.id)).toEqual(["2", "2.1", "2.1.1"]);
84 it("should return empty array if item is not found", () => {
85 const tree: Array<TreeItem<string>> = [
87 createTreeItem("1.1", [
88 createTreeItem("1.1.1"),
89 createTreeItem("1.1.2")
93 createTreeItem("2.1", [
94 createTreeItem("2.1.1"),
95 createTreeItem("2.1.2")
99 expect(findTreeBranch(tree, "3")).toHaveLength(0);