diff --git a/src/interfaces/package-export-transport.ts b/src/interfaces/package-export-transport.ts index b808f4a..74d222e 100644 --- a/src/interfaces/package-export-transport.ts +++ b/src/interfaces/package-export-transport.ts @@ -70,6 +70,6 @@ export interface NodeSerializedContent { export interface StudioPackageManifest { packageKey: string; - spaceId: string; + space: Partial; runtimeVariableAssignments: VariablesAssignments[]; } \ No newline at end of file diff --git a/src/services/studio/studio.service.ts b/src/services/studio/studio.service.ts index 405a558..1b6f112 100644 --- a/src/services/studio/studio.service.ts +++ b/src/services/studio/studio.service.ts @@ -19,6 +19,8 @@ import {parse, stringify} from "../../util/yaml"; import AdmZip = require("adm-zip"); import {nodeApi} from "../../api/node-api"; import {variablesApi} from "../../api/variables-api"; +import {spaceApi} from "../../api/space-api"; +import {SpaceTransport} from "../../interfaces/save-space.interface"; class StudioService { @@ -57,11 +59,15 @@ class StudioService { return Promise.all(exportedStudioPackageKeys.map(async packageKey => { const node = await nodeApi.findOneByKeyAndRootNodeKey(packageKey, packageKey); + const nodeSpace: SpaceTransport = await spaceApi.findOne(node.spaceId); const variableAssignments = await variablesApi.getRuntimeVariableValues(packageKey); return { packageKey: packageKey, - spaceId: node.spaceId, + space: { + name: nodeSpace.name, + iconReference: nodeSpace.iconReference + }, runtimeVariableAssignments: variableAssignments } })); diff --git a/tests/config/config-export.spec.ts b/tests/config/config-export.spec.ts index a621a5c..6f90fbe 100644 --- a/tests/config/config-export.spec.ts +++ b/tests/config/config-export.spec.ts @@ -22,14 +22,15 @@ import { describe("Config export", () => { - beforeAll(() => { + const firstSpace = PackageManagerApiUtils.buildSpaceTransport("space-1", "First space", "Icon1"); + const secondSpace = PackageManagerApiUtils.buildSpaceTransport("space-2", "Second space", "Icon2"); + + beforeEach(() => { (fs.openSync as jest.Mock).mockReturnValue(100); + mockAxiosGet("https://myTeam.celonis.cloud/package-manager/api/spaces/space-1", {...firstSpace}); + mockAxiosGet("https://myTeam.celonis.cloud/package-manager/api/spaces/space-2", {...secondSpace}); }); - afterAll(() => { - (fs.openSync as jest.Mock).mockClear(); - }) - it("Should export studio file for studio packageKeys", async () => { const manifest: PackageManifestTransport[] = []; manifest.push(ConfigUtils.buildManifestForKeyAndFlavor("key-1", "STUDIO")); @@ -66,12 +67,18 @@ describe("Config export", () => { expect(studioManifest).toHaveLength(2); expect(studioManifest).toContainEqual({ packageKey: firstStudioPackage.key, - spaceId: firstStudioPackage.spaceId, + space: { + name: firstSpace.name, + iconReference: firstSpace.iconReference + }, runtimeVariableAssignments: [firstPackageRuntimeVariable] }); expect(studioManifest).toContainEqual({ packageKey: secondStudioPackage.key, - spaceId: secondStudioPackage.spaceId, + space: { + name: secondSpace.name, + iconReference: secondSpace.iconReference + }, runtimeVariableAssignments: [] }); }) @@ -155,8 +162,8 @@ describe("Config export", () => { mockAxiosGet("https://myTeam.celonis.cloud/package-manager/api/core/packages/export/batch?packageKeys=key-1&packageKeys=key-2&withDependencies=true", exportedPackagesZip.toBuffer()); mockAxiosPost("https://myTeam.celonis.cloud/package-manager/api/core/packages/export/batch/variables-with-assignments", [...exportedVariables]); - mockAxiosGet(`https://myTeam.celonis.cloud/package-manager/api/nodes/${firstPackageNode.key}/${firstPackageNode.key}`, firstPackageNode); - mockAxiosGet(`https://myTeam.celonis.cloud/package-manager/api/nodes/${secondPackageNode.key}/${secondPackageNode.key}`, secondPackageNode); + mockAxiosGet(`https://myTeam.celonis.cloud/package-manager/api/nodes/${firstPackageNode.key}/${firstPackageNode.key}`, {...firstPackageNode, spaceId: "space-1"}); + mockAxiosGet(`https://myTeam.celonis.cloud/package-manager/api/nodes/${secondPackageNode.key}/${secondPackageNode.key}`, {...secondPackageNode, spaceId: "space-2"}); mockAxiosGet(`https://myTeam.celonis.cloud/package-manager/api/nodes/by-package-key/${firstPackageNode.key}/variables/runtime-values`, []); mockAxiosGet(`https://myTeam.celonis.cloud/package-manager/api/nodes/by-package-key/${secondPackageNode.key}/variables/runtime-values`, []); @@ -243,8 +250,8 @@ describe("Config export", () => { mockAxiosGet("https://myTeam.celonis.cloud/package-manager/api/core/packages/export/batch?packageKeys=key-1&packageKeys=key-2&withDependencies=true", exportedPackagesZip.toBuffer()); mockAxiosPost("https://myTeam.celonis.cloud/package-manager/api/core/packages/export/batch/variables-with-assignments", []); - mockAxiosGet(`https://myTeam.celonis.cloud/package-manager/api/nodes/${firstPackageNode.key}/${firstPackageNode.key}`, firstPackageNode); - mockAxiosGet(`https://myTeam.celonis.cloud/package-manager/api/nodes/${secondPackageNode.key}/${secondPackageNode.key}`, secondPackageNode); + mockAxiosGet(`https://myTeam.celonis.cloud/package-manager/api/nodes/${firstPackageNode.key}/${firstPackageNode.key}`, {...firstPackageNode, spaceId: "space-1"}); + mockAxiosGet(`https://myTeam.celonis.cloud/package-manager/api/nodes/${secondPackageNode.key}/${secondPackageNode.key}`, {...secondPackageNode, spaceId: "space-2"}); mockAxiosGet(`https://myTeam.celonis.cloud/package-manager/api/nodes/by-package-key/${firstPackageNode.key}/variables/runtime-values`, []); mockAxiosGet(`https://myTeam.celonis.cloud/package-manager/api/nodes/by-package-key/${secondPackageNode.key}/variables/runtime-values`, []); @@ -346,8 +353,8 @@ describe("Config export", () => { mockAxiosGet("https://myTeam.celonis.cloud/package-manager/api/core/packages/export/batch?packageKeys=key-1&packageKeys=key-2&withDependencies=true", exportedPackagesZip.toBuffer()); mockAxiosPost("https://myTeam.celonis.cloud/package-manager/api/core/packages/export/batch/variables-with-assignments", exportedVariables); - mockAxiosGet(`https://myTeam.celonis.cloud/package-manager/api/nodes/${firstPackageNode.key}/${firstPackageNode.key}`, firstPackageNode); - mockAxiosGet(`https://myTeam.celonis.cloud/package-manager/api/nodes/${secondPackageNode.key}/${secondPackageNode.key}`, secondPackageNode); + mockAxiosGet(`https://myTeam.celonis.cloud/package-manager/api/nodes/${firstPackageNode.key}/${firstPackageNode.key}`, {...firstPackageNode, spaceId: "space-1"}); + mockAxiosGet(`https://myTeam.celonis.cloud/package-manager/api/nodes/${secondPackageNode.key}/${secondPackageNode.key}`, {...secondPackageNode, spaceId: "space-2"}); mockAxiosGet(`https://myTeam.celonis.cloud/package-manager/api/nodes/by-package-key/${firstPackageNode.key}/variables/runtime-values`, []); mockAxiosGet(`https://myTeam.celonis.cloud/package-manager/api/nodes/by-package-key/${secondPackageNode.key}/variables/runtime-values`, []); diff --git a/tests/utls/package-manager-api.utils.ts b/tests/utls/package-manager-api.utils.ts index d84ea48..163f3c3 100644 --- a/tests/utls/package-manager-api.utils.ts +++ b/tests/utls/package-manager-api.utils.ts @@ -1,9 +1,6 @@ import {PackageExportTransport} from "../../src/interfaces/package-export-transport"; -import { - ContentNodeTransport, - PackageWithVariableAssignments, - VariablesAssignments -} from "../../src/interfaces/package-manager.interfaces"; +import {SpaceTransport} from "../../src/interfaces/save-space.interface"; +import {ContentNodeTransport} from "../../src/interfaces/package-manager.interfaces"; export class PackageManagerApiUtils { public static buildPackageExportTransport = (key: string, name: string): PackageExportTransport => { @@ -34,14 +31,11 @@ export class PackageManagerApiUtils { } } - public static buildPackageWithVariableAssignments = (key: string, spaceId: string, variableAssignments: VariablesAssignments[]): PackageWithVariableAssignments => { + public static buildSpaceTransport = (id: string, name: string = "space-name", iconReference: string = "icon"): SpaceTransport => { return { - id: "package-id", - key, - name: "package-name", - createdBy: "", - spaceId, - variableAssignments + id, + name, + iconReference, }; } } \ No newline at end of file