15047: Fixes build by nesting pipe() calls instead of passing more tha 7 args.
[arvados-workbench2.git] / src / store / resource-type-filters / resource-type-filters.test.ts
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 import { getInitialResourceTypeFilters, serializeResourceTypeFilters, ObjectTypeFilter, CollectionTypeFilter, ProcessTypeFilter } from './resource-type-filters';
6 import { ResourceKind } from '~/models/resource';
7 import { deselectNode } from '~/models/tree';
8 import { pipe } from 'lodash/fp';
9
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}"]]`);
16     });
17
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}"]]`);
23     });
24
25     it("should serialize output collections and projects", () => {
26         const filters = pipe(
27             () => getInitialResourceTypeFilters(),
28             deselectNode(ObjectTypeFilter.PROCESS),
29             deselectNode(CollectionTypeFilter.GENERAL_COLLECTION),
30             deselectNode(CollectionTypeFilter.LOG_COLLECTION),
31         )();
32
33         const serializedFilters = serializeResourceTypeFilters(filters);
34         expect(serializedFilters)
35             .toEqual(`["uuid","is_a",["${ResourceKind.PROJECT}","${ResourceKind.COLLECTION}"]],["collections.properties.type","in",["output"]]`);
36     });
37
38     it("should serialize general and log collections", () => {
39         const filters = pipe(
40             () => getInitialResourceTypeFilters(),
41             deselectNode(ObjectTypeFilter.PROJECT),
42             deselectNode(ObjectTypeFilter.PROCESS),
43             deselectNode(CollectionTypeFilter.OUTPUT_COLLECTION)
44         )();
45
46         const serializedFilters = serializeResourceTypeFilters(filters);
47         expect(serializedFilters)
48             .toEqual(`["uuid","is_a",["${ResourceKind.COLLECTION}"]],["collections.properties.type","not in",["output"]]`);
49     });
50
51     it("should serialize only main processes", () => {
52         const filters = pipe(
53             () => getInitialResourceTypeFilters(),
54             deselectNode(ObjectTypeFilter.PROJECT),
55             deselectNode(ProcessTypeFilter.CHILD_PROCESS),
56             deselectNode(ObjectTypeFilter.COLLECTION)
57         )();
58
59         const serializedFilters = serializeResourceTypeFilters(filters);
60         expect(serializedFilters)
61             .toEqual(`["uuid","is_a",["${ResourceKind.PROCESS}"]],["container_requests.requesting_container_uuid","=",null]`);
62     });
63
64     it("should serialize only child processes", () => {
65         const filters = pipe(
66             () => getInitialResourceTypeFilters(),
67             deselectNode(ObjectTypeFilter.PROJECT),
68             deselectNode(ProcessTypeFilter.MAIN_PROCESS),
69             deselectNode(ObjectTypeFilter.COLLECTION)
70         )();
71
72         const serializedFilters = serializeResourceTypeFilters(filters);
73         expect(serializedFilters)
74             .toEqual(`["uuid","is_a",["${ResourceKind.PROCESS}"]],["container_requests.requesting_container_uuid","!=",null]`);
75     });
76 });