Simon Hunt

GUI - Angular:: added angular-mocks.js to tp lib.

- sample code plus sample unit test, and karma configuration file.

Change-Id: I0c5d867913c88e12eacd17934c6f42226b82410f
// Simple controller
angular.module('notesApp', [])
.controller('ListCtrl', [function () {
var self = this;
self.items = [
{id: 1, label: 'First', done: true},
{id: 2, label: 'Second', done: false}
];
self.getDoneClass = function (item) {
return {
finished: item.done,
unfinished: !item.done
};
};
}]);
This diff is collapsed. Click to expand it.
// Karma configuration
// Generated on Tue Dec 09 2014 10:41:03 GMT-0800 (PST)
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: [
'../../main/webapp/tp/angular.min.js',
'../../main/webapp/tp/angular-mocks.js',
'../../main/webapp/_sdh/ng-examples/js/*.js',
'../webapp/_sdh/ng-examples/js/*.js'
],
// list of files to exclude
exclude: [
],
// 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: ['progress'],
// 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: ['Chrome'],
// Continuous Integration mode
// if true, Karma captures browsers, runs the tests and exits
singleRun: false
});
};
// Jasmine unit tests for ch03-controller.js
describe('Controller: ListCtrl', function () {
// instantiate a new version of my module before each test
beforeEach(module('notesApp'));
var ctrl;
// before each unit test, instantiate a new instance of the controller
beforeEach(inject(function ($controller) {
ctrl = $controller('ListCtrl');
}));
it('should have items available on load', function () {
expect(ctrl.items).toEqual([
{id: 1, label: 'First', done: true},
{id: 2, label: 'Second', done: false}
]);
});
it('should have highlight items based on state', function () {
var item = {id: 1, label: 'First', done: true};
var actualClass = ctrl.getDoneClass(item);
expect(actualClass.finished).toBeTruthy();
expect(actualClass.unfinished).toBeFalsy();
item.done = false;
actualClass = ctrl.getDoneClass(item);
expect(actualClass.finished).toBeFalsy();
expect(actualClass.unfinished).toBeTruthy();
});
});
\ No newline at end of file