Skip to content

Commit d3983cf

Browse files
committed
fix: adds tests for generate manifest
1 parent d79dbd5 commit d3983cf

File tree

1 file changed

+85
-0
lines changed

1 file changed

+85
-0
lines changed

test/nuts/manifest/manifestCreate.nut.ts

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,4 +204,89 @@ describe('project generate manifest', () => {
204204
expect(manifest2).to.equal(manifest3);
205205
});
206206
});
207+
208+
describe('filtering combinations', () => {
209+
let projectSubDir: string;
210+
before(async () => {
211+
// Add some other directories with apex classes
212+
projectSubDir = join(session.project.dir, 'force-app', 'core');
213+
const projectSubDirClasses = join(projectSubDir, 'classes');
214+
fs.mkdirSync(projectSubDirClasses, { recursive: true });
215+
fs.writeFileSync(join(projectSubDirClasses, 'ManifestCreateNut.cls'), 'empty cls');
216+
fs.writeFileSync(join(projectSubDirClasses, 'ManifestCreateNut.cls-meta.xml'), '<empty cls meta/>');
217+
});
218+
219+
it('should produce a manifest from --source-dir and specific --metadata', () => {
220+
const combo1 = 'srcDirAndMetadata-package.xml';
221+
const forceAppMainDir = join(session.project.dir, 'force-app', 'main');
222+
const result = execCmd<Dictionary>(
223+
`project generate manifest --source-dir ${forceAppMainDir} --metadata ApexClass:FileUtilities --name ${combo1} --json`,
224+
{
225+
ensureExitCode: 0,
226+
}
227+
).jsonOutput?.result;
228+
expect(result).to.be.ok;
229+
expect(result).to.include({ path: combo1, name: combo1 });
230+
const manifestContents = fs.readFileSync(join(session.project.dir, combo1), 'utf-8');
231+
const expectedApexClasses = `<types>
232+
<members>FileUtilities</members>
233+
<name>ApexClass</name>
234+
</types>`;
235+
expect(manifestContents).to.include(expectedApexClasses);
236+
expect(manifestContents).to.not.include('<members>ManifestCreateNut</members>');
237+
expect(manifestContents).to.not.include('<members>PagedResult</members>');
238+
});
239+
240+
it('should produce a manifest from --source-dir and wildcard --metadata', () => {
241+
const combo1 = 'srcDirAndMetadata-package.xml';
242+
const forceAppMainDir = join(session.project.dir, 'force-app', 'main');
243+
const result = execCmd<Dictionary>(
244+
`project generate manifest --source-dir ${forceAppMainDir} --metadata ApexClass --name ${combo1} --json`,
245+
{
246+
ensureExitCode: 0,
247+
}
248+
).jsonOutput?.result;
249+
expect(result).to.be.ok;
250+
expect(result).to.include({ path: combo1, name: combo1 });
251+
const manifestContents = fs.readFileSync(join(session.project.dir, combo1), 'utf-8');
252+
expect(manifestContents).to.not.include('<name>AuraDefinitionBundle</name>');
253+
expect(manifestContents).to.not.include('<members>ManifestCreateNut</members>');
254+
expect(manifestContents).to.include('<members>PagedResult</members>');
255+
});
256+
257+
it('should produce a manifest from --source-dir and specific --excluded-metadata', () => {
258+
const combo3 = 'srcDirAndExcMetadata3-package.xml';
259+
const forceAppMainDir = join(session.project.dir, 'force-app', 'main');
260+
const result = execCmd<Dictionary>(
261+
`project generate manifest --source-dir ${forceAppMainDir} --excluded-metadata ApexClass:FileUtilities --name ${combo3} --json`,
262+
{
263+
ensureExitCode: 0,
264+
}
265+
).jsonOutput?.result;
266+
expect(result).to.be.ok;
267+
expect(result).to.include({ path: combo3, name: combo3 });
268+
const manifestContents = fs.readFileSync(join(session.project.dir, combo3), 'utf-8');
269+
expect(manifestContents).to.not.include('<members>ManifestCreateNut</members>');
270+
expect(manifestContents).to.not.include('<members>FileUtilities</members>');
271+
expect(manifestContents).to.include('<members>PagedResult</members>');
272+
});
273+
274+
it('should produce a manifest from --source-dir and wildcard --excluded-metadata', () => {
275+
const combo4 = 'srcDirAndExcMetadata4-package.xml';
276+
const forceAppMainDir = join(session.project.dir, 'force-app', 'main');
277+
const result = execCmd<Dictionary>(
278+
`project generate manifest --source-dir ${forceAppMainDir} --excluded-metadata ApexClass --name ${combo4} --json`,
279+
{
280+
ensureExitCode: 0,
281+
}
282+
).jsonOutput?.result;
283+
expect(result).to.be.ok;
284+
expect(result).to.include({ path: combo4, name: combo4 });
285+
const manifestContents = fs.readFileSync(join(session.project.dir, combo4), 'utf-8');
286+
expect(manifestContents).to.not.include('<members>ManifestCreateNut</members>');
287+
expect(manifestContents).to.not.include('<members>FileUtilities</members>');
288+
expect(manifestContents).to.not.include('<name>ApexClass</name>');
289+
expect(manifestContents).to.include('<name>AuraDefinitionBundle</name>');
290+
});
291+
});
207292
});

0 commit comments

Comments
 (0)