@@ -5,10 +5,11 @@ const expect = require('chai').expect;
5
5
const fs = require ( 'fs' ) ;
6
6
const path = require ( 'path' ) ;
7
7
const Registry = require ( 'ember-cli-preprocess-registry' ) ;
8
- const HTMLBarsInlinePrecompilePlugin = require ( 'babel-plugin-htmlbars-inline-precompile' ) ;
8
+ const HTMLBarsInlinePrecompilePlugin = require . resolve ( 'babel-plugin-htmlbars-inline-precompile' ) ;
9
9
const hashForDep = require ( 'hash-for-dep' ) ;
10
10
const pluginHashForDep = hashForDep ( path . resolve ( __dirname , './fixtures' ) ) ;
11
11
const InlinePrecompile = require ( '../' ) ;
12
+ const defaultsDeep = require ( 'ember-cli-lodash-subset' ) . defaultsDeep ;
12
13
13
14
describe ( 'canParallelize()' , function ( ) {
14
15
it ( 'returns true for 0 plugins' , function ( ) {
@@ -257,4 +258,38 @@ describe('included()', function() {
257
258
expect ( cacheKey ) . to . equal ( expectedCacheKey ) ;
258
259
} ) ;
259
260
} ) ;
261
+
262
+ describe ( 'different instances of inline precompile for the same parent' , function ( ) {
263
+ it ( 'should have only 1 inlinePrecompile registered for parallel babel' , function ( ) {
264
+ let InlinePrecompile1 = defaultsDeep ( { } , require ( '../' ) )
265
+ let InlinePrecompile2 = defaultsDeep ( { } , require ( '../' ) )
266
+ parent = { options : { babel : { plugins : [ ] } } } ;
267
+ InlinePrecompile1 . parent = parent ;
268
+ InlinePrecompile2 . parent = parent ;
269
+
270
+ InlinePrecompile1 . included ( ) ;
271
+ configuredPlugins = parent . options . babel . plugins ;
272
+ expect ( configuredPlugins . length ) . to . eql ( 1 ) ;
273
+ InlinePrecompile2 . included ( ) ;
274
+ configuredPlugins = parent . options . babel . plugins ;
275
+ expect ( configuredPlugins . length ) . to . eql ( 1 ) ;
276
+ } ) ;
277
+
278
+ it ( 'should have only 1 inlinePrecompile registered for non parallel babel' , function ( ) {
279
+ registry . add ( 'htmlbars-ast-plugin' , nonParallelPlugin ) ;
280
+ let InlinePrecompile1 = defaultsDeep ( { } , require ( '../' ) )
281
+ let InlinePrecompile2 = defaultsDeep ( { } , require ( '../' ) )
282
+ parent = { options : { babel : { plugins : [ ] } } } ;
283
+ InlinePrecompile1 . parent = parent ;
284
+ InlinePrecompile2 . parent = parent ;
285
+
286
+ InlinePrecompile1 . included ( ) ;
287
+ configuredPlugins = parent . options . babel . plugins ;
288
+ expect ( configuredPlugins . length ) . to . eql ( 1 ) ;
289
+ InlinePrecompile2 . included ( ) ;
290
+ configuredPlugins = parent . options . babel . plugins ;
291
+ expect ( configuredPlugins . length ) . to . eql ( 1 ) ;
292
+ } ) ;
293
+
294
+ } ) ;
260
295
} ) ;
0 commit comments