From 7edb44ad6abd4bb555bfad311b0d5f30319ada8f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Daniel=20Kuty=C5=82a?= Date: Fri, 17 Jul 2020 23:53:34 +0200 Subject: [PATCH] 16594: Added unit tests MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Arvados-DCO-1.1-Signed-off-by: Daniel Kutyła --- .../run-process-panel-actions.test.ts | 141 ++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100644 src/store/run-process-panel/run-process-panel-actions.test.ts diff --git a/src/store/run-process-panel/run-process-panel-actions.test.ts b/src/store/run-process-panel/run-process-panel-actions.test.ts new file mode 100644 index 00000000..e863368d --- /dev/null +++ b/src/store/run-process-panel/run-process-panel-actions.test.ts @@ -0,0 +1,141 @@ +// Copyright (C) The Arvados Authors. All rights reserved. +// +// SPDX-License-Identifier: AGPL-3.0 + +import { runProcess } from "./run-process-panel-actions"; + +jest.mock("../navigation/navigation-action", () => ({ + navigateTo: (link: any) => link, +})); + +jest.mock("~/models/process", () => ({ + createWorkflowMounts: jest.fn(), +})); + +jest.mock("redux-form", () => ({ + reduxForm: () => (c: any) => c, + getFormValues: (name: string) => () => { + switch (name) { + case "runProcessBasicForm": + return { + name: "basicFormTestName", + description: "basicFormTestDescription", + }; + case "runProcessInputsForm": + return {}; + default: + return null; + } + }, +})); + +describe("run-process-panel-actions", () => { + describe("runProcess", () => { + const newProcessUUID = 'newProcessUUID'; + let dispatch: any, getState: any, services: any; + + beforeEach(() => { + dispatch = jest.fn(); + services = { + containerRequestService: { + create: jest.fn().mockImplementation(async () => ({ + uuid: newProcessUUID, + })), + }, + }; + }); + + it("should return when userUuid is null", async () => { + // given + getState = () => ({ + auth: {}, + }); + + // when + await runProcess(dispatch, getState, services); + + // then + expect(dispatch).not.toHaveBeenCalled(); + }); + + it("should run workflow with project-uuid", async () => { + // given + getState = () => ({ + auth: { + user: { + email: "test@gmail.com", + firstName: "TestFirstName", + lastName: "TestLastName", + uuid: "ce8i5-tpzed-yid70bw31f51234", + ownerUuid: "ce8i5-tpzed-000000000000000", + isAdmin: false, + isActive: true, + username: "testfirstname", + prefs: { + profile: {}, + }, + }, + }, + runProcessPanel: { + processPathname: "/projects/ce8i5-tpzed-yid70bw31f51234", + processOwnerUuid: "ce8i5-tpzed-yid70bw31f51234", + selectedWorkflow: { + href: "/workflows/ce8i5-7fd4e-2tlnerdkxnl4fjt", + kind: "arvados#workflow", + etag: "8gh5xlhlgo61yqscyl1spw8tc", + uuid: "ce8i5-7fd4e-2tlnerdkxnl4fjt", + ownerUuid: "ce8i5-tpzed-o4njwilpp4ov321", + createdAt: "2020-07-15T19:40:50.296041000Z", + modifiedByClientUuid: "ce8i5-ozdt8-libnr89sc5nq111", + modifiedByUserUuid: "ce8i5-tpzed-o4njwilpp4ov321", + modifiedAt: "2020-07-15T19:40:50.296376000Z", + name: "revsort.cwl", + description: + "Reverse the lines in a document, then sort those lines.", + definition: + '{\n "$graph": [\n {\n "class": "Workflow",\n "doc": "Reverse the lines in a document, then sort those lines.",\n "id": "#main",\n "inputs": [\n {\n "default": null,\n "doc": "The input file to be processed.",\n "id": "#main/input",\n "type": "File"\n },\n {\n "default": true,\n "doc": "If true, reverse (decending) sort",\n "id": "#main/reverse_sort",\n "type": "boolean"\n }\n ],\n "outputs": [\n {\n "doc": "The output with the lines reversed and sorted.",\n "id": "#main/output",\n "outputSource": "#main/sorted/output",\n "type": "File"\n }\n ],\n "steps": [\n {\n "id": "#main/rev",\n "in": [\n {\n "id": "#main/rev/input",\n "source": "#main/input"\n }\n ],\n "out": [\n "#main/rev/output"\n ],\n "run": "#revtool.cwl"\n },\n {\n "id": "#main/sorted",\n "in": [\n {\n "id": "#main/sorted/input",\n "source": "#main/rev/output"\n },\n {\n "id": "#main/sorted/reverse",\n "source": "#main/reverse_sort"\n }\n ],\n "out": [\n "#main/sorted/output"\n ],\n "run": "#sorttool.cwl"\n }\n ]\n },\n {\n "baseCommand": "rev",\n "class": "CommandLineTool",\n "doc": "Reverse each line using the `rev` command",\n "hints": [\n {\n "class": "ResourceRequirement",\n "ramMin": 8\n }\n ],\n "id": "#revtool.cwl",\n "inputs": [\n {\n "id": "#revtool.cwl/input",\n "inputBinding": {},\n "type": "File"\n }\n ],\n "outputs": [\n {\n "id": "#revtool.cwl/output",\n "outputBinding": {\n "glob": "output.txt"\n },\n "type": "File"\n }\n ],\n "stdout": "output.txt"\n },\n {\n "baseCommand": "sort",\n "class": "CommandLineTool",\n "doc": "Sort lines using the `sort` command",\n "hints": [\n {\n "class": "ResourceRequirement",\n "ramMin": 8\n }\n ],\n "id": "#sorttool.cwl",\n "inputs": [\n {\n "id": "#sorttool.cwl/reverse",\n "inputBinding": {\n "position": 1,\n "prefix": "-r"\n },\n "type": "boolean"\n },\n {\n "id": "#sorttool.cwl/input",\n "inputBinding": {\n "position": 2\n },\n "type": "File"\n }\n ],\n "outputs": [\n {\n "id": "#sorttool.cwl/output",\n "outputBinding": {\n "glob": "output.txt"\n },\n "type": "File"\n }\n ],\n "stdout": "output.txt"\n }\n ],\n "cwlVersion": "v1.0"\n}', + }, + }, + }); + + // when + await runProcess(dispatch, getState, services); + + // then + expect(services.containerRequestService.create).toHaveBeenCalledWith({ + command: [ + "arvados-cwl-runner", + "--api=containers", + "--local", + "--project-uuid=ce8i5-tpzed-yid70bw31f51234", + "/var/lib/cwl/workflow.json#main", + "/var/lib/cwl/cwl.input.json", + ], + containerImage: "arvados/jobs", + cwd: "/var/spool/cwl", + description: "basicFormTestDescription", + mounts: undefined, + name: "basicFormTestName", + outputName: undefined, + outputPath: "/var/spool/cwl", + ownerUuid: "ce8i5-tpzed-yid70bw31f51234", + priority: 1, + properties: { + workflowName: "revsort.cwl", + workflowUuid: "ce8i5-7fd4e-2tlnerdkxnl4fjt", + }, + runtimeConstraints: { + API: true, + api: true, + ram: 1073741824, + vcpus: 1, + }, + schedulingParameters: { max_run_time: undefined }, + state: "Committed", + }); + + // and + expect(dispatch).toHaveBeenCalledWith(newProcessUUID); + }); + }); +}); -- 2.30.2