Skip to content

Commit bacee13

Browse files
mshanemcshetzelcristiand391
authored
test: nuts fail for email/reports (#208)
* test: nuts fail for email/reports * test: add a few more inFolder tests * chore: bump SDR version * fix: eslint * fix: update yarn.lock * chore: remove generated NUTs dir during clean * chore: bump SDR version Co-authored-by: Steve Hetzel <[email protected]> Co-authored-by: Cristian Dominguez <[email protected]>
1 parent 99df1ca commit bacee13

File tree

4 files changed

+128
-9
lines changed

4 files changed

+128
-9
lines changed

package.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
"@oclif/config": "^1",
99
"@salesforce/command": "^4.0.4",
1010
"@salesforce/core": "^2.26.1",
11-
"@salesforce/source-deploy-retrieve": "^4.4.1",
11+
"@salesforce/source-deploy-retrieve": "^4.4.6",
1212
"chalk": "^4.1.1",
1313
"cli-ux": "^5.6.3",
1414
"open": "^8.2.1",
@@ -113,8 +113,8 @@
113113
"repository": "salesforcecli/plugin-source",
114114
"scripts": {
115115
"build": "sf-build",
116-
"clean": "sf-clean",
117-
"clean-all": "sf-clean all",
116+
"clean": "sf-clean && shx rm -rf ./test/nuts/generated",
117+
"clean-all": "sf-clean all && shx rm -rf ./test/nuts/generated",
118118
"clean:lib": "shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json",
119119
"compile": "sf-compile",
120120
"docs": "sf-docs",
@@ -133,6 +133,7 @@
133133
"test:nuts:deploy": "PLUGIN_SOURCE_SEED_FILTER=\"deploy\" ts-node ./test/nuts/generateNuts.ts && nyc mocha \"**/*.nut.ts\" --slow 3000 --timeout 600000 --parallel --retries 0",
134134
"test:nuts:retrieve": "PLUGIN_SOURCE_SEED_FILTER=\"retrieve\" ts-node ./test/nuts/generateNuts.ts && nyc mocha \"**/*.nut.ts\" --slow 3000 --timeout 600000 --parallel --retries 0",
135135
"test:nuts:manifest:create": "nyc mocha \"test/nuts/create.nut.ts\" --slow 3000 --timeout 600000 --parallel --retries 0",
136+
"test:nuts:folders": "nyc mocha \"test/nuts/folderTypes.nut.ts\" --slow 3000 --timeout 600000",
136137
"test:nuts:delete": "nyc mocha \"test/nuts/delete.nut.ts\" --slow 3000 --timeout 600000 --parallel --retries 0",
137138
"version": "oclif-dev readme"
138139
},

test/nuts/folderTypes.nut.ts

Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
/*
2+
* Copyright (c) 2020, salesforce.com, inc.
3+
* All rights reserved.
4+
* Licensed under the BSD 3-Clause license.
5+
* For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
6+
*/
7+
import * as fs from 'fs';
8+
import * as path from 'path';
9+
import { execCmd, TestSession } from '@salesforce/cli-plugins-testkit';
10+
import { expect } from 'chai';
11+
import { FileResponse } from '@salesforce/source-deploy-retrieve';
12+
import { DeployCommandResult } from '../../src/formatters/deployResultFormatter';
13+
import { RetrieveCommandResult } from '../../src/formatters/retrieveResultFormatter';
14+
15+
describe('metadata types that go in folders', () => {
16+
let session: TestSession;
17+
18+
before(async () => {
19+
session = await TestSession.create({
20+
project: {
21+
gitClone: 'https://github.com/mshanemc/nestedFolders',
22+
},
23+
setupCommands: [
24+
'sfdx force:org:create -f config/project-scratch-def.json --setdefaultusername --wait 10 --durationdays 1',
25+
],
26+
});
27+
});
28+
29+
after(async () => {
30+
await session?.clean();
31+
});
32+
33+
describe('emailTemplates', () => {
34+
after(async () => {
35+
await fs.promises.unlink(path.join(session.project.dir, 'package.xml'));
36+
});
37+
38+
const getExpectedSource = (state: 'Created' | 'Changed') => [
39+
{
40+
fullName: 'Top_Level_Folder',
41+
type: 'EmailFolder',
42+
state,
43+
filePath: path.join('default', 'email', 'Top_Level_Folder.emailFolder-meta.xml'),
44+
},
45+
{
46+
fullName: 'Top_Level_Folder/Template_in_folder',
47+
type: 'EmailTemplate',
48+
state,
49+
filePath: path.join('email', 'Top_Level_Folder', 'Template_in_folder.email'),
50+
},
51+
{
52+
fullName: 'Top_Level_Folder/Template_in_folder',
53+
type: 'EmailTemplate',
54+
state,
55+
filePath: path.join('email', 'Top_Level_Folder', 'Template_in_folder.email-meta.xml'),
56+
},
57+
{
58+
fullName: 'unfiled$public/Top_level_email',
59+
type: 'EmailTemplate',
60+
state,
61+
filePath: path.join('email', 'unfiled$public', 'Top_level_email.email'),
62+
},
63+
{
64+
fullName: 'unfiled$public/Top_level_email',
65+
type: 'EmailTemplate',
66+
state,
67+
filePath: path.join('email', 'unfiled$public', 'Top_level_email.email-meta.xml'),
68+
},
69+
];
70+
71+
const getRelativeFileResponses = (resp: FileResponse[]) => {
72+
return resp.map((s) => {
73+
// grab the last 2 directories with the file only
74+
s.filePath = s.filePath.split(path.sep).slice(-3).join(path.sep);
75+
return s;
76+
});
77+
};
78+
79+
it('can generate manifest for just the emailTemplates', () => {
80+
const pathToEmails = path.join('force-app', 'main', 'default', 'email');
81+
execCmd(`force:source:manifest:create -p ${pathToEmails} --json`, { ensureExitCode: 0 });
82+
expect(fs.existsSync(path.join(session.project.dir, 'package.xml'))).to.be.true;
83+
});
84+
85+
it('can deploy email templates via the manifest', () => {
86+
const deployResults = execCmd<DeployCommandResult>('force:source:deploy -x package.xml --json').jsonOutput;
87+
expect(deployResults.status, JSON.stringify(deployResults)).to.equal(0);
88+
const deployedSource = getRelativeFileResponses(deployResults.result.deployedSource);
89+
expect(deployedSource).to.have.deep.members(getExpectedSource('Created'));
90+
});
91+
92+
it('can retrieve email templates via the manifest', () => {
93+
const retrieveResults = execCmd<RetrieveCommandResult>('force:source:retrieve -x package.xml --json').jsonOutput;
94+
expect(retrieveResults.status, JSON.stringify(retrieveResults)).to.equal(0);
95+
const retrievedSource = getRelativeFileResponses(retrieveResults.result.inboundFiles);
96+
expect(retrievedSource).to.have.deep.members(getExpectedSource('Changed'));
97+
});
98+
});
99+
100+
describe('reports', () => {
101+
after(async () => {
102+
await fs.promises.unlink(path.join(session.project.dir, 'package.xml'));
103+
});
104+
105+
it('can generate manifest for just the reports', () => {
106+
expect(fs.existsSync(path.join(session.project.dir, 'package.xml'))).to.be.false;
107+
const pathToReports = path.join('force-app', 'main', 'default', 'reports');
108+
execCmd(`force:source:manifest:create -p ${pathToReports} --json`, { ensureExitCode: 0 });
109+
expect(fs.existsSync(path.join(session.project.dir, 'package.xml'))).to.be.true;
110+
});
111+
112+
it('can deploy reports via the manifest', () => {
113+
execCmd('force:source:deploy -x package.xml --json', { ensureExitCode: 0 });
114+
});
115+
116+
it('can retrieve reports via the manifest', () => {
117+
execCmd('force:source:retrieve -x package.xml --json', { ensureExitCode: 0 });
118+
});
119+
});
120+
});

testProj

Lines changed: 0 additions & 1 deletion
This file was deleted.

yarn.lock

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -835,17 +835,16 @@
835835
unzipper "0.10.11"
836836
xmldom-sfdx-encoding "^0.1.29"
837837

838-
"@salesforce/source-deploy-retrieve@^4.4.1":
839-
version "4.4.1"
840-
resolved "https://registry.yarnpkg.com/@salesforce/source-deploy-retrieve/-/source-deploy-retrieve-4.4.1.tgz#892cc5918aa46553536cf15c461428a6a3a1a4b7"
841-
integrity sha512-9oMVdHZIUr1yrKxLsBL1VTb3tFR94oWOrGaHMkYGKDQ1ruM9PPbm7bSMbTFY0uSnIGE6/hQeIHXYePlseRaJog==
838+
"@salesforce/source-deploy-retrieve@^4.4.5":
839+
version "4.4.5"
840+
resolved "https://registry.npmjs.org/@salesforce/source-deploy-retrieve/-/source-deploy-retrieve-4.4.5.tgz#1eae2b0576f8be3b0e7529588df4d4bfe8be7d7e"
841+
integrity sha512-VOlfBcJOibAHBww0z/8gIX3G8DV7HU2Dyvz2nsM3Uo8D8CcTH0z+ocv7jc1jfxZhMl3Kn/a1do3Revqc21bdHw==
842842
dependencies:
843843
"@salesforce/core" "2.25.1"
844844
"@salesforce/kit" "^1.5.0"
845845
"@salesforce/ts-types" "^1.4.2"
846846
archiver "^5.3.0"
847847
fast-xml-parser "^3.17.4"
848-
gitignore-parser "0.0.2"
849848
ignore "^5.1.8"
850849
mime "2.4.6"
851850
unzipper "0.10.11"

0 commit comments

Comments
 (0)