Skip to content

Commit

Permalink
unit test working woo
Browse files Browse the repository at this point in the history
  • Loading branch information
lathonez committed Dec 20, 2015
1 parent 967461b commit 04a1028
Show file tree
Hide file tree
Showing 10 changed files with 207 additions and 113 deletions.
21 changes: 0 additions & 21 deletions bower.json

This file was deleted.

5 changes: 3 additions & 2 deletions gulpfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -55,9 +55,10 @@ gulp.task('build:typescript', function () {
/**
* This task runs the test cases using karma.
*/
gulp.task('test', ['build:typescript'], function (done) {
gulp.task('test', ['build:typescript'], function(done) {
new Server({
configFile: __dirname + '/www/test/karma.config.js',
configFile: __dirname + '/karma.config.js',
singleRun: true
}, done).start();
});

Expand Down
105 changes: 105 additions & 0 deletions karma.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
// Karma configuration
// Generated on Wed Jul 15 2015 09:44:02 GMT+0200 (Romance Daylight Time)
'use strict';

module.exports = function(config) {
config.set({

// base path that will be used to resolve all patterns (eg. files, exclude)
basePath: './',


// frameworks to use
// available frameworks: https://npmjs.org/browse/keyword/karma-adapter
frameworks: ['jasmine'],


// list of files / patterns to load in the browser
files: [
'node_modules/zone.js/dist/zone-microtask.js',
'node_modules/zone.js/dist/long-stack-trace-zone.js',
'node_modules/zone.js/dist/jasmine-patch.js',
'node_modules/es6-module-loader/dist/es6-module-loader.js',
'node_modules/traceur/bin/traceur-runtime.js', // Required by PhantomJS2, otherwise it shouts ReferenceError: Can't find variable: require
'node_modules/traceur/bin/traceur.js',
'node_modules/systemjs/dist/system.src.js',
'node_modules/reflect-metadata/Reflect.js',

{ pattern: 'node_modules/angular2/**/*.js', included: false, watched: false },
{ pattern: 'node_modules/ionic-framework/*.js', included: false, watched: false },
{ pattern: 'node_modules/ionic-framework/**/*.js', included: false, watched: false },
{ pattern: 'node_modules/rxjs/**/*.js', included: false, watched: false },
{ pattern: 'www/build/test/**/*.js', included: false, watched: true },
{ pattern: 'node_modules/systemjs/dist/system-polyfills.js', included: false, watched: false }, // PhantomJS2 (and possibly others) might require it

'test-main.js'
],


// list of files to exclude
exclude: [
'node_modules/angular2/**/*_spec.js',
'node_modules/ionic-framework/**/*spec*'
],


// preprocess matching files before serving them to the browser
// available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
preprocessors: {
},


// test results reporter to use
// possible values: 'dots', 'progress'
// available reporters: https://npmjs.org/browse/keyword/karma-reporter
reporters: ['mocha'],


// web server port
port: 9876,


// enable / disable colors in the output (reporters and logs)
colors: true,


// level of logging
// possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
logLevel: config.LOG_INFO,


// enable / disable watching file and executing tests whenever any file changes
autoWatch: true,


// start these browsers
// available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
browsers: [
'PhantomJS2'
],


customLaunchers: {
Chrome_travis_ci: {
base: 'Chrome',
flags: ['--no-sandbox']
}
},


// Continuous Integration mode
// if true, Karma captures browsers, runs the tests and exits
singleRun: false
});

if (process.env.APPVEYOR) {
config.browsers = ['IE'];
config.singleRun = true;
config.browserNoActivityTimeout = 90000; // Note: default value (10000) is not enough
}

if (process.env.TRAVIS || process.env.CIRCLECI) {
config.browsers = ['Chrome_travis_ci'];
config.singleRun = true;
}
};
11 changes: 10 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,16 @@
"es6-promise": "3.0.2",
"es6-shim": "0.33.13",
"ionic-framework": "2.0.0-alpha.42",
"karma-es5-shim": "0.0.4",
"karma-requirejs": "^0.2.2",
"reflect-metadata": "0.1.2",
"rxjs": "5.0.0-alpha.14",
"zone.js": "0.5.8"
},
"devDependencies": {
"awesome-typescript-loader": "^0.15.9",
"del": "^2.2.0",
"es6-module-loader": "^0.17.9",
"gulp": "^3.9.0",
"gulp-autoprefixer": "^3.1.0",
"gulp-concat": "^2.6.0",
Expand All @@ -23,13 +26,19 @@
"karma-coverage": "^0.5.3",
"karma-jasmine": "^0.3.6",
"karma-phantomjs-launcher": "^0.2.1",
"karma-systemjs": "^0.10.0",
"phantomjs": "^1.9.19",
"phantomjs-polyfill": "0.0.1",
"requirejs": "^2.1.22",
"strip-sourcemap-loader": "0.0.1",
"systemjs": "^0.19.8",
"traceur": "0.0.93",
"tslint-eslint-rules": "^1.0.1",
"typescript": "^1.7.3"
},
"name": "clicker",
"description": "clicker: An Ionic project"
"description": "clicker: An Ionic project",
"scripts": {
"test": "gulp test"
}
}
56 changes: 56 additions & 0 deletions test-main.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
// Turn on full stack traces in errors to help debugging
Error.stackTraceLimit=Infinity;

jasmine.DEFAULT_TIMEOUT_INTERVAL = 100;

// Cancel Karma's synchronous start,
// we will call `__karma__.start()` later, once all the specs are loaded.
__karma__.loaded = function() {};

System.config({
baseURL: '/base/',
defaultJSExtensions: true,
paths: {
'ionic/*': 'node_modules/ionic-framework/*.js',
'ionic-framework/*': 'node_modules/ionic-framework/*.js',
'angular2/*': 'node_modules/angular2/*.js',
'rxjs/*': 'node_modules/rxjs/*.js'
}
});

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(file2moduleName)
.map(function(path) {
return System.import(path).then(function(module) {
if (module.hasOwnProperty('main')) {
module.main();
} else {
console.log('MODULE: ' + path);
throw new Error('Module ' + path + ' does not implement main() method.');
}
});
}));
})
.then(function() {
__karma__.start();
}, function(error) {
console.error(error.stack || error);
__karma__.start();
});


function onlySpecFiles(path) {
return /[\.|_]spec\.js$/.test(path);
}

// Normalize paths to module names.
function file2moduleName(filePath) {
return filePath.replace(/\\/g, '/')
.replace(/^\/base\//, '')
.replace(/\.js/, '');
}
20 changes: 14 additions & 6 deletions www/jasmine.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,16 @@
<script src="../node_modules/jasmine-core/lib/jasmine-core/jasmine-html.js"></script>
<script src="../node_modules/jasmine-core/lib/jasmine-core/boot.js"></script>
<script src="../node_modules/systemjs/dist/system.src.js"></script>
<script src="../node_modules/ionic-framework/node_modules/angular2/bundles/router.dev.js"></script>
<script src="../node_modules/ionic-framework/node_modules/angular2/bundles/http.dev.js"></script>
<script src="../node_modules/ionic-framework/node_modules/angular2/bundles/angular2.dev.js"></script>
<script src="../node_modules/ionic-framework/dist/js/ionic.js"></script>
<script src="build/js/app.bundle.js"></script>

<!--
<script src="../node_modules/angular2/bundles/angular2.dev.js"></script>
<script src="../node_modules/requirejs/require.js"></script>
<script src="../node_modules/angular2/bundles/router.dev.js"></script>
<script src="../node_modules/angular2/bundles/http.dev.js"></script> -->
<!--<script src="../bower_components/angular/angular.js"></script>
<script src="../bower_components/angular-mocks/angular-mocks.js"></script> -->
</head>
<body>
<!-- #1. add the system.js library -->
Expand All @@ -24,8 +30,10 @@

// #3. Import the spec files explicitly
Promise.all([
System.import('app/test/services/clickers.spec'),
System.import('app/test/models/clicker.spec'),
//System.import('angular2/angular2'),
//System.import('ionic-framework/ionic')
System.import('test/services/clickers.spec'),
//System.import('test/models/clicker.spec'),
])

// #4. wait for all imports to load ...
Expand Down
48 changes: 0 additions & 48 deletions www/test/karma.config.js

This file was deleted.

13 changes: 8 additions & 5 deletions www/test/models/clicker.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,12 @@

import { Clicker } from '../../app/models/clicker';

describe('Clicker', () => {
it('is called testClicker', () => {
let clicker = new Clicker('12434', 'testClicker');
expect(clicker.name).toEqual('testClicker');
export function main() {
describe('Clicker', () => {
it('is called testClicker', () => {
let clicker = new Clicker('12434', 'testClicker');
expect(clicker.name).toEqual('testClicker');
});
});
});
}

22 changes: 11 additions & 11 deletions www/test/services/clickers.spec.ts
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
///<reference path="../../../node_modules/reflect-metadata/reflect-metadata.d.ts"/>
'use strict';

import 'reflect-metadata';
import { Clickers } from '../../app/services/clickers';

describe('Clickers', () => {
it('initialises with empty clickers', () => {
let clickers = new Clickers();
expect(clickers.clickers).toEqual([]);
});
export function main() {
describe('Clickers', () => {
it('initialises with empty clickers', () => {
let clickers = new Clickers();
expect(clickers.clickers).toEqual([]);
});

it('returns undefined for a bad id', () => {
let clickers = new Clickers();
expect(clickers.getClicker('1234')).not.toBeDefined();
it('returns undefined for a bad id', () => {
let clickers = new Clickers();
expect(clickers.getClicker('1234')).not.toBeDefined();
});
});
});
};
19 changes: 0 additions & 19 deletions www/test/system.config.js

This file was deleted.

0 comments on commit 04a1028

Please sign in to comment.