Skip to content

Commit

Permalink
test: nuts fail for email/reports (#208)
Browse files Browse the repository at this point in the history
* 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]>
  • Loading branch information
3 people authored Sep 24, 2021
1 parent 99df1ca commit bacee13
Show file tree
Hide file tree
Showing 4 changed files with 128 additions and 9 deletions.
7 changes: 4 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"@oclif/config": "^1",
"@salesforce/command": "^4.0.4",
"@salesforce/core": "^2.26.1",
"@salesforce/source-deploy-retrieve": "^4.4.1",
"@salesforce/source-deploy-retrieve": "^4.4.6",
"chalk": "^4.1.1",
"cli-ux": "^5.6.3",
"open": "^8.2.1",
Expand Down Expand Up @@ -113,8 +113,8 @@
"repository": "salesforcecli/plugin-source",
"scripts": {
"build": "sf-build",
"clean": "sf-clean",
"clean-all": "sf-clean all",
"clean": "sf-clean && shx rm -rf ./test/nuts/generated",
"clean-all": "sf-clean all && shx rm -rf ./test/nuts/generated",
"clean:lib": "shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json",
"compile": "sf-compile",
"docs": "sf-docs",
Expand All @@ -133,6 +133,7 @@
"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",
"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",
"test:nuts:manifest:create": "nyc mocha \"test/nuts/create.nut.ts\" --slow 3000 --timeout 600000 --parallel --retries 0",
"test:nuts:folders": "nyc mocha \"test/nuts/folderTypes.nut.ts\" --slow 3000 --timeout 600000",
"test:nuts:delete": "nyc mocha \"test/nuts/delete.nut.ts\" --slow 3000 --timeout 600000 --parallel --retries 0",
"version": "oclif-dev readme"
},
Expand Down
120 changes: 120 additions & 0 deletions test/nuts/folderTypes.nut.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
/*
* Copyright (c) 2020, salesforce.com, inc.
* All rights reserved.
* Licensed under the BSD 3-Clause license.
* For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
*/
import * as fs from 'fs';
import * as path from 'path';
import { execCmd, TestSession } from '@salesforce/cli-plugins-testkit';
import { expect } from 'chai';
import { FileResponse } from '@salesforce/source-deploy-retrieve';
import { DeployCommandResult } from '../../src/formatters/deployResultFormatter';
import { RetrieveCommandResult } from '../../src/formatters/retrieveResultFormatter';

describe('metadata types that go in folders', () => {
let session: TestSession;

before(async () => {
session = await TestSession.create({
project: {
gitClone: 'https://github.com/mshanemc/nestedFolders',
},
setupCommands: [
'sfdx force:org:create -f config/project-scratch-def.json --setdefaultusername --wait 10 --durationdays 1',
],
});
});

after(async () => {
await session?.clean();
});

describe('emailTemplates', () => {
after(async () => {
await fs.promises.unlink(path.join(session.project.dir, 'package.xml'));
});

const getExpectedSource = (state: 'Created' | 'Changed') => [
{
fullName: 'Top_Level_Folder',
type: 'EmailFolder',
state,
filePath: path.join('default', 'email', 'Top_Level_Folder.emailFolder-meta.xml'),
},
{
fullName: 'Top_Level_Folder/Template_in_folder',
type: 'EmailTemplate',
state,
filePath: path.join('email', 'Top_Level_Folder', 'Template_in_folder.email'),
},
{
fullName: 'Top_Level_Folder/Template_in_folder',
type: 'EmailTemplate',
state,
filePath: path.join('email', 'Top_Level_Folder', 'Template_in_folder.email-meta.xml'),
},
{
fullName: 'unfiled$public/Top_level_email',
type: 'EmailTemplate',
state,
filePath: path.join('email', 'unfiled$public', 'Top_level_email.email'),
},
{
fullName: 'unfiled$public/Top_level_email',
type: 'EmailTemplate',
state,
filePath: path.join('email', 'unfiled$public', 'Top_level_email.email-meta.xml'),
},
];

const getRelativeFileResponses = (resp: FileResponse[]) => {
return resp.map((s) => {
// grab the last 2 directories with the file only
s.filePath = s.filePath.split(path.sep).slice(-3).join(path.sep);
return s;
});
};

it('can generate manifest for just the emailTemplates', () => {
const pathToEmails = path.join('force-app', 'main', 'default', 'email');
execCmd(`force:source:manifest:create -p ${pathToEmails} --json`, { ensureExitCode: 0 });
expect(fs.existsSync(path.join(session.project.dir, 'package.xml'))).to.be.true;
});

it('can deploy email templates via the manifest', () => {
const deployResults = execCmd<DeployCommandResult>('force:source:deploy -x package.xml --json').jsonOutput;
expect(deployResults.status, JSON.stringify(deployResults)).to.equal(0);
const deployedSource = getRelativeFileResponses(deployResults.result.deployedSource);
expect(deployedSource).to.have.deep.members(getExpectedSource('Created'));
});

it('can retrieve email templates via the manifest', () => {
const retrieveResults = execCmd<RetrieveCommandResult>('force:source:retrieve -x package.xml --json').jsonOutput;
expect(retrieveResults.status, JSON.stringify(retrieveResults)).to.equal(0);
const retrievedSource = getRelativeFileResponses(retrieveResults.result.inboundFiles);
expect(retrievedSource).to.have.deep.members(getExpectedSource('Changed'));
});
});

describe('reports', () => {
after(async () => {
await fs.promises.unlink(path.join(session.project.dir, 'package.xml'));
});

it('can generate manifest for just the reports', () => {
expect(fs.existsSync(path.join(session.project.dir, 'package.xml'))).to.be.false;
const pathToReports = path.join('force-app', 'main', 'default', 'reports');
execCmd(`force:source:manifest:create -p ${pathToReports} --json`, { ensureExitCode: 0 });
expect(fs.existsSync(path.join(session.project.dir, 'package.xml'))).to.be.true;
});

it('can deploy reports via the manifest', () => {
execCmd('force:source:deploy -x package.xml --json', { ensureExitCode: 0 });
});

it('can retrieve reports via the manifest', () => {
execCmd('force:source:retrieve -x package.xml --json', { ensureExitCode: 0 });
});
});
});
1 change: 0 additions & 1 deletion testProj
Submodule testProj deleted from ae7f21
9 changes: 4 additions & 5 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -835,17 +835,16 @@
unzipper "0.10.11"
xmldom-sfdx-encoding "^0.1.29"

"@salesforce/source-deploy-retrieve@^4.4.1":
version "4.4.1"
resolved "https://registry.yarnpkg.com/@salesforce/source-deploy-retrieve/-/source-deploy-retrieve-4.4.1.tgz#892cc5918aa46553536cf15c461428a6a3a1a4b7"
integrity sha512-9oMVdHZIUr1yrKxLsBL1VTb3tFR94oWOrGaHMkYGKDQ1ruM9PPbm7bSMbTFY0uSnIGE6/hQeIHXYePlseRaJog==
"@salesforce/source-deploy-retrieve@^4.4.5":
version "4.4.5"
resolved "https://registry.npmjs.org/@salesforce/source-deploy-retrieve/-/source-deploy-retrieve-4.4.5.tgz#1eae2b0576f8be3b0e7529588df4d4bfe8be7d7e"
integrity sha512-VOlfBcJOibAHBww0z/8gIX3G8DV7HU2Dyvz2nsM3Uo8D8CcTH0z+ocv7jc1jfxZhMl3Kn/a1do3Revqc21bdHw==
dependencies:
"@salesforce/core" "2.25.1"
"@salesforce/kit" "^1.5.0"
"@salesforce/ts-types" "^1.4.2"
archiver "^5.3.0"
fast-xml-parser "^3.17.4"
gitignore-parser "0.0.2"
ignore "^5.1.8"
mime "2.4.6"
unzipper "0.10.11"
Expand Down

0 comments on commit bacee13

Please sign in to comment.