Skip to content

Commit 5090384

Browse files
fix: @W-19637353: Addressed review comments and test failure fixes
1 parent cac742a commit 5090384

File tree

5 files changed

+49
-12
lines changed

5 files changed

+49
-12
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# OmniStudio Migration Assistant
1+
# Omnistudio Migration Assistant
22

33
The Omnistudio Migration Assistant is a command-line interface (CLI) plugin that you install via Salesforce CLI. It creates records for your omnistudio components on the Salesforce standard objects.
44

messages/migrate.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -281,5 +281,7 @@
281281
"packageDeploymentFailedWithError": "Omniscript package deployment failed after %s attempts. Error: %s. Please check deployment logs and org settings.",
282282
"maxRetryAttemptsExceeded": "Maximum retry attempts (%s) exceeded for omniscript package deployment",
283283
"deploymentNonRetryableError": "Deployment failed with non-retryable error: %s. Please review and fix the issue manually",
284-
"deploymentTriggeredSuccessfully": "Please monitor your Deployment: %s using deployment status page in Org"
284+
"deploymentTriggeredSuccessfully": "Please monitor your Deployment: %s using deployment status page in Org",
285+
"omniscriptPackageDeploymentFailedReturnedFalse": "Omniscript package deployment failed - deployment returned false. This may be due to missing package, permissions, or deployment timeout.",
286+
"omniscriptPackageDeploymentFailedWithMessage": "Omniscript package deployment failed: %s"
285287
}

src/migration/deployer.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -67,10 +67,11 @@ export class Deployer {
6767
if (success) {
6868
Logger.log(this.messages.getMessage('omniscriptPackageIntegrated'));
6969
} else {
70-
const errorMsg =
71-
'Omniscript package deployment failed - deployment returned false. This may be due to missing package, permissions, or deployment timeout.';
70+
const errorMsg = this.messages.getMessage('omniscriptPackageDeploymentFailedReturnedFalse');
7271
Logger.error(errorMsg);
73-
throw new OmniscriptPackageDeploymentError('Omniscript package deployment failed: ' + errorMsg);
72+
throw new OmniscriptPackageDeploymentError(
73+
this.messages.getMessage('omniscriptPackageDeploymentFailedWithMessage', [errorMsg])
74+
);
7475
}
7576
} catch (error) {
7677
const errorMessage = error instanceof Error ? error.message : String(error);
@@ -80,7 +81,9 @@ export class Deployer {
8081
if (error instanceof OmniscriptPackageDeploymentError) {
8182
throw error;
8283
} else {
83-
throw new OmniscriptPackageDeploymentError('Omniscript package deployment failed: ' + errorMessage);
84+
throw new OmniscriptPackageDeploymentError(
85+
this.messages.getMessage('omniscriptPackageDeploymentFailedWithMessage', [errorMessage])
86+
);
8487
}
8588
}
8689
}

test/migration/deployer.test.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,14 @@ describe('Deployer', () => {
5959
getMessageStub
6060
.withArgs('deploymentNonRetryableError')
6161
.returns('Deployment failed with non-retryable error: %s. Please review and fix the issue manually.');
62+
getMessageStub
63+
.withArgs('omniscriptPackageDeploymentFailedReturnedFalse')
64+
.returns(
65+
'Omniscript package deployment failed - deployment returned false. This may be due to missing package, permissions, or deployment timeout.'
66+
);
67+
getMessageStub
68+
.withArgs('omniscriptPackageDeploymentFailedWithMessage')
69+
.callsFake((key: string, args: string[]) => `Omniscript package deployment failed: ${args[0]}`);
6270

6371
// Mock Logger
6472
sandbox.stub(Logger, 'logVerbose');

test/migration/postMigrate.test.ts

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
/* eslint-disable @typescript-eslint/no-unsafe-call */
55
/* eslint-disable camelcase */
66
import * as fs from 'fs';
7+
import * as path from 'path';
78
import { expect } from '@salesforce/command/lib/test';
89
import { Connection, Messages, Org } from '@salesforce/core';
910
import { UX } from '@salesforce/command';
@@ -124,6 +125,14 @@ describe('PostMigrate', () => {
124125
getMessageStub
125126
.withArgs('deploymentNonRetryableError')
126127
.returns('Deployment failed with non-retryable error: %s. Please review and fix the issue manually.');
128+
getMessageStub
129+
.withArgs('omniscriptPackageDeploymentFailedReturnedFalse')
130+
.returns(
131+
'Omniscript package deployment failed - deployment returned false. This may be due to missing package, permissions, or deployment timeout.'
132+
);
133+
getMessageStub
134+
.withArgs('omniscriptPackageDeploymentFailedWithMessage')
135+
.callsFake((key: string, args: string[]) => `Omniscript package deployment failed: ${args[0]}`);
127136
// Other messages referenced by implementation
128137
getMessageStub.withArgs('checkingStandardDesignerStatus', [testNamespace]).returns('Checking designer status');
129138
getMessageStub.withArgs('standardDesignerAlreadyEnabled', [testNamespace]).returns('Designer already enabled');
@@ -199,16 +208,31 @@ describe('PostMigrate', () => {
199208
// Use existing stubs from beforeEach setup
200209
const deployLogVerboseStub = Logger.logVerbose as sinon.SinonStub;
201210
const actionItems: string[] = [];
211+
// Create a temporary package.xml file to ensure fs.existsSync returns true
212+
const tempPackageXml = path.join(process.cwd(), 'package.xml');
213+
fs.writeFileSync(tempPackageXml, '<?xml version="1.0" encoding="UTF-8"?><Package></Package>');
214+
215+
// Clean up after test
216+
const cleanup = () => {
217+
if (fs.existsSync(tempPackageXml)) {
218+
fs.unlinkSync(tempPackageXml);
219+
}
220+
};
202221

203222
// Act
204223
await postMigrate.deploy(actionItems);
205224

206-
// Assert
207-
expect(deployerStub.called).to.be.true;
208-
expect(logErrorStub.called).to.be.true;
209-
expect(deployLogVerboseStub.called).to.be.true;
210-
expect(actionItems.length).to.be.greaterThan(0);
211-
expect(actionItems[0]).to.include('Omniscript customization package deployment failed');
225+
try {
226+
// Assert
227+
expect(deployerStub.called).to.be.true;
228+
expect(logErrorStub.called).to.be.true;
229+
expect(deployLogVerboseStub.called).to.be.true;
230+
expect(actionItems.length).to.be.greaterThan(0);
231+
expect(actionItems[0]).to.include('Omniscript customization package deployment failed');
232+
} finally {
233+
// Always clean up the temporary file
234+
cleanup();
235+
}
212236
});
213237

214238
it('should create Deployer with correct parameters', () => {

0 commit comments

Comments
 (0)