1
0
mirror of https://github.com/chylex/Nextcloud-News.git synced 2025-04-09 19:15:42 +02:00

fix protractor tests

This commit is contained in:
Bernhard Posselt 2014-05-15 12:26:42 +02:00
parent 866f17fe43
commit d6625bc445
17 changed files with 211 additions and 45 deletions

1
.gitignore vendored
View File

@ -2,6 +2,7 @@
node_modules/
*.log
/build/
/js/coverage/
js/build/
js/*.xml
.rvm

View File

@ -17,7 +17,7 @@ before_install:
script:
- sudo add-apt-repository -y ppa:chris-lea/node.js
- sudo apt-get update
- sudo apt-get -y install nodejs
- sudo apt-get -y install nodejs chromium
- wget https://phantomjs.googlecode.com/files/phantomjs-1.9.0-linux-x86_64.tar.bz2
- tar xjf phantomjs-1.9.0-linux-x86_64.tar.bz2
- sudo ln -s $(pwd)/phantomjs-1.9.0-linux-x86_64/bin/phantomjs /usr/bin/phantomjs
@ -31,6 +31,5 @@ script:
- sh -e /etc/init.d/xvfb start
- sudo npm install -g protractor
- sudo webdriver-manager update
- webdriver-manager start &
- protractor config/protractor.js
- grunt e2e

View File

@ -13,6 +13,7 @@
"browser": true,
"expect": true,
"By": true,
"it": true
"it": true,
"inject": true
}
}

View File

@ -19,6 +19,8 @@ module.exports = function(grunt) {
grunt.loadNpmTasks('grunt-wrap');
grunt.loadNpmTasks('grunt-karma');
grunt.loadNpmTasks('grunt-ngmin');
grunt.loadNpmTasks('grunt-protractor-runner');
grunt.loadNpmTasks('grunt-protractor-webdriver');
grunt.initConfig({
meta: {
@ -79,7 +81,7 @@ module.exports = function(grunt) {
predef: [
'$', 'angular', 'app', 'OC',
'protractor', 'describe', 'beforeEach', 'module', 'it',
'browser', 'expect', 'By'
'browser', 'expect', 'By', 'inject'
]
}
}
@ -121,7 +123,8 @@ module.exports = function(grunt) {
karma: {
unit: {
configFile: 'config/karma.js',
browsers: ['PhantomJS']
browsers: ['PhantomJS'],
autoWatch: true
},
continuous: {
configFile: 'config/karma.js',
@ -145,6 +148,18 @@ module.exports = function(grunt) {
options: {
colors: true
}
},
protractor_webdriver: {
app: {
}
},
protractor: {
phantomjs: {
options: {
configFile: 'config/protractor.js'
}
}
}
});
@ -152,5 +167,6 @@ module.exports = function(grunt) {
grunt.registerTask('default', ['jshint', 'jslint', 'concat', 'ngmin', 'wrap']);
grunt.registerTask('test', ['karma:unit']);
grunt.registerTask('ci', ['default', 'karma:continuous']);
grunt.registerTask('e2e', ['protractor_webdriver', 'protractor']);
};

View File

@ -29,9 +29,7 @@ Install protractor and set up selenium:
sudo npm install -g protractor
sudo webdriver-manager update
then the selenium server can be started with:
webdriver-manager start
protractor conf/protractor.js
then the tests can be started with:
grunt e2e

View File

@ -7,4 +7,4 @@
* @author Bernhard Posselt <dev@bernhard-posselt.com>
* @copyright Bernhard Posselt 2012, 2014
*/
var app = angular.module('News', []);
var app = angular.module('News', ['ngRoute', 'ngSanitize']);

View File

@ -10,8 +10,32 @@
app.config(function ($routeProvider, $provide) {
'use strict';
$routeProvider.otherwise('/');
$provide.constant('baseUrl', OC.generateUrl(''));
$routeProvider
.when('/items', {
controller: 'AllItemsController',
templateUrl: 'content.html',
resolve: {}
})
.when('/items/starred', {
controller: 'StarredItemsController',
templateUrl: 'content.html',
resolve: {}
})
.when('/items/feed/:feedId', {
controller: 'FeedItemsController',
templateUrl: 'content.html',
resolve: {}
})
.when('/items/folder/:folderId', {
controller: 'FolderItemsController',
templateUrl: 'content.html',
resolve: {}
})
.otherwise({
redirectTo: '/items'
});
});

View File

@ -16,14 +16,18 @@ module.exports = function(config) {
// list of files / patterns to load in the browser
files: [
'vendor/jquery/dist/jquery.js',
'vendor/momentjs/momentjs.js',
'vendor/momentjs/moment.js',
'vendor/bootstrap/tooltip.js',
'vendor/angular',
'vendor/angular/angular.js',
'vendor/angular-mocks/angular-mocks.js',
'vendor/angular-route/angular-route.js',
'vendor/angular/angular-sanitize/angular-sanitize.js',
'build/app.js',
'tests/unit/**/*.js'
'vendor/angular-sanitize/angular-sanitize.js',
'tests/unit/stubs/*.js',
'controller/**/*.js',
'filter/**/*.js',
'service/**/*.js',
'directive/**/*.js',
'tests/unit/**/*Spec.js'
],

View File

@ -7,8 +7,19 @@
* @author Bernhard Posselt <dev@bernhard-posselt.com>
* @copyright Bernhard Posselt 2012, 2014
*/
app.run(function ($rootScope) {
app.run(function ($rootScope, $location, Loading) {
'use strict';
$rootScope.$on('$routeChangeError');
$rootScope.$on('$routeChangeStart', function () {
Loading.isActive = true;
});
$rootScope.$on('$routeChangeSuccess', function () {
Loading.isActive = false;
});
// in case of wrong id etc show all items
$rootScope.$on('$routeChangeError', function () {
$location.path('/items');
});
});

View File

@ -33,10 +33,13 @@
"grunt-karma": "^0.8.3",
"grunt-ngmin": "0.0.3",
"grunt-phpunit": "^0.3.3",
"grunt-protractor-runner": "^0.2.4",
"grunt-protractor-webdriver": "^0.1.6",
"grunt-wrap": "^0.3.0",
"karma": "^0.12.16",
"karma-coverage": "^0.2.1",
"karma-jasmine": "^0.1.5",
"karma-phantomjs-launcher": "^0.1.4"
"karma-phantomjs-launcher": "^0.1.4",
"protractor": "^0.22.0"
}
}

23
js/service/loading.js Normal file
View File

@ -0,0 +1,23 @@
/**
* ownCloud - News
*
* This file is licensed under the Affero General Public License version 3 or
* later. See the COPYING file.
*
* @author Bernhard Posselt <dev@bernhard-posselt.com>
* @copyright Bernhard Posselt 2012, 2014
*/
app.service('Loading', function () {
'use strict';
this.loading = false;
this.setLoading = function (isLoading) {
this.loading = isLoading;
};
this.isLoading = function () {
return this.loading;
};
});

View File

@ -0,0 +1,17 @@
/**
* ownCloud - News
*
* This file is licensed under the Affero General Public License version 3 or
* later. See the COPYING file.
*
* @author Bernhard Posselt <dev@bernhard-posselt.com>
* @copyright Bernhard Posselt 2012, 2014
*/
exports.login = function (browser) {
browser.ignoreSynchronization = true;
browser.get('http://localhost/owncloud/');
browser.findElement(By.id('user')).sendKeys('admin');
browser.findElement(By.id('password')).sendKeys('admin');
browser.findElement(By.id('submit')).click();
};

View File

@ -1,34 +1,27 @@
/**
* ownCloud - News
*
* This file is licensed under the Affero General Public License version 3 or
* later. See the COPYING file.
*
* @author Bernhard Posselt <dev@bernhard-posselt.com>
* @copyright Bernhard Posselt 2012, 2014
*/
var auth = require('./include/auth.js');
describe('news page', function () {
'use strict';
var ptor = protractor.getInstance();
beforeEach(function () {
browser.ignoreSynchronization = true;
return browser.ignoreSynchronization;
auth.login(browser);
});
beforeEach(function () {
ptor.get('http://localhost/owncloud/');
ptor.findElement(By.id('user')).sendKeys('admin');
ptor.findElement(By.id('password')).sendKeys('admin');
ptor.findElement(By.id('submit')).click();
});
describe('should log in', function () {
beforeEach(function () {
browser.ignoreSynchronization = false;
return browser.ignoreSynchronization;
it('should go to the news page', function () {
browser.get('http://localhost/owncloud/index.php/apps/news/');
browser.getTitle().then(function (title) {
expect(title).toBe('News - ownCloud');
});
it('should go to the news page', function () {
ptor.get('http://localhost/owncloud/index.php/apps/news/');
ptor.getTitle().then(function (title) {
expect(title).toBe('News - ownCloud');
});
});
});
});

View File

@ -0,0 +1,26 @@
/**
* ownCloud - News
*
* This file is licensed under the Affero General Public License version 3 or
* later. See the COPYING file.
*
* @author Bernhard Posselt <dev@bernhard-posselt.com>
* @copyright Bernhard Posselt 2012, 2014
*/
describe('AllItemsController', function () {
'use strict';
var controller;
beforeEach(module('News'));
beforeEach(inject(function ($controller) {
controller = $controller;
}));
it('should ', function () {
expect(controller).toBeDefined();
});
});

View File

@ -0,0 +1,24 @@
/**
* ownCloud - News
*
* This file is licensed under the Affero General Public License version 3 or
* later. See the COPYING file.
*
* @author Bernhard Posselt <dev@bernhard-posselt.com>
* @copyright Bernhard Posselt 2012, 2014
*/
describe('Loading', function () {
'use strict';
beforeEach(module('News'));
it('should be not load by default', inject(function (Loading) {
expect(Loading.isLoading()).toBe(false);
}));
it('should set loading', inject(function (Loading) {
Loading.setLoading(true);
expect(Loading.isLoading()).toBe(true);
}));
});

View File

@ -0,0 +1,10 @@
/**
* ownCloud - News
*
* This file is licensed under the Affero General Public License version 3 or
* later. See the COPYING file.
*
* @author Bernhard Posselt <dev@bernhard-posselt.com>
* @copyright Bernhard Posselt 2012, 2014
*/
var app = angular.module('News', ['ngRoute', 'ngSanitize', 'ngMock']);

16
js/tests/unit/stubs/oc.js Normal file
View File

@ -0,0 +1,16 @@
/**
* ownCloud - News
*
* This file is licensed under the Affero General Public License version 3 or
* later. See the COPYING file.
*
* @author Bernhard Posselt <dev@bernhard-posselt.com>
* @copyright Bernhard Posselt 2012, 2014
*/
var OC = {
generateUrl: function () {
'use strict';
return '';
}
};