diff --git a/bower.json b/bower.json index dd13ced..a3e5ce1 100644 --- a/bower.json +++ b/bower.json @@ -30,7 +30,7 @@ "animate.css": "^3.5.2", "angular-material-icons": "~0.7.1", "underscore": "^1.8.3", - "angular-translate": "^2.13.0", + "angular-translate": "^2.13.0", "angular-translate-loader-static-files": "^2.13.0" }, "install": { diff --git a/gulpfile.js b/gulpfile.js index aae4377..8d1b4e6 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -5,7 +5,8 @@ var batch = require('gulp-batch'), gulp = require('gulp'), inject = require('gulp-inject'), server = require('gulp-server-livereload'), - watch = require('gulp-watch'); + watch = require('gulp-watch'), + karma = require('karma').server; gulp.task('server', ['watch', 'index'], function() { @@ -57,3 +58,10 @@ gulp.task('index', function () { return target.pipe(inject(sources, {ignorePath: 'source'})) .pipe(gulp.dest('./source')); }); + +gulp.task('tests', function (done) { + return karma.start({ + configFile: __dirname + '/karma.conf.js', + singleRun: true + }, done); +}); diff --git a/karma.conf.js b/karma.conf.js new file mode 100644 index 0000000..d90a86c --- /dev/null +++ b/karma.conf.js @@ -0,0 +1,86 @@ +// Karma configuration +// Generated on Tue Nov 15 2016 08:03:59 GMT-0500 (PET) + +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: [ + "./source/js/lib/angular/angular.js", + "./source/js/lib/angular-animate/angular-animate.js", + "./source/js/lib/angular-material/angular-material.js", + "./source/js/lib/angular-aria/angular-aria.js", + "./source/js/lib/angular-material-icons/angular-material-icons.min.js", + "./source/js/lib/angular-messages/angular-messages.js", + "./source/js/lib/angular-resource/angular-resource.js", + "./source/js/lib/angular-route/angular-route.js", + "./source/js/lib/angular-sanitize/angular-sanitize.js", + "./source/js/lib/angular-translate/angular-translate.js", + "./source/js/lib/angular-translate-loader-static-files/angular-translate-loader-static-files.js", + "./source/js/lib/angular-ui-router/angular-ui-router.js", + "./source/js/lib/ngstorage/ngStorage.js", + "./source/js/lib/underscore/underscore.js", + "./node_modules/angular-mocks/angular-mocks.js", + "./source/js/app/module/*.js", + "./source/js/app/**/*.js", + "./source/js/app/config/test/controller/login.ctrl.spec.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, + + // Concurrency level + // how many browser should be started simultaneous + concurrency: Infinity + }) +} diff --git a/package.json b/package.json index 305a471..1f318f8 100644 --- a/package.json +++ b/package.json @@ -1,4 +1,3 @@ - { "name": "belatrix-web-connect", "version": "0.0.1", @@ -26,5 +25,14 @@ "gulp-inject": "^4.1.0", "gulp-server-livereload": "^1.8.2", "gulp-watch": "^4.3.9" + }, + "devDependencies": { + "angular-mocks": "^1.x.x", + "jasmine-core": "^2.5.2", + "jasmine-jquery": "^2.1.1", + "karma": "^1.3.0", + "karma-chrome-launcher": "^2.0.0", + "karma-jasmine": "^1.0.2", + "karma-junit-reporter": "^1.1.0" } } diff --git a/source/js/app/config/test/controller/login.ctrl.spec.js b/source/js/app/config/test/controller/login.ctrl.spec.js new file mode 100644 index 0000000..53b5765 --- /dev/null +++ b/source/js/app/config/test/controller/login.ctrl.spec.js @@ -0,0 +1,17 @@ +describe("Login controller tests", function() { + beforeEach(module('app')); + var loginController, scope, loginService; + beforeEach(inject(function ($rootScope, $controller, _loginService_) { + scope = $rootScope.$new(); + loginService = _loginService_; + loginController = $controller('controller.login', { + $scope: scope + }); + })); + + it("should sign in successfully", function() { + spyOn(loginService, 'signIn'); + scope.getSignIn(); + expect(loginService.signIn).toHaveBeenCalled(); + }); +}); \ No newline at end of file