From abe9787195984a919095b4a4c2b82c7a0baf0801 Mon Sep 17 00:00:00 2001 From: Lucas Di Pentima Date: Tue, 24 Dec 2019 15:31:07 -0300 Subject: [PATCH] 15047: Fixes build by nesting pipe() calls instead of passing more tha 7 args. Also: adds tests. It seems that lodash's pipe() (an alias of flow()) function changes its return type to 'any' when being passed more than 7 arguments, sometimes breaking the build (in this case, resource-type-filters.test.ts) Arvados-DCO-1.1-Signed-off-by: Lucas Di Pentima --- .../resource-type-filters.test.ts | 28 ++++++++++++++- .../resource-type-filters.ts | 36 +++++++++++-------- 2 files changed, 49 insertions(+), 15 deletions(-) diff --git a/src/store/resource-type-filters/resource-type-filters.test.ts b/src/store/resource-type-filters/resource-type-filters.test.ts index 02f017ed..2f4d3cad 100644 --- a/src/store/resource-type-filters/resource-type-filters.test.ts +++ b/src/store/resource-type-filters/resource-type-filters.test.ts @@ -2,7 +2,7 @@ // // SPDX-License-Identifier: AGPL-3.0 -import { getInitialResourceTypeFilters, serializeResourceTypeFilters, ObjectTypeFilter, CollectionTypeFilter } from './resource-type-filters'; +import { getInitialResourceTypeFilters, serializeResourceTypeFilters, ObjectTypeFilter, CollectionTypeFilter, ProcessTypeFilter } from './resource-type-filters'; import { ResourceKind } from '~/models/resource'; import { deselectNode } from '~/models/tree'; import { pipe } from 'lodash/fp'; @@ -47,4 +47,30 @@ describe("serializeResourceTypeFilters", () => { expect(serializedFilters) .toEqual(`["uuid","is_a",["${ResourceKind.COLLECTION}"]],["collections.properties.type","not in",["output"]]`); }); + + it("should serialize only main processes", () => { + const filters = pipe( + () => getInitialResourceTypeFilters(), + deselectNode(ObjectTypeFilter.PROJECT), + deselectNode(ProcessTypeFilter.CHILD_PROCESS), + deselectNode(ObjectTypeFilter.COLLECTION) + )(); + + const serializedFilters = serializeResourceTypeFilters(filters); + expect(serializedFilters) + .toEqual(`["uuid","is_a",["${ResourceKind.PROCESS}"]],["container_requests.requesting_container_uuid","=",null]`); + }); + + it("should serialize only child processes", () => { + const filters = pipe( + () => getInitialResourceTypeFilters(), + deselectNode(ObjectTypeFilter.PROJECT), + deselectNode(ProcessTypeFilter.MAIN_PROCESS), + deselectNode(ObjectTypeFilter.COLLECTION) + )(); + + const serializedFilters = serializeResourceTypeFilters(filters); + expect(serializedFilters) + .toEqual(`["uuid","is_a",["${ResourceKind.PROCESS}"]],["container_requests.requesting_container_uuid","!=",null]`); + }); }); diff --git a/src/store/resource-type-filters/resource-type-filters.ts b/src/store/resource-type-filters/resource-type-filters.ts index d1996a00..4ee9c5f3 100644 --- a/src/store/resource-type-filters/resource-type-filters.ts +++ b/src/store/resource-type-filters/resource-type-filters.ts @@ -57,27 +57,35 @@ export const getSimpleObjectTypeFilters = pipe( initFilter(ObjectTypeFilter.COLLECTION), ); +// Using pipe() with more tha 7 arguments makes the return type be 'any', +// causing compile issues. export const getInitialResourceTypeFilters = pipe( (): DataTableFilters => createTree(), initFilter(ObjectTypeFilter.PROJECT), - initFilter(ObjectTypeFilter.PROCESS), - initFilter(ProcessTypeFilter.MAIN_PROCESS, ObjectTypeFilter.PROCESS), - initFilter(ProcessTypeFilter.CHILD_PROCESS, ObjectTypeFilter.PROCESS), - initFilter(ObjectTypeFilter.COLLECTION), - initFilter(CollectionTypeFilter.GENERAL_COLLECTION, ObjectTypeFilter.COLLECTION), - initFilter(CollectionTypeFilter.OUTPUT_COLLECTION, ObjectTypeFilter.COLLECTION), - initFilter(CollectionTypeFilter.LOG_COLLECTION, ObjectTypeFilter.COLLECTION), + pipe( + initFilter(ObjectTypeFilter.PROCESS), + initFilter(ProcessTypeFilter.MAIN_PROCESS, ObjectTypeFilter.PROCESS), + initFilter(ProcessTypeFilter.CHILD_PROCESS, ObjectTypeFilter.PROCESS) + ), + pipe( + initFilter(ObjectTypeFilter.COLLECTION), + initFilter(CollectionTypeFilter.GENERAL_COLLECTION, ObjectTypeFilter.COLLECTION), + initFilter(CollectionTypeFilter.OUTPUT_COLLECTION, ObjectTypeFilter.COLLECTION), + initFilter(CollectionTypeFilter.LOG_COLLECTION, ObjectTypeFilter.COLLECTION), + ), ); export const getInitialProcessStatusFilters = pipe( (): DataTableFilters => createTree(), - initFilter(ProcessStatusFilter.ALL, '', true), - initFilter(ProcessStatusFilter.RUNNING, '', false), - initFilter(ProcessStatusFilter.FAILED, '', false), - initFilter(ProcessStatusFilter.COMPLETED, '', false), - initFilter(ProcessStatusFilter.CANCELLED, '', false), - initFilter(ProcessStatusFilter.QUEUED, '', false), - initFilter(ProcessStatusFilter.LOCKED, '', false), + pipe( + initFilter(ProcessStatusFilter.ALL, '', true), + initFilter(ProcessStatusFilter.RUNNING, '', false), + initFilter(ProcessStatusFilter.FAILED, '', false), + initFilter(ProcessStatusFilter.COMPLETED, '', false), + initFilter(ProcessStatusFilter.CANCELLED, '', false), + initFilter(ProcessStatusFilter.QUEUED, '', false), + initFilter(ProcessStatusFilter.LOCKED, '', false), + ), ); export const getTrashPanelTypeFilters = pipe( -- 2.30.2