diff --git a/public/docs/_examples/karma-test-shim.js b/public/docs/_examples/karma-test-shim.js index 6537c00244..8ccb27a727 100644 --- a/public/docs/_examples/karma-test-shim.js +++ b/public/docs/_examples/karma-test-shim.js @@ -1 +1,68 @@ -// PLACEHOLDER UNTIL JAY PROVIDES THE REAL ONE \ No newline at end of file +// Tun on full stack traces in errors to help debugging +Error.stackTraceLimit=Infinity; + + +jasmine.DEFAULT_TIMEOUT_INTERVAL = 1000; + +// // Cancel Karma's synchronous start, +// // we will call `__karma__.start()` later, once all the specs are loaded. +__karma__.loaded = function() {}; + + +System.config({ + packages: { + 'base/app': { + defaultExtension: false, + // removed because of issues with raw .js files not being found. + // format: 'register', + map: Object.keys(window.__karma__.files). + filter(onlyAppFiles). + reduce(function createPathRecords(pathsMapping, appPath) { + // creates local module name mapping to global path with karma's fingerprint in path, e.g.: + // './hero.service': '/base/src/app/hero.service.js?f4523daf879cfb7310ef6242682ccf10b2041b3e' + var moduleName = appPath.replace(/^\/base\/app\//, './').replace(/\.js$/, ''); + pathsMapping[moduleName] = appPath + '?' + window.__karma__.files[appPath] + return pathsMapping; + }, {}) + + } + } +}); + +// old code from angular 44 +// System.import('angular2/src/core/dom/browser_adapter').then(function(browser_adapter) { +// new path for angular 51 +System.import('angular2/src/platform/browser/browser_adapter').then(function(browser_adapter) { + browser_adapter.BrowserDomAdapter.makeCurrent(); +}).then(function() { + return Promise.all( + Object.keys(window.__karma__.files) // All files served by Karma. + .filter(onlySpecFiles) + // .map(filePath2moduleName) // Normalize paths to module names. + .map(function(moduleName) { + // loads all spec files via their global module names (e.g. 'base/src/app/hero.service.spec') + return System.import(moduleName); + })); +}) +.then(function() { + __karma__.start(); +}, function(error) { + __karma__.error(error.stack || error); +}); + + +function filePath2moduleName(filePath) { + return filePath. + replace(/^\//, ''). // remove / prefix + replace(/\.\w+$/, ''); // remove suffix +} + + +function onlyAppFiles(filePath) { + return /^\/base\/app\/.*\.js$/.test(filePath) && !onlySpecFiles(filePath); +} + + +function onlySpecFiles(filePath) { + return /\.spec\.js$/.test(filePath); +} diff --git a/public/docs/_examples/karma.conf.js b/public/docs/_examples/karma.conf.js index 9ec7a2f6dc..5b07bee380 100644 --- a/public/docs/_examples/karma.conf.js +++ b/public/docs/_examples/karma.conf.js @@ -11,25 +11,25 @@ module.exports = function(config) { {pattern: 'node_modules/angular2/bundles/angular2.js', included: true, watched: true}, {pattern: 'node_modules/angular2/bundles/testing.js', included: true, watched: true}, {pattern: 'karma-test-shim.js', included: true, watched: true}, - {pattern: 'src/test/matchers.js', included: true, watched: true}, + {pattern: 'app/test/*.js', included: true, watched: true}, // paths loaded via module imports - {pattern: 'src/**/*.js', included: false, watched: true}, + {pattern: 'app/**/*.js', included: false, watched: true}, // paths loaded via Angular's component compiler // (these paths need to be rewritten, see proxies section) - {pattern: 'src/**/*.html', included: false, watched: true}, - {pattern: 'src/**/*.css', included: false, watched: true}, + {pattern: 'app/**/*.html', included: false, watched: true}, + {pattern: 'app/**/*.css', included: false, watched: true}, // paths to support debugging with source maps in dev tools - {pattern: 'src/**/*.ts', included: false, watched: false}, - {pattern: 'src/**/*.js.map', included: false, watched: false} + {pattern: 'app/**/*.ts', included: false, watched: false}, + {pattern: 'app/**/*.js.map', included: false, watched: false} ], // proxied base paths proxies: { // required for component assests fetched by Angular's compiler - "/app/": "/base/src/app/" + "/app/": "/base/app/" }, reporters: ['progress'], diff --git a/public/docs/_examples/package.json b/public/docs/_examples/package.json index 8b6dd7e376..84a62126d2 100644 --- a/public/docs/_examples/package.json +++ b/public/docs/_examples/package.json @@ -17,7 +17,7 @@ "author": "", "license": "ISC", "dependencies": { - "angular2": "2.0.0-alpha.52", + "angular2": "2.0.0-alpha.53", "systemjs": "0.19.6", "es6-promise": "^3.0.2", "es6-shim": "^0.33.3", diff --git a/public/docs/_examples/quickstart/ts/app/app.spec.ts b/public/docs/_examples/quickstart/ts/app/app.component.spec.ts similarity index 93% rename from public/docs/_examples/quickstart/ts/app/app.spec.ts rename to public/docs/_examples/quickstart/ts/app/app.component.spec.ts index d97bcb35cb..ec2cfce0cf 100644 --- a/public/docs/_examples/quickstart/ts/app/app.spec.ts +++ b/public/docs/_examples/quickstart/ts/app/app.component.spec.ts @@ -1,6 +1,6 @@ import { iit,it, ddescribe, describe, expect, injectAsync, TestComponentBuilder, beforeEachProviders } from 'angular2/testing'; import { provide, Type } from 'angular2/core'; -import { AppComponent } from './app'; +import { AppComponent } from './app.component'; type TCB = TestComponentBuilder; diff --git a/public/docs/_examples/quickstart/ts/app/test/matchers.ts b/public/docs/_examples/quickstart/ts/app/test/matchers.ts new file mode 100644 index 0000000000..308aafbbe3 --- /dev/null +++ b/public/docs/_examples/quickstart/ts/app/test/matchers.ts @@ -0,0 +1,15 @@ +beforeEach(() => { + jasmine.addMatchers({ + toContainText: function() { + return { + compare: function(actual: any, expectedText: string) { + var actualText = actual.textContent; + return { + pass: actualText.indexOf(expectedText) > -1, + get message() { return 'Expected ' + actualText + ' to contain ' + expectedText; } + }; + } + }; + } + }); +}); diff --git a/tools/plunker-builder/plunkerBuilder.js b/tools/plunker-builder/plunkerBuilder.js index dc4a736cc9..aa3e81167b 100644 --- a/tools/plunker-builder/plunkerBuilder.js +++ b/tools/plunker-builder/plunkerBuilder.js @@ -95,7 +95,7 @@ function initConfigAndCollectFileNames(configFileName) { } }); // var defaultExcludes = [ '!**/node_modules/**','!**/typings/**','!**/tsconfig.json', '!**/*plnkr.json', '!**/*plnkr.html', '!**/*plnkr.no-link.html' ]; - var defaultExcludes = [ '!**/typings/**','!**/tsconfig.json', '!**/*plnkr.json', '!**/*plnkr.html', '!**/*plnkr.no-link.html', '!**/package.json' ]; + var defaultExcludes = [ '!**/typings/**','!**/tsconfig.json', '!**/*plnkr.json', '!**/*plnkr.html', '!**/*plnkr.no-link.html', '!**/package.json', '!**/example-config.json' ]; Array.prototype.push.apply(gpaths, defaultExcludes); config.fileNames = globby.sync(gpaths, { ignore: ["**/node_modules/**"] });