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:
parent
866f17fe43
commit
d6625bc445
1
.gitignore
vendored
1
.gitignore
vendored
@ -2,6 +2,7 @@
|
||||
node_modules/
|
||||
*.log
|
||||
/build/
|
||||
/js/coverage/
|
||||
js/build/
|
||||
js/*.xml
|
||||
.rvm
|
||||
|
@ -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
|
||||
|
||||
|
@ -13,6 +13,7 @@
|
||||
"browser": true,
|
||||
"expect": true,
|
||||
"By": true,
|
||||
"it": true
|
||||
"it": true,
|
||||
"inject": true
|
||||
}
|
||||
}
|
@ -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']);
|
||||
|
||||
};
|
@ -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
|
||||
|
||||
|
@ -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']);
|
@ -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'
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
|
@ -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'
|
||||
],
|
||||
|
||||
|
||||
|
@ -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');
|
||||
});
|
||||
});
|
@ -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
23
js/service/loading.js
Normal 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;
|
||||
};
|
||||
|
||||
});
|
17
js/tests/e2e/include/auth.js
Normal file
17
js/tests/e2e/include/auth.js
Normal 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();
|
||||
};
|
@ -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');
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
});
|
26
js/tests/unit/controller/AllItemsControllerSpec.js
Normal file
26
js/tests/unit/controller/AllItemsControllerSpec.js
Normal 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();
|
||||
});
|
||||
|
||||
});
|
24
js/tests/unit/service/LoadingSpec.js
Normal file
24
js/tests/unit/service/LoadingSpec.js
Normal 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);
|
||||
}));
|
||||
|
||||
});
|
10
js/tests/unit/stubs/app.js
Normal file
10
js/tests/unit/stubs/app.js
Normal 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
16
js/tests/unit/stubs/oc.js
Normal 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 '';
|
||||
}
|
||||
};
|
Loading…
Reference in New Issue
Block a user