@@ -54,6 +54,7 @@ module('loader.js api', {
5454test ( 'has api' , function ( ) {
5555 equal ( typeof loader , 'object' ) ;
5656 equal ( typeof loader . noConflict , 'function' ) ;
57+ equal ( typeof loader . makeDefaultExport , 'boolean' ) ;
5758 equal ( typeof require , 'function' ) ;
5859 equal ( typeof define , 'function' ) ;
5960 strictEqual ( define . amd , undefined ) ;
@@ -403,6 +404,89 @@ test('deep nested relative import/export', function() {
403404 } ) ;
404405} ) ;
405406
407+ test ( 'assigns default when makeDefaultExport option enabled' , function ( ) {
408+ equal ( loader . makeDefaultExport , true ) ;
409+
410+ var theObject = { } ;
411+ define ( 'foo' , [ 'require' , 'exports' , 'module' ] , function ( ) {
412+ return theObject ;
413+ } ) ;
414+ ok ( ( 'default' in require ( 'foo' ) ) ) ;
415+ equal ( require ( 'foo' ) , theObject ) ;
416+ equal ( theObject . default , theObject ) ;
417+
418+ var stats = statsForMonitor ( 'loaderjs' , tree ) ;
419+
420+ deepEqual ( stats , {
421+ findDeps : 1 ,
422+ define : 1 ,
423+ exports : 1 ,
424+ findModule : 2 ,
425+ modules : 1 ,
426+ reify : 1 ,
427+ require : 2 ,
428+ resolve : 0 ,
429+ resolveRelative : 0 ,
430+ pendingQueueLength : 1
431+ } ) ;
432+ } ) ;
433+
434+ test ( 'doesn\'t assign default when makeDefaultExport option is disabled' , function ( ) {
435+ var _loaderMakeDefaultExport = loader . makeDefaultExport ;
436+ loader . makeDefaultExport = false ;
437+ var theObject = { } ;
438+ define ( 'foo' , [ 'require' , 'exports' , 'module' ] , function ( ) {
439+ return theObject ;
440+ } ) ;
441+ ok ( ! ( 'default' in require ( 'foo' ) ) ) ;
442+ deepEqual ( require ( 'foo' ) , { } ) ;
443+
444+ var stats = statsForMonitor ( 'loaderjs' , tree ) ;
445+
446+ deepEqual ( stats , {
447+ findDeps : 1 ,
448+ define : 1 ,
449+ exports : 1 ,
450+ findModule : 2 ,
451+ modules : 1 ,
452+ reify : 1 ,
453+ require : 2 ,
454+ resolve : 0 ,
455+ resolveRelative : 0 ,
456+ pendingQueueLength : 1
457+ } ) ;
458+
459+ // clean up
460+ loader . makeDefaultExport = _loaderMakeDefaultExport ;
461+ } ) ;
462+
463+ test ( 'doesn\'t assign default when makeDefaultExport option is enabled and default is already defined' , function ( ) {
464+ equal ( loader . makeDefaultExport , true ) ;
465+
466+ var theObject = { default : 'bar' } ;
467+ define ( 'foo' , [ 'require' , 'exports' , 'module' ] , function ( ) {
468+ return theObject ;
469+ } ) ;
470+ ok ( ( 'default' in require ( 'foo' ) ) ) ;
471+ equal ( require ( 'foo' ) . default , 'bar' ) ;
472+ deepEqual ( require ( 'foo' ) , { default : 'bar' } ) ;
473+
474+ var stats = statsForMonitor ( 'loaderjs' , tree ) ;
475+
476+ deepEqual ( stats , {
477+ findDeps : 1 ,
478+ define : 1 ,
479+ exports : 1 ,
480+ findModule : 3 ,
481+ modules : 1 ,
482+ reify : 1 ,
483+ require : 3 ,
484+ resolve : 0 ,
485+ resolveRelative : 0 ,
486+ pendingQueueLength : 1
487+ } ) ;
488+ } ) ;
489+
406490test ( 'incorrect lookup paths should fail' , function ( ) {
407491
408492 define ( 'foo/isolated-container' , [ ] , function ( ) {
0 commit comments