@@ -204,4 +204,89 @@ describe('project generate manifest', () => {
204
204
expect ( manifest2 ) . to . equal ( manifest3 ) ;
205
205
} ) ;
206
206
} ) ;
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
+ } ) ;
207
292
} ) ;
0 commit comments