Created
July 18, 2017 22:27
-
-
Save joeeames/b8f527be6db57fa2d5a660843add1408 to your computer and use it in GitHub Desktop.
the final test shim
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// /*global jasmine, __karma__, window*/ | |
Error.stackTraceLimit = 0; // "No stacktrace"" is usually best for app testing. | |
// Uncomment to get full stacktrace output. Sometimes helpful, usually not. | |
// Error.stackTraceLimit = Infinity; // | |
jasmine.DEFAULT_TIMEOUT_INTERVAL = 1000; | |
var builtPath = '/base/public/app/'; | |
__karma__.loaded = function () { }; | |
function isJsFile(path) { | |
return path.slice(-3) == '.js'; | |
} | |
function isSpecFile(path) { | |
return /\.spec\.(.*\.)?js$/.test(path); | |
} | |
function isBuiltFile(path) { | |
return isJsFile(path) && (path.substr(0, builtPath.length) == builtPath); | |
} | |
var allSpecFiles = Object.keys(window.__karma__.files) | |
.filter(isSpecFile) | |
.filter(isBuiltFile) | |
.map(modifySpecFilePath); | |
function modifySpecFilePath(moduleName) { | |
return 'testapp/' + moduleName.substr(17) | |
} | |
System.config({ | |
baseURL: '/base', | |
// Extend usual application package list with test folder | |
packages: { | |
'testing': { main: 'index.js', defaultExtension: 'js' }, | |
testapp: { | |
main: 'main.js', | |
defaultExtension: 'js', | |
meta: { | |
'./*.js': { | |
loader: 'public/systemjs-angular-loader.js' | |
} | |
} | |
} | |
}, | |
// Assume npm: is set in `paths` in systemjs.config | |
// Map the angular testing umd bundles | |
map: { | |
'testapp': 'public/app', | |
'@angular/core/testing': 'npm:@angular/core/bundles/core-testing.umd.js', | |
'@angular/common/testing': 'npm:@angular/common/bundles/common-testing.umd.js', | |
'@angular/compiler/testing': 'npm:@angular/compiler/bundles/compiler-testing.umd.js', | |
'@angular/platform-browser/testing': 'npm:@angular/platform-browser/bundles/platform-browser-testing.umd.js', | |
'@angular/platform-browser-dynamic/testing': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic-testing.umd.js', | |
'@angular/http/testing': 'npm:@angular/http/bundles/http-testing.umd.js', | |
'@angular/router/testing': 'npm:@angular/router/bundles/router-testing.umd.js', | |
'@angular/forms/testing': 'npm:@angular/forms/bundles/forms-testing.umd.js', | |
}, | |
}); | |
System.import('public/systemjs.config.js') | |
.then(importSystemJsExtras) | |
.then(initTestBed) | |
.then(initTesting); | |
/** Optional SystemJS configuration extras. Keep going w/o it */ | |
function importSystemJsExtras(){ | |
return System.import('systemjs.config.extras.js') | |
.catch(function(reason) { | |
console.log( | |
'Warning: System.import could not load the optional "systemjs.config.extras.js". Did you omit it by accident? Continuing without it.' | |
); | |
console.log(reason); | |
}); | |
} | |
function initTestBed(){ | |
return Promise.all([ | |
System.import('@angular/core/testing'), | |
System.import('@angular/platform-browser-dynamic/testing') | |
]) | |
.then(function (providers) { | |
var coreTesting = providers[0]; | |
var browserTesting = providers[1]; | |
coreTesting.TestBed.initTestEnvironment( | |
browserTesting.BrowserDynamicTestingModule, | |
browserTesting.platformBrowserDynamicTesting()); | |
}) | |
} | |
// Import all spec files and start karma | |
function initTesting () { | |
return Promise.all( | |
allSpecFiles.map(function (moduleName) { | |
console.log(moduleName); | |
return System.import(moduleName); | |
}) | |
) | |
.then(__karma__.start, __karma__.error); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment