From 5a3ad09e2be127546be136b4c93c032d9dd37a5b Mon Sep 17 00:00:00 2001 From: Nile Walker Date: Tue, 9 Mar 2021 10:44:20 -0500 Subject: [PATCH 01/11] Fixes #213 --- src/app/workflow-spec-list/workflow-spec-list.component.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/app/workflow-spec-list/workflow-spec-list.component.ts b/src/app/workflow-spec-list/workflow-spec-list.component.ts index 59bfd54..b1cc3dd 100644 --- a/src/app/workflow-spec-list/workflow-spec-list.component.ts +++ b/src/app/workflow-spec-list/workflow-spec-list.component.ts @@ -167,6 +167,7 @@ export class WorkflowSpecListComponent implements OnInit { dialogRef.afterClosed().subscribe((data: DeleteWorkflowSpecDialogData) => { if (data && data.confirm && data.workflowSpec) { this._deleteWorkflowSpec(data.workflowSpec); + this.selectSpec(this.masterStatusSpec); } }); } From 4d57c536584b14ac9242f443f19158934ea381b0 Mon Sep 17 00:00:00 2001 From: Nile Walker Date: Tue, 9 Mar 2021 11:04:06 -0500 Subject: [PATCH 02/11] ran npm audit fix --- package-lock.json | 115 +++++++++++++++++++++++++++++++++------------- 1 file changed, 83 insertions(+), 32 deletions(-) diff --git a/package-lock.json b/package-lock.json index 869742b..3ac12c4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -802,6 +802,12 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, "inquirer": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.1.0.tgz", @@ -2562,6 +2568,12 @@ "semver-intersect": "1.4.0" }, "dependencies": { + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, "rxjs": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", @@ -3534,6 +3546,16 @@ "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", "dev": true }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, "blob": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", @@ -4121,9 +4143,9 @@ "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==" }, "clipboard": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.6.tgz", - "integrity": "sha512-g5zbiixBRk/wyKakSwCKd7vQXDjFnAMGHoEyBogG/bw9kTD9GvdAvaoRR1ALcEzt3pVKxZR0pViekPMIS0QyGg==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.7.tgz", + "integrity": "sha512-8M8WEZcIvs0hgOma+wAPkrUxpv0PMY1L6VsAJh/2DOKARIMpyWe6ZLcEoe1qktl6/ced5ceYHs+oGedSbgZ3sg==", "optional": true, "requires": { "good-listener": "^1.2.2", @@ -5676,24 +5698,24 @@ "dev": true }, "elliptic": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", - "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", "dev": true, "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", + "bn.js": "^4.11.9", + "brorand": "^1.1.0", "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" }, "dependencies": { "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true } } @@ -6306,6 +6328,13 @@ "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.2.tgz", "integrity": "sha512-Wz3c3XQ5xroCxd1G8b7yL0Ehkf0TC9oYC6buPFkNnU9EnaPlifeAFCyCh+iewXTyFRcg0a6j3J7FmJsIhlhBdw==" }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, "fileset": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", @@ -7336,8 +7365,7 @@ }, "ini": { "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "resolved": "", "dev": true }, "inquirer": { @@ -8893,9 +8921,10 @@ } }, "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true }, "minipass": { "version": "3.1.3", @@ -9080,6 +9109,13 @@ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" }, + "nan": { + "version": "2.14.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", + "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", + "dev": true, + "optional": true + }, "nanomatch": { "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", @@ -9180,9 +9216,9 @@ } }, "node-forge": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz", - "integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==", + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", "dev": true }, "node-libs-browser": { @@ -9609,6 +9645,13 @@ "minimist": "1.2.0", "node-fetch": "1.6.3", "opn": "4.0.2" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + } } }, "opn": { @@ -10958,9 +11001,9 @@ "dev": true }, "prismjs": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.20.0.tgz", - "integrity": "sha512-AEDjSrVNkynnw6A+B1DsFkd6AVdTnp+/WoUixFRULlCLZVRZlVQMVWio/16jv7G1FscUxQxOQhWwApgbnxr6kQ==", + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.23.0.tgz", + "integrity": "sha512-c29LVsqOaLbBHuIbsTxaKENh1N2EQBOHaWv7gkHN4dgRbxSREqDnDbtFJYdpPauS4YCplMSNCABQ6Eeor69bAA==", "requires": { "clipboard": "^2.0.0" } @@ -12156,12 +12199,12 @@ } }, "selfsigned": { - "version": "1.10.7", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz", - "integrity": "sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==", + "version": "1.10.8", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.8.tgz", + "integrity": "sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w==", "dev": true, "requires": { - "node-forge": "0.9.0" + "node-forge": "^0.10.0" } }, "semver": { @@ -14375,7 +14418,11 @@ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", "dev": true, - "optional": true + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } }, "glob-parent": { "version": "3.1.0", @@ -15125,7 +15172,11 @@ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", "dev": true, - "optional": true + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } }, "glob-parent": { "version": "3.1.0", From 55895b6843260170f18b76588ab9b933429995bb Mon Sep 17 00:00:00 2001 From: Nile Walker Date: Tue, 9 Mar 2021 11:19:50 -0500 Subject: [PATCH 03/11] Passing ng test --- src/app/workflow-spec-list/workflow-spec-list.component.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/app/workflow-spec-list/workflow-spec-list.component.ts b/src/app/workflow-spec-list/workflow-spec-list.component.ts index b1cc3dd..c4aed37 100644 --- a/src/app/workflow-spec-list/workflow-spec-list.component.ts +++ b/src/app/workflow-spec-list/workflow-spec-list.component.ts @@ -167,7 +167,9 @@ export class WorkflowSpecListComponent implements OnInit { dialogRef.afterClosed().subscribe((data: DeleteWorkflowSpecDialogData) => { if (data && data.confirm && data.workflowSpec) { this._deleteWorkflowSpec(data.workflowSpec); - this.selectSpec(this.masterStatusSpec); + + this.selectedSpec = this.masterStatusSpec + } }); } @@ -209,7 +211,6 @@ export class WorkflowSpecListComponent implements OnInit { this.api.getWorkflowSpecList().subscribe(wfs => { this.workflowSpecs = wfs; - this.workflowSpecsByCategory.forEach(cat => { cat.workflow_specs = this.workflowSpecs .filter(wf => { From c562ea0b3f58d6139a2e9a8eba761087c397216c Mon Sep 17 00:00:00 2001 From: Dan Funk Date: Tue, 9 Mar 2021 16:35:58 -0500 Subject: [PATCH 04/11] Add files via upload --- src/assets/images/squirrels.png | Bin 0 -> 62157 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/assets/images/squirrels.png diff --git a/src/assets/images/squirrels.png b/src/assets/images/squirrels.png new file mode 100644 index 0000000000000000000000000000000000000000..16d46ba14ca806b721c81f6d656e6a63667f06ee GIT binary patch literal 62157 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 literal 0 HcmV?d00001 From 499f6e1ef714318995d40b4cd2bb906f8de4d8fb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 10 Mar 2021 03:48:55 +0000 Subject: [PATCH 05/11] Bump elliptic from 6.5.3 to 6.5.4 Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.3 to 6.5.4. - [Release notes](https://github.com/indutny/elliptic/releases) - [Commits](https://github.com/indutny/elliptic/compare/v6.5.3...v6.5.4) Signed-off-by: dependabot[bot] --- package-lock.json | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index 869742b..fd70794 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5676,24 +5676,24 @@ "dev": true }, "elliptic": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", - "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", "dev": true, "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", + "bn.js": "^4.11.9", + "brorand": "^1.1.0", "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" }, "dependencies": { "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true } } From 72beae860430ac400ff668a2ac254923ea6bae2d Mon Sep 17 00:00:00 2001 From: Nile Walker Date: Wed, 10 Mar 2021 09:17:13 -0500 Subject: [PATCH 06/11] linting --- src/app/workflow-spec-list/workflow-spec-list.component.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/app/workflow-spec-list/workflow-spec-list.component.ts b/src/app/workflow-spec-list/workflow-spec-list.component.ts index c4aed37..74e4cdd 100644 --- a/src/app/workflow-spec-list/workflow-spec-list.component.ts +++ b/src/app/workflow-spec-list/workflow-spec-list.component.ts @@ -167,9 +167,7 @@ export class WorkflowSpecListComponent implements OnInit { dialogRef.afterClosed().subscribe((data: DeleteWorkflowSpecDialogData) => { if (data && data.confirm && data.workflowSpec) { this._deleteWorkflowSpec(data.workflowSpec); - - this.selectedSpec = this.masterStatusSpec - + this.selectedSpec = this.masterStatusSpec; } }); } From 6f023a4ac3df3cd16caa0724828eea670d645331 Mon Sep 17 00:00:00 2001 From: Dan Date: Wed, 10 Mar 2021 15:28:26 -0500 Subject: [PATCH 07/11] I discovered that I had inadvertantly made it impossible to create a new workflow specification when refactoring the display of workflows. I ADDED A FRONT END TEST, because I am awesome, and all should look upon my work and despair! --- package-lock.json | 6 +-- package.json | 2 +- .../workflow-spec-list.component.html | 6 +-- .../workflow-spec-list.component.spec.ts | 40 +++++++++++++++---- .../workflow-spec-list.component.ts | 22 ++++++---- 5 files changed, 53 insertions(+), 23 deletions(-) diff --git a/package-lock.json b/package-lock.json index 869742b..b81fa18 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11989,9 +11989,9 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "sartography-workflow-lib": { - "version": "0.0.396", - "resolved": "https://registry.npmjs.org/sartography-workflow-lib/-/sartography-workflow-lib-0.0.396.tgz", - "integrity": "sha512-gfdlq7sFpoX2nzigkQtgzY9kapHUeYar5FI80AqsOEkQU0Rh6gKO++hG3NN6zlqmYtQHFtJd+shSXOgbS6xEsQ==" + "version": "0.0.415", + "resolved": "https://registry.npmjs.org/sartography-workflow-lib/-/sartography-workflow-lib-0.0.415.tgz", + "integrity": "sha512-dc/JObsAq0TqGra/NuHG23EpmXrfnQqxbhGWXXkTfySDcA9beRNxJ5nd7xlc8EZzbUiWXIKxVM3xiyBCBQ+88A==" }, "sass": { "version": "1.26.3", diff --git a/package.json b/package.json index c382b5b..08e3356 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "ngx-highlightjs": "^4.1.1", "ngx-markdown": "^9.1.1", "rxjs": "~6.5.4", - "sartography-workflow-lib": "0.0.396", + "sartography-workflow-lib": "0.0.415", "tslib": "^1.13.0", "uuid": "^7.0.2", "zone.js": "^0.10.3" diff --git a/src/app/workflow-spec-list/workflow-spec-list.component.html b/src/app/workflow-spec-list/workflow-spec-list.component.html index 34b38c7..4915eff 100644 --- a/src/app/workflow-spec-list/workflow-spec-list.component.html +++ b/src/app/workflow-spec-list/workflow-spec-list.component.html @@ -1,11 +1,11 @@

Workflow Specifications

- - @@ -33,7 +33,7 @@
- + {{cat.display_name}} diff --git a/src/app/workflow-spec-list/workflow-spec-list.component.spec.ts b/src/app/workflow-spec-list/workflow-spec-list.component.spec.ts index f6794bc..a843185 100644 --- a/src/app/workflow-spec-list/workflow-spec-list.component.spec.ts +++ b/src/app/workflow-spec-list/workflow-spec-list.component.spec.ts @@ -1,9 +1,9 @@ import {APP_BASE_HREF} from '@angular/common'; import {HttpClientTestingModule, HttpTestingController} from '@angular/common/http/testing'; -import {async, ComponentFixture, TestBed} from '@angular/core/testing'; +import {async, ComponentFixture, fakeAsync, TestBed} from '@angular/core/testing'; import {MAT_BOTTOM_SHEET_DATA, MatBottomSheetModule, MatBottomSheetRef} from '@angular/material/bottom-sheet'; import {MatCardModule} from '@angular/material/card'; -import {MAT_DIALOG_DATA, MatDialogModule, MatDialogRef} from '@angular/material/dialog'; +import {MAT_DIALOG_DATA, MatDialog, MatDialogModule, MatDialogRef} from '@angular/material/dialog'; import {MatIconModule} from '@angular/material/icon'; import {MatListModule} from '@angular/material/list'; import {MatSnackBarModule} from '@angular/material/snack-bar'; @@ -11,7 +11,7 @@ import {BrowserDynamicTestingModule} from '@angular/platform-browser-dynamic/tes import {BrowserAnimationsModule} from '@angular/platform-browser/animations'; import {RouterTestingModule} from '@angular/router/testing'; import createClone from 'rfdc'; -import {of} from 'rxjs'; +import {Observable, of} from 'rxjs'; import { ApiErrorsComponent, ApiService, @@ -37,11 +37,26 @@ import { import {GetIconCodePipe} from '../_pipes/get-icon-code.pipe'; import {FileListComponent} from '../file-list/file-list.component'; import {WorkflowSpecListComponent} from './workflow-spec-list.component'; +import {WorkflowSpecDialogComponent} from '../_dialogs/workflow-spec-dialog/workflow-spec-dialog.component'; + +export class MdDialogMock { + // When the component calls this.dialog.open(...) we'll return an object + // with an afterClosed method that allows to subscribe to the dialog result observable. + open() { + return { + afterClosed: () => of([ + {} + ]) + }; + } +} + describe('WorkflowSpecListComponent', () => { let httpMock: HttpTestingController; let component: WorkflowSpecListComponent; let fixture: ComponentFixture; + let dialog: MatDialog; beforeEach(async(() => { TestBed.configureTestingModule({ @@ -68,11 +83,7 @@ describe('WorkflowSpecListComponent', () => { {provide: 'APP_ENVIRONMENT', useClass: MockEnvironment}, {provide: APP_BASE_HREF, useValue: ''}, { - provide: MatDialogRef, - useValue: { - close: (dialogResult: any) => { - }, - } + provide: MatDialogRef, useClass: MdDialogMock, }, {provide: MAT_DIALOG_DATA, useValue: []}, { @@ -100,6 +111,7 @@ describe('WorkflowSpecListComponent', () => { fixture = TestBed.createComponent(WorkflowSpecListComponent); component = fixture.componentInstance; fixture.detectChanges(); + dialog = TestBed.inject(MatDialog); const catReq = httpMock.expectOne('apiRoot/workflow-specification-category'); expect(catReq.request.method).toEqual('GET'); @@ -454,6 +466,8 @@ describe('WorkflowSpecListComponent', () => { expect(_loadWorkflowSpecCategoriesSpy).toHaveBeenCalled(); }); + + it('should load master workflow spec', () => { const mockMasterSpec: WorkflowSpec = { id: 'master_status_spec', @@ -480,4 +494,14 @@ describe('WorkflowSpecListComponent', () => { expect(component.masterStatusSpec).toEqual(mockMasterSpec); }); + + it('should call editWorkflowSpec, open Dialog & call _upsertWorkflowSpecification when Edit button is clicked', fakeAsync(() => { + spyOn(dialog, 'open').and.callThrough(); + const _upsertWorkflowSpecification = spyOn((component as any), '_upsertWorkflowSpecification').and.stub(); + const button = fixture.debugElement.nativeElement.querySelector('#add_spec'); + button.click(); + const req = httpMock.expectOne(`apiRoot/workflow-specification-category`); + expect(dialog.open).toHaveBeenCalled(); + } + )); }); diff --git a/src/app/workflow-spec-list/workflow-spec-list.component.ts b/src/app/workflow-spec-list/workflow-spec-list.component.ts index 328397a..61b2714 100644 --- a/src/app/workflow-spec-list/workflow-spec-list.component.ts +++ b/src/app/workflow-spec-list/workflow-spec-list.component.ts @@ -93,16 +93,20 @@ export class WorkflowSpecListComponent implements OnInit { this.location.replaceState(environment.homeRoute + '/' + selectedSpec.name); } + categoryExpanded(cat: WorkflowSpecCategory) { + return this.selectedSpec != null && this.selectedSpec.category_id === cat.id; + } + editWorkflowSpec(selectedSpec?: WorkflowSpec) { - this.selectedSpec = selectedSpec; - const hasDisplayOrder = this.selectedSpec && isNumberDefined(this.selectedSpec.display_order); + + const hasDisplayOrder = selectedSpec && isNumberDefined(selectedSpec.display_order); const dialogData: WorkflowSpecDialogData = { - id: this.selectedSpec ? this.selectedSpec.id : '', - name: this.selectedSpec ? this.selectedSpec.name || this.selectedSpec.id : '', - display_name: this.selectedSpec ? this.selectedSpec.display_name : '', - description: this.selectedSpec ? this.selectedSpec.description : '', - category_id: this.selectedSpec ? this.selectedSpec.category_id : null, - display_order: hasDisplayOrder ? this.selectedSpec.display_order : 0, + id: selectedSpec ? selectedSpec.id : '', + name: selectedSpec ? selectedSpec.name || selectedSpec.id : '', + display_name: selectedSpec ? selectedSpec.display_name : '', + description: selectedSpec ? selectedSpec.description : '', + category_id: selectedSpec ? selectedSpec.category_id : null, + display_order: hasDisplayOrder ? selectedSpec.display_order : 0, }; // Open new filename/workflow spec dialog @@ -383,5 +387,7 @@ export class WorkflowSpecListComponent implements OnInit { }); }); } + + } From 2585201e8a966192fee2d655ad4067a7863e5686 Mon Sep 17 00:00:00 2001 From: Dan Date: Wed, 10 Mar 2021 16:27:22 -0500 Subject: [PATCH 08/11] Didn't completely work, as it was basing whether something was new on the currently selected spec, better to just check if it is new. --- .../workflow-spec-list.component.ts | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/app/workflow-spec-list/workflow-spec-list.component.ts b/src/app/workflow-spec-list/workflow-spec-list.component.ts index 61b2714..75bc85e 100644 --- a/src/app/workflow-spec-list/workflow-spec-list.component.ts +++ b/src/app/workflow-spec-list/workflow-spec-list.component.ts @@ -118,7 +118,7 @@ export class WorkflowSpecListComponent implements OnInit { dialogRef.afterClosed().subscribe((data: WorkflowSpecDialogData) => { if (data && data.id && data.name && data.display_name && data.description) { - this._upsertWorkflowSpecification(data); + this._upsertWorkflowSpecification(selectedSpec == null, data); } }); } @@ -245,12 +245,9 @@ export class WorkflowSpecListComponent implements OnInit { }); } - private _upsertWorkflowSpecification(data: WorkflowSpecDialogData) { + private _upsertWorkflowSpecification(isNew: boolean, data: WorkflowSpecDialogData) { if (data.id && data.name && data.display_name && data.description) { - // Save old workflow spec id, in case it's changed - const specId = this.selectedSpec ? this.selectedSpec.id : undefined; - const newSpec: WorkflowSpec = { id: data.id, name: data.name, @@ -260,10 +257,10 @@ export class WorkflowSpecListComponent implements OnInit { display_order: data.display_order, }; - if (specId) { - this._updateWorkflowSpec(specId, newSpec); - } else { + if (isNew) { this._addWorkflowSpec(newSpec); + } else { + this._updateWorkflowSpec(data.id, newSpec); } } } From c5961cfd971333aef65a680eb7d43ed82006c320 Mon Sep 17 00:00:00 2001 From: Dan Date: Wed, 10 Mar 2021 17:07:16 -0500 Subject: [PATCH 09/11] fixing a stupid mistake --- .../workflow-spec-list/workflow-spec-list.component.spec.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/app/workflow-spec-list/workflow-spec-list.component.spec.ts b/src/app/workflow-spec-list/workflow-spec-list.component.spec.ts index a843185..51a4773 100644 --- a/src/app/workflow-spec-list/workflow-spec-list.component.spec.ts +++ b/src/app/workflow-spec-list/workflow-spec-list.component.spec.ts @@ -163,7 +163,7 @@ describe('WorkflowSpecListComponent', () => { const _updateWorkflowSpecSpy = spyOn((component as any), '_updateWorkflowSpec').and.stub(); component.selectedSpec = undefined; - (component as any)._upsertWorkflowSpecification(mockWorkflowSpec1 as WorkflowSpecDialogData); + (component as any)._upsertWorkflowSpecification(true, mockWorkflowSpec1 as WorkflowSpecDialogData); expect(_addWorkflowSpecSpy).toHaveBeenCalled(); expect(_updateWorkflowSpecSpy).not.toHaveBeenCalled(); @@ -173,7 +173,7 @@ describe('WorkflowSpecListComponent', () => { component.selectedSpec = mockWorkflowSpec0; const modifiedData: WorkflowSpecDialogData = createClone({circles: true})(mockWorkflowSpec0); modifiedData.display_name = 'Modified'; - (component as any)._upsertWorkflowSpecification(modifiedData); + (component as any)._upsertWorkflowSpecification(false, modifiedData); expect(_addWorkflowSpecSpy).not.toHaveBeenCalled(); expect(_updateWorkflowSpecSpy).toHaveBeenCalled(); }); From e3402f52dbe793f0ef52672bfc42362c5120a081 Mon Sep 17 00:00:00 2001 From: Dan Date: Mon, 15 Mar 2021 17:17:16 -0400 Subject: [PATCH 10/11] Use some cached libraries in quay.io rather than trying to pull from docker, which is a rat jerk son of a gun, and is throttling us. --- Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index f688c1d..d3ab8c6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ ### STAGE 1: Build ### -FROM node AS builder +FROM quay.io/sartography/node:latest AS builder RUN mkdir /app WORKDIR /app ADD package.json /app/ @@ -9,9 +9,9 @@ ARG build_config=prod RUN npm install && \ npm run build:$build_config - +` ### STAGE 2: Run ### -FROM nginx:alpine +FROM quay.io/sartography/nginx:alpine RUN set -x && apk add --update --no-cache bash libintl gettext curl COPY --from=builder /app/dist/* /etc/nginx/html/ From 8c6d2b299143aafce830145d912db6e431863899 Mon Sep 17 00:00:00 2001 From: Dan Date: Tue, 16 Mar 2021 10:44:24 -0400 Subject: [PATCH 11/11] Don't depend on dockerhub for anything, only depend on images we have ported over to Quay, or we risk a too-many-requests error during build on Quay.io. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index d3ab8c6..42f0b11 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,7 +9,7 @@ ARG build_config=prod RUN npm install && \ npm run build:$build_config -` + ### STAGE 2: Run ### FROM quay.io/sartography/nginx:alpine RUN set -x && apk add --update --no-cache bash libintl gettext curl