docker-registry-frontend/test/karma.conf.js
Marc Abramowitz ea2bcd55cd Make "npm test" run Karma tests (#140)
* Make "npm test" run Karma tests

Result is this:

```
$ npm test

> docker-registry-frontend@0.0.2 pretest /Users/marca/dev/git-repos/docker-registry-frontend_2
> npm install

> docker-registry-frontend@0.0.2 postinstall /Users/marca/dev/git-repos/docker-registry-frontend_2
> bower install

> docker-registry-frontend@0.0.2 test /Users/marca/dev/git-repos/docker-registry-frontend_2
> karma start test/karma.conf.js

09 07 2016 13:36:20.771:WARN [karma]: No captured browser, open http://localhost:8080/
09 07 2016 13:36:20.781:INFO [karma]: Karma v1.1.1 server started at http://localhost:8080/
09 07 2016 13:36:20.782:INFO [launcher]: Launching browser PhantomJS with unlimited concurrency
09 07 2016 13:36:20.788:INFO [launcher]: Starting browser PhantomJS
09 07 2016 13:36:21.250:INFO [PhantomJS 2.1.1 (Mac OS X 0.0.0)]: Connected on socket /#Z4MF21dfMgThOi3zAAAA with id 9538616
PhantomJS 2.1.1 (Mac OS X 0.0.0) Controller: MainCtrl should attach a list of awesomeThings to the scope FAILED
	forEach@bower_components/angular/angular.js:326:24
	loadModules@bower_components/angular/angular.js:4115:12
	createInjector@bower_components/angular/angular.js:4041:22
	workFn@bower_components/angular-mocks/angular-mocks.js:2464:60
	loaded@http://localhost:8080/context.js:151:17
	bower_components/angular/angular.js:4155:53
	TypeError: undefined is not an object (evaluating 'scope.awesomeThings') in test/spec/controllers/main.js (line 20)
	test/spec/controllers/main.js:20:17
	loaded@http://localhost:8080/context.js:151:17
PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.005 secs / 0.006 secs)
```

Fixes #139

* Make MainController tests work

This makes the `MainController` tests pass.

```
$ npm test

> docker-registry-frontend@0.0.2 pretest /Users/marca/dev/git-repos/docker-registry-frontend_2
> npm install

> docker-registry-frontend@0.0.2 postinstall /Users/marca/dev/git-repos/docker-registry-frontend_2
> bower install

> docker-registry-frontend@0.0.2 test /Users/marca/dev/git-repos/docker-registry-frontend_2
> karma start test/karma.conf.js

09 07 2016 17:06:59.974:WARN [karma]: No captured browser, open http://localhost:8080/
09 07 2016 17:06:59.986:INFO [karma]: Karma v1.1.1 server started at http://localhost:8080/
09 07 2016 17:06:59.986:INFO [launcher]: Launching browser PhantomJS with unlimited concurrency
09 07 2016 17:07:00.133:INFO [launcher]: Starting browser PhantomJS
09 07 2016 17:07:01.051:INFO [PhantomJS 2.1.1 (Mac OS X 0.0.0)]: Connected on socket /#6enEIdsugSVdKVioAAAA with id 62465837
PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 1 of 1 SUCCESS (0.004 secs / 0.024 secs)
```

* test/karma.conf.js: Add more files

E.g.:

  - angular-bootstrap,
  - angular-bootstrap-checkbox
  - angular-filter
  - angular-loading-bar
  - angular-moment
  - angular-smart-table

I also alphabetized the list to make it easier to check if something is
already included.

* test/karma.conf.js: Add 'dots' reporter

* Add app/app.spec.js

`app/app.spec.js` contains tests for various routes, which should be
very useful for finding and fixing routing bugs.

See:

  - #97
  - #100
  - #104
  - #121

* Enable junit and spec Karma reporters

* app/app.spec.js: Check scope attributes

* app/app.spec.js: Check scope.appMode

* test/spec/controllers/main.js: Check appVersion & registryHost

* MainController: use registry-services

In `MainController`, depend on the `registry-services` module instead of
the `registry-host-services` module.

* Remove app/services/registry-host-services.js

Remove `app/services/registry-host-services.js` because it seems to be
an older, unused version of `app/services/registry-services.js`

* repository-list-controller: Add dependencies

Specify that the `repository-list-controller` module depends on
`ngRoute` and `ui.bootstrap` modules.

Otherwise controller tests of this module fail.

* $scope.repositories = data;

In `repository-list-controller`, do:

    $scope.repositories = data;

in the promise callback. Otherwise, the new tests in
`app/repository/repository-list-controller.spec.js` fail.

This is because promises get resolved in templates but not in until
tests -- see
http://stackoverflow.com/questions/15048132/angularjs-promise-not-being-resolved-in-unit-test

* Add unit test for RepositoryListController

in `app/repository/repository-list-controller.spec.js`.

      RepositoryListController
        ✓ should attach some keys to the scope

* Gruntfile.js: Use DOCKER_REGISTRY_{HOST,PORT}

Use `DOCKER_REGISTRY_HOST` and `DOCKER_REGISTRY_PORT` environment
variables so that one can specify a custom Docker registry server while
developing, without hacking `Gruntfile.js`.
2016-07-19 08:41:24 +02:00

83 lines
2.4 KiB
JavaScript

// Karma configuration
// http://karma-runner.github.io/0.12/config/configuration-file.html
// Generated on 2014-09-12 using
// generator-karma 0.8.3
module.exports = function(config) {
'use strict';
config.set({
// enable / disable watching file and executing tests whenever any file changes
autoWatch: true,
// base path, that will be used to resolve files and exclude
basePath: '../',
// testing framework to use (jasmine/mocha/qunit/...)
frameworks: ['jasmine'],
reporters: ['junit', 'spec'],
// list of files / patterns to load in the browser
files: [
'bower_components/angular/angular.js',
'bower_components/angular-animate/angular-animate.js',
'bower_components/angular-bootstrap/ui-bootstrap.js',
'bower_components/angular-bootstrap-checkbox/angular-bootstrap-checkbox.js',
'bower_components/angular-cookies/angular-cookies.js',
'bower_components/angular-filter/dist/angular-filter.js',
'bower_components/angular-loading-bar/src/loading-bar.js',
'bower_components/angular-mocks/angular-mocks.js',
'bower_components/angular-moment/angular-moment.js',
'bower_components/angular-resource/angular-resource.js',
'bower_components/angular-route/angular-route.js',
'bower_components/angular-sanitize/angular-sanitize.js',
'bower_components/angular-smart-table/src/smart-table.module.js',
'bower_components/angular-touch/angular-touch.js',
'app/**/*.js',
'test/spec/**/*.js'
],
// list of files / patterns to exclude
exclude: [],
// web server port
port: 8080,
// Start these browsers, currently available:
// - Chrome
// - ChromeCanary
// - Firefox
// - Opera
// - Safari (only Mac)
// - PhantomJS
// - IE (only Windows)
browsers: [
'PhantomJS'
],
// Which plugins to enable
// plugins: [
// 'karma-phantomjs-launcher',
// 'karma-jasmine'
// ],
// Continuous Integration mode
// if true, it capture browsers, run tests and exit
singleRun: false,
colors: true,
// level of logging
// possible values: LOG_DISABLE || LOG_ERROR || LOG_WARN || LOG_INFO || LOG_DEBUG
logLevel: config.LOG_INFO,
// Uncomment the following lines if you are using grunt's server to run the tests
// proxies: {
// '/': 'http://localhost:9000/'
// },
// URL root prevent conflicts with the site root
// urlRoot: '_karma_'
});
};