generated from salesforcecli/plugin-template
-
Notifications
You must be signed in to change notification settings - Fork 29
Expand file tree
/
Copy pathreport-mdapi.nut.ts
More file actions
106 lines (96 loc) · 4.02 KB
/
report-mdapi.nut.ts
File metadata and controls
106 lines (96 loc) · 4.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
/*
* Copyright 2026, Salesforce, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { unlinkSync, existsSync } from 'node:fs';
import { join, resolve } from 'node:path';
import { fileURLToPath } from 'node:url';
import { SourceTestkit } from '@salesforce/source-testkit';
import { assert, expect } from 'chai';
import { RequestStatus } from '@salesforce/source-deploy-retrieve';
import { DeployResultJson } from '../../../../src/utils/types.js';
describe('[project deploy report] NUTs with metadata-dir', () => {
let testkit: SourceTestkit;
const mdSourceDir = 'mdapiOut';
const orgAlias = 'reportMdTestOrg2';
before(async () => {
testkit = await SourceTestkit.create({
repository: 'https://github.com/salesforcecli/sample-project-multiple-packages.git',
nut: fileURLToPath(import.meta.url),
scratchOrgs: [{ duration: 1, alias: orgAlias, config: join('config', 'project-scratch-def.json') }],
});
await testkit.convert({
args: `--source-dir force-app --output-dir ${mdSourceDir}`,
json: true,
exitCode: 0,
});
});
after(async () => {
await testkit?.clean();
});
describe('--use-most-recent', () => {
it('should report most recently started deployment', async () => {
await testkit.execute<DeployResultJson>('project deploy start', {
args: `--metadata-dir ${mdSourceDir} --async`,
json: true,
exitCode: 0,
});
const deploy = await testkit.execute<DeployResultJson>('project deploy report', {
args: '--use-most-recent',
json: true,
exitCode: 0,
});
assert(deploy?.result);
expect([RequestStatus.Pending, RequestStatus.Succeeded, RequestStatus.InProgress]).includes(deploy.result.status);
});
});
describe('--job-id', () => {
it('should report the provided job id', async () => {
const first = await testkit.execute<DeployResultJson>('project deploy start', {
args: `--metadata-dir ${mdSourceDir} --async`,
json: true,
exitCode: 0,
});
const deploy = await testkit.execute<DeployResultJson>('project deploy report', {
args: `--job-id ${first?.result.id}`,
json: true,
exitCode: 0,
});
assert(deploy?.result);
expect([RequestStatus.Pending, RequestStatus.Succeeded, RequestStatus.InProgress]).includes(deploy.result.status);
expect(deploy.result.id).to.equal(first?.result.id);
});
it('should report from specified target-org and job-id without deploy cache', async () => {
const first = await testkit.execute<DeployResultJson>('project deploy start', {
args: `--metadata-dir ${mdSourceDir} --async --target-org ${orgAlias}`,
json: true,
exitCode: 0,
});
// delete the cache file so we can verify that reporting just with job-id and org works
const deployCacheFilePath = resolve(testkit.projectDir, join('..', '.sf', 'deploy-cache.json'));
unlinkSync(deployCacheFilePath);
assert(!existsSync(deployCacheFilePath));
const deploy = await testkit.execute<DeployResultJson>('project deploy report', {
args: `--job-id ${first?.result.id} --target-org ${orgAlias} --wait 9`,
json: true,
exitCode: 0,
});
assert(deploy?.result);
expect(deploy.result.success).to.equal(true);
expect(deploy.result.status).to.equal(RequestStatus.Succeeded);
expect(deploy.result.id).to.equal(first?.result.id);
await testkit.expect.filesToBeDeployed(['force-app/**/*'], ['force-app/test/**/*']);
});
});
});