Skip to content

Commit

Permalink
[TA-2785] Map space transport in studio file
Browse files Browse the repository at this point in the history
  • Loading branch information
LaberionAjvazi committed Jan 26, 2024
1 parent 8ae05eb commit 3444704
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 27 deletions.
2 changes: 1 addition & 1 deletion src/interfaces/package-export-transport.ts
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,6 @@ export interface NodeSerializedContent {

export interface StudioPackageManifest {
packageKey: string;
spaceId: string;
space: Partial<SpaceTransport>;
runtimeVariableAssignments: VariablesAssignments[];
}
8 changes: 7 additions & 1 deletion src/services/studio/studio.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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 {

Expand Down Expand Up @@ -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
}
}));
Expand Down
33 changes: 20 additions & 13 deletions tests/config/config-export.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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"));
Expand Down Expand Up @@ -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: []
});
})
Expand Down Expand Up @@ -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`, []);

Expand Down Expand Up @@ -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`, []);

Expand Down Expand Up @@ -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`, []);

Expand Down
18 changes: 6 additions & 12 deletions tests/utls/package-manager-api.utils.ts
Original file line number Diff line number Diff line change
@@ -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 => {
Expand Down Expand Up @@ -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,
};
}
}

0 comments on commit 3444704

Please sign in to comment.