From e44eab76ed8176ce6df659776c04d8c7389d8334 Mon Sep 17 00:00:00 2001 From: mhirtie Date: Fri, 27 Feb 2015 10:28:48 +0200 Subject: [PATCH] Refactor protractor tests. --- frontend/tests/integration/protractor.conf.js | 2 +- frontend/tests/integration/spec_helper.js | 7 ++ .../details-pane-editable-spec.js} | 80 ++++--------------- .../details-pane/details-pane-helper.js | 11 +++ .../details-pane/details-pane-spec.js | 72 +++++++++++++++++ .../specs/work-packages/work-packages-spec.js | 9 +-- 6 files changed, 107 insertions(+), 74 deletions(-) create mode 100644 frontend/tests/integration/spec_helper.js rename frontend/tests/integration/specs/work-packages/{work-package-details-spec.js => details-pane/details-pane-editable-spec.js} (82%) create mode 100644 frontend/tests/integration/specs/work-packages/details-pane/details-pane-helper.js create mode 100644 frontend/tests/integration/specs/work-packages/details-pane/details-pane-spec.js diff --git a/frontend/tests/integration/protractor.conf.js b/frontend/tests/integration/protractor.conf.js index de9363e55b..84e11a01fd 100644 --- a/frontend/tests/integration/protractor.conf.js +++ b/frontend/tests/integration/protractor.conf.js @@ -32,7 +32,7 @@ exports.config = { // Capabilities to be passed to the webdriver instance. capabilities: { - 'browserName': 'chrome' + 'browserName': 'firefox' }, directConnect: true, diff --git a/frontend/tests/integration/spec_helper.js b/frontend/tests/integration/spec_helper.js new file mode 100644 index 0000000000..8cdf2cd45c --- /dev/null +++ b/frontend/tests/integration/spec_helper.js @@ -0,0 +1,7 @@ +var chai = require('chai'); +var chaiAsPromised = require('chai-as-promised'); +chai.use(chaiAsPromised); + +module.exports = { + expect: chai.expect +}; \ No newline at end of file diff --git a/frontend/tests/integration/specs/work-packages/work-package-details-spec.js b/frontend/tests/integration/specs/work-packages/details-pane/details-pane-editable-spec.js similarity index 82% rename from frontend/tests/integration/specs/work-packages/work-package-details-spec.js rename to frontend/tests/integration/specs/work-packages/details-pane/details-pane-editable-spec.js index 939b28e2af..127c34d393 100644 --- a/frontend/tests/integration/specs/work-packages/work-package-details-spec.js +++ b/frontend/tests/integration/specs/work-packages/details-pane/details-pane-editable-spec.js @@ -26,42 +26,18 @@ // See doc/COPYRIGHT.rdoc for more details. //++ -var chai = require('chai'); -var chaiAsPromised = require('chai-as-promised'); - -chai.use(chaiAsPromised); -var expect = chai.expect; - - -var WorkPackageDetailsPane = require('../../pages/work-package-details-pane.js'); +var expect = require('../../../spec_helper.js').expect, + detailsPaneHelper = require('./work-package-details-pane-helper.js'); /*jshint expr: true*/ - -describe('OpenProject', function() { - function loadPane(workPackageId) { - var page = new WorkPackageDetailsPane(workPackageId, 'overview'); - page.get(); - browser.waitForAngular(); - } - - describe('pane itself', function() { - beforeEach(function() { - loadPane(819); - }); - - it('should be visible', function() { - expect($('.work-packages--details').isPresent()).to.eventually.be.true; - }); - }); - +describe('OpenProject', function(){ describe('editable', function() { - function behaveLikeEmbeddedDropdown(name, correctValue) { context('behaviour', function() { var editor = $('[ined-attribute=\'' + name + '\'] .inplace-editor'); beforeEach(function() { - loadPane(819); + detailsPaneHelper.loadPane(819, 'overview'); }); describe('read state', function() { @@ -105,7 +81,7 @@ describe('OpenProject', function() { context('work package with updateImmediately link', function() { beforeEach(function() { - loadPane(819); + detailsPaneHelper.loadPane(819, 'overview'); }); it('should render an editable subject', function() { @@ -115,7 +91,7 @@ describe('OpenProject', function() { context('work package without updateImmediately link', function() { beforeEach(function() { - loadPane(820); + detailsPaneHelper.loadPane(820, 'overview'); }); it('should not render an editable subject', function() { @@ -125,7 +101,7 @@ describe('OpenProject', function() { context('work package with a wrong version', function() { beforeEach(function() { - loadPane(821); + detailsPaneHelper.loadPane(821, 'overview'); subjectEditor.$('.ined-read-value').click(); subjectEditor.$('.ined-edit-save a').click(); }); @@ -144,7 +120,7 @@ describe('OpenProject', function() { var descriptionEditor = $('.inplace-editor.attribute-description'); beforeEach(function() { - loadPane(819); + detailsPaneHelper.loadPane(819, 'overview'); }); describe('read state', function() { @@ -166,6 +142,7 @@ describe('OpenProject', function() { expect(descriptionEditor.$('textarea').isPresent()).to.eventually.be.false; }); }); + describe('preview', function() { var previewButton = descriptionEditor.$('.btn-preview'); @@ -201,7 +178,7 @@ describe('OpenProject', function() { context('when work package version link is present', function() { beforeEach(function() { - loadPane(819); + detailsPaneHelper.loadPane(819, 'overview'); }); it('should render a link to the version', function() { @@ -221,7 +198,7 @@ describe('OpenProject', function() { context('when work package link is missing', function() { beforeEach(function() { - loadPane(822); + detailsPaneHelper.loadPane(822, 'overview'); }); it('should not render an anchor', function() { @@ -235,11 +212,10 @@ describe('OpenProject', function() { }); context('user field', function() { var assigneeEditor = $('[ined-attribute=\'assignee\'] .inplace-editor'), - responsibleEditor = $('[ined-attribute=\'responsible\'] .inplace-editor') - ; + responsibleEditor = $('[ined-attribute=\'responsible\'] .inplace-editor'); beforeEach(function() { - loadPane(822); + detailsPaneHelper.loadPane(822, 'overview'); }); context('read state', function() { @@ -291,32 +267,4 @@ describe('OpenProject', function() { }); }); }); - - describe('activities', function() { - describe('overview tab', function() { - before(function() { - loadPane(819); - }); - - it('should render the last 3 activites', function() { - expect( - $('ul li:nth-child(1) div.comments-number').getText() - ).to.eventually.equal('#59'); - - expect( - $('ul li:nth-child(2) div.comments-number').getText() - ).to.eventually.equal('#58'); - - expect( - $('ul li:nth-child(3) div.comments-number').getText() - ).to.eventually.equal('#57'); - }); - - it('should contain the activities details', function() { - expect( - $('ul.work-package-details-activities-messages li:nth-child(1) .message').getText() - ).to.eventually.equal('Status changed from tested to rejected'); - }); - }); - }); -}); +}); \ No newline at end of file diff --git a/frontend/tests/integration/specs/work-packages/details-pane/details-pane-helper.js b/frontend/tests/integration/specs/work-packages/details-pane/details-pane-helper.js new file mode 100644 index 0000000000..d0134218e8 --- /dev/null +++ b/frontend/tests/integration/specs/work-packages/details-pane/details-pane-helper.js @@ -0,0 +1,11 @@ +var WorkPackageDetailsPane = require('../../../pages/work-package-details-pane.js'); + +function loadPane(workPackageId, paneName) { + var page = new WorkPackageDetailsPane(workPackageId, paneName); + page.get(); + browser.waitForAngular(); +}; + +module.exports = { + loadPane: loadPane +}; \ No newline at end of file diff --git a/frontend/tests/integration/specs/work-packages/details-pane/details-pane-spec.js b/frontend/tests/integration/specs/work-packages/details-pane/details-pane-spec.js new file mode 100644 index 0000000000..4054b7c09d --- /dev/null +++ b/frontend/tests/integration/specs/work-packages/details-pane/details-pane-spec.js @@ -0,0 +1,72 @@ +//-- copyright +// OpenProject is a project management system. +// Copyright (C) 2012-2015 the OpenProject Foundation (OPF) +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License version 3. +// +// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +// Copyright (C) 2006-2013 Jean-Philippe Lang +// Copyright (C) 2010-2013 the ChiliProject Team +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +// +// See doc/COPYRIGHT.rdoc for more details. +//++ + +var expect = require('../../../spec_helper.js').expect, + detailsPaneHelper = require('./work-package-details-pane-helper.js'); + +/*jshint expr: true*/ + +describe('OpenProject', function() { + describe('pane itself', function() { + beforeEach(function() { + detailsPaneHelper.loadPane(819, 'overview'); + }); + + it('should be visible', function() { + expect($('.work-packages--details').isPresent()).to.eventually.be.true; + }); + }); + + describe('activities', function() { + describe('overview tab', function() { + before(function() { + detailsPaneHelper.loadPane(819, 'overview'); + }); + + it('should render the last 3 activites', function() { + expect( + $('ul li:nth-child(1) div.comments-number').getText() + ).to.eventually.equal('#59'); + + expect( + $('ul li:nth-child(2) div.comments-number').getText() + ).to.eventually.equal('#58'); + + expect( + $('ul li:nth-child(3) div.comments-number').getText() + ).to.eventually.equal('#57'); + }); + + it('should contain the activities details', function() { + expect( + $('ul.work-package-details-activities-messages li:nth-child(1) .message').getText() + ).to.eventually.equal('Status changed from tested to rejected'); + }); + }); + }); +}); diff --git a/frontend/tests/integration/specs/work-packages/work-packages-spec.js b/frontend/tests/integration/specs/work-packages/work-packages-spec.js index 9a668e812c..1c72da180b 100644 --- a/frontend/tests/integration/specs/work-packages/work-packages-spec.js +++ b/frontend/tests/integration/specs/work-packages/work-packages-spec.js @@ -26,13 +26,8 @@ // See doc/COPYRIGHT.rdoc for more details. //++ -var chai = require('chai'); -var chaiAsPromised = require('chai-as-promised'); - -chai.use(chaiAsPromised); -var expect = chai.expect; - -var WorkPackagesPage = require('../../pages/work-packages-page.js'); +var expect = require('../../spec_helper.js').expect, + WorkPackagesPage = require('../../pages/work-packages-page.js'); describe('OpenProject', function() { var page = new WorkPackagesPage();