From bfb247947f50956a3544b4a83a5c470f92fbf797 Mon Sep 17 00:00:00 2001 From: Santhoshi Boyina Date: Fri, 15 Dec 2023 19:16:00 +0530 Subject: [PATCH 1/6] feat: Add smfid to Jobs Tree View Signed-off-by: Santhoshi Boyina --- .../__mocks__/mockCreators/jobs.ts | 5 +++-- .../__unit__/job/ZoweJobNode.unit.test.ts | 19 +++++++++++++++---- packages/zowe-explorer/src/job/ZoweJobNode.ts | 5 ++++- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/packages/zowe-explorer/__mocks__/mockCreators/jobs.ts b/packages/zowe-explorer/__mocks__/mockCreators/jobs.ts index 0a0fa6b7f2..665ea31120 100644 --- a/packages/zowe-explorer/__mocks__/mockCreators/jobs.ts +++ b/packages/zowe-explorer/__mocks__/mockCreators/jobs.ts @@ -16,7 +16,7 @@ import { IJob, IJobFile, imperative } from "@zowe/cli"; import { removeNodeFromArray } from "./shared"; import { PersistenceSchemaEnum } from "@zowe/zowe-explorer-api"; -export function createIJobObject(): IJob { +export function createIJobObject() { return { jobid: "JOB1234", jobname: "TESTJOB", @@ -37,11 +37,12 @@ export function createIJobObject(): IJob { class: "A", owner: "USER", phase: 0, - retcode: "", + retcode: "ACTIVE", status: "ACTIVE", subsystem: "SYS", type: "JOB", url: "fake/url", + "exec-system": "sampleSystem", }; } diff --git a/packages/zowe-explorer/__tests__/__unit__/job/ZoweJobNode.unit.test.ts b/packages/zowe-explorer/__tests__/__unit__/job/ZoweJobNode.unit.test.ts index 3e2d253370..7626b4e1ab 100644 --- a/packages/zowe-explorer/__tests__/__unit__/job/ZoweJobNode.unit.test.ts +++ b/packages/zowe-explorer/__tests__/__unit__/job/ZoweJobNode.unit.test.ts @@ -302,7 +302,6 @@ describe("ZoweJobNode unit tests - Function getChildren", () => { await globalMocks.testJobsProvider.addSession("fake"); const jobs = await globalMocks.testJobsProvider.mSessionNodes[1].getChildren(); - expect(jobs.length).toBe(2); expect(jobs[0].job.jobid).toEqual(globalMocks.testIJob.jobid); expect(jobs[0].tooltip).toEqual("TESTJOB(JOB1234)"); @@ -318,13 +317,13 @@ describe("ZoweJobNode unit tests - Function getChildren", () => { globalMocks.testJobsProvider.mSessionNodes[1].dirty = true; globalMocks.testJobsProvider.mSessionNodes[1].filtered = true; const jobs = await globalMocks.testJobsProvider.mSessionNodes[1].getChildren(); - expect(jobs[0].label).toEqual("TESTJOB(JOB1234) - ACTIVE"); + expect(jobs[0].label).toEqual("TESTJOB(JOB1234) - sampleSystem - ACTIVE"); globalMocks.mockGetJob.mockReturnValueOnce({ ...globalMocks.testIJob, retcode: "CC 0000" }); globalMocks.testJobsProvider.mSessionNodes[1].dirty = true; const newJobs = await globalMocks.testJobsProvider.mSessionNodes[1].getChildren(); - expect(newJobs[0].label).toEqual("TESTJOB(JOB1234) - CC 0000"); + expect(newJobs[0].label).toEqual("TESTJOB(JOB1234) - sampleSystem - CC 0000"); }); it("Tests that getChildren retrieves only child jobs which match a provided searchId", async () => { @@ -339,7 +338,7 @@ describe("ZoweJobNode unit tests - Function getChildren", () => { expect(jobs.length).toBe(1); expect(jobs[0].job.jobid).toEqual(globalMocks.testIJob.jobid); - expect(jobs[0].tooltip).toEqual("TESTJOB(JOB1234)"); + expect(jobs[0].tooltip).toEqual("TESTJOB(JOB1234) - ACTIVE"); }); it("Tests that getChildren returns the spool files if called on a job", async () => { @@ -423,6 +422,18 @@ describe("ZoweJobNode unit tests - Function getChildren", () => { const jobs = await globalMocks.testJobsProvider.mSessionNodes[1].getChildren(); expect(jobs).toEqual(expectedJob); }); + + it("To check smfid field in Jobs Tree View", async () => { + const globalMocks = await createGlobalMocks(); + + await globalMocks.testJobsProvider.addSession("fake"); + globalMocks.testJobsProvider.mSessionNodes[1].searchId = "JOB1234"; + globalMocks.testJobsProvider.mSessionNodes[1].dirty = true; + globalMocks.testJobsProvider.mSessionNodes[1].filtered = true; + + const jobs = await globalMocks.testJobsProvider.mSessionNodes[1].getChildren(); + expect(jobs[0].label).toEqual("TESTJOB(JOB1234) - sampleSystem - ACTIVE"); + }); }); describe("ZoweJobNode unit tests - Function flipState", () => { diff --git a/packages/zowe-explorer/src/job/ZoweJobNode.ts b/packages/zowe-explorer/src/job/ZoweJobNode.ts index c88f8ec961..e3c31408d8 100644 --- a/packages/zowe-explorer/src/job/ZoweJobNode.ts +++ b/packages/zowe-explorer/src/job/ZoweJobNode.ts @@ -203,7 +203,9 @@ export class Job extends ZoweTreeNode implements IZoweJobTreeNode { jobs.forEach((job) => { let nodeTitle: string; if (job.retcode) { - nodeTitle = `${job.jobname}(${job.jobid}) - ${job.retcode}`; + nodeTitle = job["exec-system"] + ? `${job.jobname}(${job.jobid}) - ${job["exec-system"] as string} - ${job.retcode}` + : `${job.jobname}(${job.jobid}) - ${job.retcode}`; } else { nodeTitle = `${job.jobname}(${job.jobid}) - ${job.status}`; } @@ -374,6 +376,7 @@ export class Job extends ZoweTreeNode implements IZoweJobTreeNode { owner, prefix, status, + execData: "Y", }); } else { this.statusNotSupportedMsg(status); From bdd79b31ee03446a93b8cd7313abe2fa3aa5adf7 Mon Sep 17 00:00:00 2001 From: Santhoshi Boyina Date: Fri, 15 Dec 2023 20:03:07 +0530 Subject: [PATCH 2/6] Improved code coverage Signed-off-by: Santhoshi Boyina --- packages/zowe-explorer/CHANGELOG.md | 1 + .../__mocks__/mockCreators/jobs.ts | 2 +- .../__unit__/job/ZoweJobNode.unit.test.ts | 17 +++++++++++++++-- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/packages/zowe-explorer/CHANGELOG.md b/packages/zowe-explorer/CHANGELOG.md index 5ddb999031..bdade5a4d8 100644 --- a/packages/zowe-explorer/CHANGELOG.md +++ b/packages/zowe-explorer/CHANGELOG.md @@ -17,6 +17,7 @@ All notable changes to the "vscode-extension-for-zowe" extension will be documen - Added Display confirmation dialog when submitting local JCL. [#2061](https://github.com/zowe/vscode-extension-for-zowe/issues/2061) - Added support for adding a Zowe profile across all trees [#2603](https://github.com/zowe/vscode-extension-for-zowe/issues/2603) - Added "Filter Jobs" feature in Jobs tree view: accessible via filter icon or right-clicking on session node. [#2599](https://github.com/zowe/vscode-extension-for-zowe/issues/2599) +- Added z/OS System Name (SMFID) to Zowe Explorer Jobs View. [#2629] (https://github.com/zowe/vscode-extension-for-zowe/pull/2629) ### Bug fixes diff --git a/packages/zowe-explorer/__mocks__/mockCreators/jobs.ts b/packages/zowe-explorer/__mocks__/mockCreators/jobs.ts index 665ea31120..bfca758fc8 100644 --- a/packages/zowe-explorer/__mocks__/mockCreators/jobs.ts +++ b/packages/zowe-explorer/__mocks__/mockCreators/jobs.ts @@ -37,7 +37,7 @@ export function createIJobObject() { class: "A", owner: "USER", phase: 0, - retcode: "ACTIVE", + retcode: "", status: "ACTIVE", subsystem: "SYS", type: "JOB", diff --git a/packages/zowe-explorer/__tests__/__unit__/job/ZoweJobNode.unit.test.ts b/packages/zowe-explorer/__tests__/__unit__/job/ZoweJobNode.unit.test.ts index 7626b4e1ab..8e96455c24 100644 --- a/packages/zowe-explorer/__tests__/__unit__/job/ZoweJobNode.unit.test.ts +++ b/packages/zowe-explorer/__tests__/__unit__/job/ZoweJobNode.unit.test.ts @@ -317,7 +317,7 @@ describe("ZoweJobNode unit tests - Function getChildren", () => { globalMocks.testJobsProvider.mSessionNodes[1].dirty = true; globalMocks.testJobsProvider.mSessionNodes[1].filtered = true; const jobs = await globalMocks.testJobsProvider.mSessionNodes[1].getChildren(); - expect(jobs[0].label).toEqual("TESTJOB(JOB1234) - sampleSystem - ACTIVE"); + expect(jobs[0].label).toEqual("TESTJOB(JOB1234) - ACTIVE"); globalMocks.mockGetJob.mockReturnValueOnce({ ...globalMocks.testIJob, retcode: "CC 0000" }); globalMocks.testJobsProvider.mSessionNodes[1].dirty = true; @@ -338,7 +338,7 @@ describe("ZoweJobNode unit tests - Function getChildren", () => { expect(jobs.length).toBe(1); expect(jobs[0].job.jobid).toEqual(globalMocks.testIJob.jobid); - expect(jobs[0].tooltip).toEqual("TESTJOB(JOB1234) - ACTIVE"); + expect(jobs[0].tooltip).toEqual("TESTJOB(JOB1234)"); }); it("Tests that getChildren returns the spool files if called on a job", async () => { @@ -430,10 +430,23 @@ describe("ZoweJobNode unit tests - Function getChildren", () => { globalMocks.testJobsProvider.mSessionNodes[1].searchId = "JOB1234"; globalMocks.testJobsProvider.mSessionNodes[1].dirty = true; globalMocks.testJobsProvider.mSessionNodes[1].filtered = true; + globalMocks.testIJob.retcode = "ACTIVE"; const jobs = await globalMocks.testJobsProvider.mSessionNodes[1].getChildren(); expect(jobs[0].label).toEqual("TESTJOB(JOB1234) - sampleSystem - ACTIVE"); }); + + it("To check smfid field is not in Jobs Tree View", async () => { + const globalMocks = await createGlobalMocks(); + + await globalMocks.testJobsProvider.addSession("fake"); + globalMocks.testJobsProvider.mSessionNodes[1].searchId = "JOB1234"; + globalMocks.testJobsProvider.mSessionNodes[1].dirty = true; + globalMocks.testJobsProvider.mSessionNodes[1].filtered = true; + + const jobs = await globalMocks.testJobsProvider.mSessionNodes[1].getChildren(); + expect(jobs[0].label).toEqual("TESTJOB(JOB1234) - ACTIVE"); + }); }); describe("ZoweJobNode unit tests - Function flipState", () => { From 27667a878ca7b9b6594c7fc0a709c0bf2afaf074 Mon Sep 17 00:00:00 2001 From: Santhoshi Boyina Date: Fri, 15 Dec 2023 21:07:32 +0530 Subject: [PATCH 3/6] Switch to exec-member Signed-off-by: Santhoshi Boyina --- packages/zowe-explorer/__mocks__/mockCreators/jobs.ts | 2 +- .../__tests__/__unit__/job/ZoweJobNode.unit.test.ts | 4 ++-- packages/zowe-explorer/src/job/ZoweJobNode.ts | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/zowe-explorer/__mocks__/mockCreators/jobs.ts b/packages/zowe-explorer/__mocks__/mockCreators/jobs.ts index bfca758fc8..e826aa4263 100644 --- a/packages/zowe-explorer/__mocks__/mockCreators/jobs.ts +++ b/packages/zowe-explorer/__mocks__/mockCreators/jobs.ts @@ -42,7 +42,7 @@ export function createIJobObject() { subsystem: "SYS", type: "JOB", url: "fake/url", - "exec-system": "sampleSystem", + "exec-member": "sampleMember", }; } diff --git a/packages/zowe-explorer/__tests__/__unit__/job/ZoweJobNode.unit.test.ts b/packages/zowe-explorer/__tests__/__unit__/job/ZoweJobNode.unit.test.ts index 8e96455c24..a9ac447373 100644 --- a/packages/zowe-explorer/__tests__/__unit__/job/ZoweJobNode.unit.test.ts +++ b/packages/zowe-explorer/__tests__/__unit__/job/ZoweJobNode.unit.test.ts @@ -323,7 +323,7 @@ describe("ZoweJobNode unit tests - Function getChildren", () => { globalMocks.testJobsProvider.mSessionNodes[1].dirty = true; const newJobs = await globalMocks.testJobsProvider.mSessionNodes[1].getChildren(); - expect(newJobs[0].label).toEqual("TESTJOB(JOB1234) - sampleSystem - CC 0000"); + expect(newJobs[0].label).toEqual("TESTJOB(JOB1234) - sampleMember - CC 0000"); }); it("Tests that getChildren retrieves only child jobs which match a provided searchId", async () => { @@ -433,7 +433,7 @@ describe("ZoweJobNode unit tests - Function getChildren", () => { globalMocks.testIJob.retcode = "ACTIVE"; const jobs = await globalMocks.testJobsProvider.mSessionNodes[1].getChildren(); - expect(jobs[0].label).toEqual("TESTJOB(JOB1234) - sampleSystem - ACTIVE"); + expect(jobs[0].label).toEqual("TESTJOB(JOB1234) - sampleMember - ACTIVE"); }); it("To check smfid field is not in Jobs Tree View", async () => { diff --git a/packages/zowe-explorer/src/job/ZoweJobNode.ts b/packages/zowe-explorer/src/job/ZoweJobNode.ts index e3c31408d8..0039059a76 100644 --- a/packages/zowe-explorer/src/job/ZoweJobNode.ts +++ b/packages/zowe-explorer/src/job/ZoweJobNode.ts @@ -203,8 +203,8 @@ export class Job extends ZoweTreeNode implements IZoweJobTreeNode { jobs.forEach((job) => { let nodeTitle: string; if (job.retcode) { - nodeTitle = job["exec-system"] - ? `${job.jobname}(${job.jobid}) - ${job["exec-system"] as string} - ${job.retcode}` + nodeTitle = job["exec-member"] + ? `${job.jobname}(${job.jobid}) - ${job["exec-member"] as string} - ${job.retcode}` : `${job.jobname}(${job.jobid}) - ${job.retcode}`; } else { nodeTitle = `${job.jobname}(${job.jobid}) - ${job.status}`; From cd9d0d0417fac26943045d1412a8f29de15cbe73 Mon Sep 17 00:00:00 2001 From: Santhoshi Boyina Date: Fri, 15 Dec 2023 21:21:24 +0530 Subject: [PATCH 4/6] fix: update changelog Signed-off-by: Santhoshi Boyina --- packages/zowe-explorer/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/zowe-explorer/CHANGELOG.md b/packages/zowe-explorer/CHANGELOG.md index c787313514..72b5ff6cfd 100644 --- a/packages/zowe-explorer/CHANGELOG.md +++ b/packages/zowe-explorer/CHANGELOG.md @@ -19,7 +19,7 @@ All notable changes to the "vscode-extension-for-zowe" extension will be documen - Added Display confirmation dialog when submitting local JCL. [#2061](https://github.com/zowe/vscode-extension-for-zowe/issues/2061) - Added support for adding a Zowe profile across all trees [#2603](https://github.com/zowe/vscode-extension-for-zowe/issues/2603) - Added "Filter Jobs" feature in Jobs tree view: accessible via filter icon or right-clicking on session node. [#2599](https://github.com/zowe/vscode-extension-for-zowe/issues/2599) -- Added z/OS System Name (SMFID) to Zowe Explorer Jobs View. [#2629] (https://github.com/zowe/vscode-extension-for-zowe/pull/2629) +- Added z/OS System Name (SMFID) to Zowe Explorer Jobs View. [#2629](https://github.com/zowe/vscode-extension-for-zowe/issues/2629) - PROC and PROCLIB datasets are recognized as JCL files for syntax highlighting [#2614](https://github.com/zowe/vscode-extension-for-zowe/issues/2614) ### Bug fixes From c5e972094c330ca4417b911e22a3825847b92816 Mon Sep 17 00:00:00 2001 From: Santhoshi Boyina Date: Sat, 16 Dec 2023 00:24:16 +0530 Subject: [PATCH 5/6] Improved code coverage Signed-off-by: Santhoshi Boyina --- .../__unit__/job/ZoweJobNode.unit.test.ts | 15 ++++++++++++++- packages/zowe-explorer/src/job/ZoweJobNode.ts | 9 ++++++--- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/packages/zowe-explorer/__tests__/__unit__/job/ZoweJobNode.unit.test.ts b/packages/zowe-explorer/__tests__/__unit__/job/ZoweJobNode.unit.test.ts index a9ac447373..44985615a3 100644 --- a/packages/zowe-explorer/__tests__/__unit__/job/ZoweJobNode.unit.test.ts +++ b/packages/zowe-explorer/__tests__/__unit__/job/ZoweJobNode.unit.test.ts @@ -436,7 +436,20 @@ describe("ZoweJobNode unit tests - Function getChildren", () => { expect(jobs[0].label).toEqual("TESTJOB(JOB1234) - sampleMember - ACTIVE"); }); - it("To check smfid field is not in Jobs Tree View", async () => { + it("smfid field is not in Jobs Tree View", async () => { + const globalMocks = await createGlobalMocks(); + + await globalMocks.testJobsProvider.addSession("fake"); + globalMocks.testJobsProvider.mSessionNodes[1].searchId = "JOB1234"; + globalMocks.testJobsProvider.mSessionNodes[1].dirty = true; + globalMocks.testJobsProvider.mSessionNodes[1].filtered = true; + globalMocks.testIJob.retcode = "ACTIVE"; + globalMocks.testIJob["exec-member"] = ""; + const jobs = await globalMocks.testJobsProvider.mSessionNodes[1].getChildren(); + expect(jobs[0].label).toEqual("TESTJOB(JOB1234) - ACTIVE"); + }); + + it("To check smfid field when return code is undefined", async () => { const globalMocks = await createGlobalMocks(); await globalMocks.testJobsProvider.addSession("fake"); diff --git a/packages/zowe-explorer/src/job/ZoweJobNode.ts b/packages/zowe-explorer/src/job/ZoweJobNode.ts index 0039059a76..15acaa748b 100644 --- a/packages/zowe-explorer/src/job/ZoweJobNode.ts +++ b/packages/zowe-explorer/src/job/ZoweJobNode.ts @@ -110,6 +110,8 @@ export class Job extends ZoweTreeNode implements IZoweJobTreeNode { public async getChildren(): Promise { const thisSessionNode = this.getSessionNode(); ZoweLogger.trace(`ZoweJobNode.getChildren called for ${String(thisSessionNode.label)}.`); + console.log("THIS", this); + console.log("filter", this.filter); if (this?.filter !== undefined) { return this.children; } @@ -203,9 +205,10 @@ export class Job extends ZoweTreeNode implements IZoweJobTreeNode { jobs.forEach((job) => { let nodeTitle: string; if (job.retcode) { - nodeTitle = job["exec-member"] - ? `${job.jobname}(${job.jobid}) - ${job["exec-member"] as string} - ${job.retcode}` - : `${job.jobname}(${job.jobid}) - ${job.retcode}`; + nodeTitle = + job["exec-member"] !== undefined && job["exec-member"] !== "" + ? `${job.jobname}(${job.jobid}) - ${job["exec-member"] as string} - ${job.retcode}` + : `${job.jobname}(${job.jobid}) - ${job.retcode}`; } else { nodeTitle = `${job.jobname}(${job.jobid}) - ${job.status}`; } From 1e281bc06c37333456af025250ccbbab91de53bf Mon Sep 17 00:00:00 2001 From: Santhoshi Boyina Date: Sat, 16 Dec 2023 00:28:59 +0530 Subject: [PATCH 6/6] fixed lint error Signed-off-by: Santhoshi Boyina --- packages/zowe-explorer/src/job/ZoweJobNode.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/zowe-explorer/src/job/ZoweJobNode.ts b/packages/zowe-explorer/src/job/ZoweJobNode.ts index 15acaa748b..721a90fe95 100644 --- a/packages/zowe-explorer/src/job/ZoweJobNode.ts +++ b/packages/zowe-explorer/src/job/ZoweJobNode.ts @@ -110,8 +110,6 @@ export class Job extends ZoweTreeNode implements IZoweJobTreeNode { public async getChildren(): Promise { const thisSessionNode = this.getSessionNode(); ZoweLogger.trace(`ZoweJobNode.getChildren called for ${String(thisSessionNode.label)}.`); - console.log("THIS", this); - console.log("filter", this.filter); if (this?.filter !== undefined) { return this.children; }