Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion src/commands/analytics/template/lint.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
*/

import { flags, SfdxCommand } from '@salesforce/command';
import { Org, Messages } from '@salesforce/core';
import { Org, Messages, SfdxError } from '@salesforce/core';
import chalk from 'chalk';
import { colorize, getStatusIcon, COLORS } from '../../../lib/analytics/utils';

Expand Down Expand Up @@ -81,6 +81,12 @@ export default class Lint extends SfdxCommand {
}
);

// check if there is any readiness failure
const didAnyReadinessTasksFail = tasks.some(task => task.readinessStatus === 'Failed');
Comment thread
inediblepepper marked this conversation as resolved.
if (didAnyReadinessTasksFail) {
throw new SfdxError('Template linting failed', undefined, undefined, 1, undefined).setData(result);
}

Comment thread
sarabzadeh marked this conversation as resolved.
return result;
}
}
6 changes: 6 additions & 0 deletions src/commands/analytics/template/validate.ts
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,12 @@ export default class Validate extends SfdxCommand {
}
);

// check if there is any readiness failure
const didAnyReadinessTasksFail = tasks.some(task => task.readinessStatus === 'Failed');
if (didAnyReadinessTasksFail) {
throw new SfdxError('Template validation failed', undefined, undefined, 1, undefined).setData(result);
}

return result;
}
}
50 changes: 37 additions & 13 deletions test/commands/template/lint.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,19 +11,17 @@ import { expect, test } from '@salesforce/command/lib/test';
core.Messages.importMessagesDirectory(__dirname);
// const messages = core.Messages.loadMessages('@salesforce/analytics', 'lint');
const ID = '0Nkxx000000000zCAA';
const templateValues = [
{
label: 'sfdc_internal__Sales_Analytics_Flex',
score: 85.6,
tasks: [
{
label: 'TemplateAssociationTask',
message: 'Certification for sfdc_internal__Sales_Analytics_Flex template.',
readinessStatus: 'Complete'
}
]
}
];
const templateValues = {
label: 'sfdc_internal__Sales_Analytics_Flex',
score: 85.6,
tasks: [
{
label: 'TemplateAssociationTask',
message: 'Certification for sfdc_internal__Sales_Analytics_Flex template.',
readinessStatus: 'Complete'
}
]
};

describe('analytics:template:lint', () => {
test
Expand All @@ -35,3 +33,29 @@ describe('analytics:template:lint', () => {
expect(ctx.stdout).to.contain('Command only available in api version 58.0 or later');
});
});

const templateWithFailedReadiness = {
id: '0Nkxx000000000zCAA',
score: 85.6,
tasks: [
{
label: 'EvaluateTemplateRequirement',
message: 'Certification for sfdc_internal__Sales_Analytics_Flex template.',
readinessStatus: 'Failed'
}
]
};

describe('analytics:template:lint failure', () => {
const exitCode = process.exitCode;
test
.withOrg({ username: 'test@org.com' }, true)
.withConnectionRequest(() => Promise.resolve(templateWithFailedReadiness))
.command(['analytics:template:lint', '--templateid', ID, '--apiversion', '58.0'])
.it(`runs analytics:template:lint --templateid ${ID}`, () => {
expect(process.exitCode).to.equal(1);
});
after(() => {
process.exitCode = exitCode;
});
});
48 changes: 35 additions & 13 deletions test/commands/template/validate.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,19 +11,16 @@ import { expect, test } from '@salesforce/command/lib/test';
core.Messages.importMessagesDirectory(__dirname);
// const messages = core.Messages.loadMessages('@salesforce/analytics', 'validate');
const ID = '0Nkxx000000000zCAA';
const templateValues = [
{
id: '0Nkxx000000000zCAA',
tasks: [
{
label: 'TemplateAssociationTask',
message: 'Certification for sfdc_internal__Sales_Analytics_Flex template.',
readinessStatus: 'Complete'
}
]
}
];

const templateValues = {
id: '0Nkxx000000000zCAA',
tasks: [
{
label: 'TemplateAssociationTask',
message: 'Certification for sfdc_internal__Sales_Analytics_Flex template.',
readinessStatus: 'Complete'
}
]
};
describe('analytics:template:validate', () => {
test
.withOrg({ username: 'test@org.com' }, true)
Expand All @@ -34,3 +31,28 @@ describe('analytics:template:validate', () => {
expect(ctx.stdout).to.contain('Command only available in api version 58.0 or later');
});
});

const templateWithFailedReadiness = {
id: '0Nkxx000000000zCAA',
tasks: [
{
label: 'EvaluateTemplateRequirement',
message: "Expected number of accounts don't match. Expected: 100, Actual: 0",
readinessStatus: 'Failed'
}
]
};
describe('analytics:template:validate failure', () => {
const exitCode = process.exitCode;
test
.withOrg({ username: 'test@org.com' }, true)
.withConnectionRequest(() => Promise.resolve(templateWithFailedReadiness))
.command(['analytics:template:validate', '--templateid', ID, '--apiversion', '58.0'])
.it(`runs analytics:template:validate --templateid ${ID}`, () => {
expect(process.exitCode).to.equal(1);
});

after(() => {
process.exitCode = exitCode;
});
});