1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
5 import { getInitialResourceTypeFilters, serializeResourceTypeFilters, ObjectTypeFilter, CollectionTypeFilter, ProcessTypeFilter, GroupTypeFilter } from './resource-type-filters';
6 import { ResourceKind } from '~/models/resource';
7 import { deselectNode } from '~/models/tree';
8 import { pipe } from 'lodash/fp';
10 describe("serializeResourceTypeFilters", () => {
11 it("should serialize all filters", () => {
12 const filters = getInitialResourceTypeFilters();
13 const serializedFilters = serializeResourceTypeFilters(filters);
14 expect(serializedFilters)
15 .toEqual(`["uuid","is_a",["${ResourceKind.PROJECT}","${ResourceKind.PROCESS}","${ResourceKind.COLLECTION}"]]`);
18 it("should serialize all but collection filters", () => {
19 const filters = deselectNode(ObjectTypeFilter.COLLECTION)(getInitialResourceTypeFilters());
20 const serializedFilters = serializeResourceTypeFilters(filters);
21 expect(serializedFilters)
22 .toEqual(`["uuid","is_a",["${ResourceKind.PROJECT}","${ResourceKind.PROCESS}"]]`);
25 it("should serialize output collections and projects", () => {
27 () => getInitialResourceTypeFilters(),
28 deselectNode(ObjectTypeFilter.PROCESS),
29 deselectNode(CollectionTypeFilter.GENERAL_COLLECTION),
30 deselectNode(CollectionTypeFilter.LOG_COLLECTION),
33 const serializedFilters = serializeResourceTypeFilters(filters);
34 expect(serializedFilters)
35 .toEqual(`["uuid","is_a",["${ResourceKind.PROJECT}","${ResourceKind.COLLECTION}"]],["collections.properties.type","in",["output"]]`);
38 it("should serialize general and log collections", () => {
40 () => getInitialResourceTypeFilters(),
41 deselectNode(ObjectTypeFilter.PROJECT),
42 deselectNode(ObjectTypeFilter.PROCESS),
43 deselectNode(CollectionTypeFilter.OUTPUT_COLLECTION)
46 const serializedFilters = serializeResourceTypeFilters(filters);
47 expect(serializedFilters)
48 .toEqual(`["uuid","is_a",["${ResourceKind.COLLECTION}"]],["collections.properties.type","not in",["output"]]`);
51 it("should serialize only main processes", () => {
53 () => getInitialResourceTypeFilters(),
54 deselectNode(ObjectTypeFilter.PROJECT),
55 deselectNode(ProcessTypeFilter.CHILD_PROCESS),
56 deselectNode(ObjectTypeFilter.COLLECTION)
59 const serializedFilters = serializeResourceTypeFilters(filters);
60 expect(serializedFilters)
61 .toEqual(`["uuid","is_a",["${ResourceKind.PROCESS}"]],["container_requests.requesting_container_uuid","=",null]`);
64 it("should serialize only child processes", () => {
66 () => getInitialResourceTypeFilters(),
67 deselectNode(ObjectTypeFilter.PROJECT),
68 deselectNode(ProcessTypeFilter.MAIN_PROCESS),
69 deselectNode(ObjectTypeFilter.COLLECTION)
72 const serializedFilters = serializeResourceTypeFilters(filters);
73 expect(serializedFilters)
74 .toEqual(`["uuid","is_a",["${ResourceKind.PROCESS}"]],["container_requests.requesting_container_uuid","!=",null]`);
77 it("should serialize all project types", () => {
79 () => getInitialResourceTypeFilters(),
80 deselectNode(ObjectTypeFilter.PROCESS),
81 deselectNode(ObjectTypeFilter.COLLECTION),
84 const serializedFilters = serializeResourceTypeFilters(filters);
85 expect(serializedFilters)
86 .toEqual(`["uuid","is_a",["${ResourceKind.GROUP}"]]`);
89 it("should serialize filter groups", () => {
91 () => getInitialResourceTypeFilters(),
92 deselectNode(GroupTypeFilter.PROJECT)
93 deselectNode(ObjectTypeFilter.PROCESS),
94 deselectNode(ObjectTypeFilter.COLLECTION),
97 const serializedFilters = serializeResourceTypeFilters(filters);
98 expect(serializedFilters)
99 .toEqual(`["uuid","is_a",["${ResourceKind.GROUP}"]],["groups.group_class","=","filter"]`);
102 it("should serialize projects (normal)", () => {
103 const filters = pipe(
104 () => getInitialResourceTypeFilters(),
105 deselectNode(GroupTypeFilter.FILTER_GROUP)
106 deselectNode(ObjectTypeFilter.PROCESS),
107 deselectNode(ObjectTypeFilter.COLLECTION),
110 const serializedFilters = serializeResourceTypeFilters(filters);
111 expect(serializedFilters)
112 .toEqual(`["uuid","is_a",["${ResourceKind.GROUP}"]],["groups.group_class","=","project"]`);