From 001d1f2f9229e4cb250d6be07d0d702c3e28c161 Mon Sep 17 00:00:00 2001 From: Sebastian Schuster Date: Wed, 19 Feb 2014 11:33:30 +0100 Subject: [PATCH 1/2] Added tests for members pagination --- features/members/pagination.feature | 79 +++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 features/members/pagination.feature diff --git a/features/members/pagination.feature b/features/members/pagination.feature new file mode 100644 index 0000000000..e7157251bd --- /dev/null +++ b/features/members/pagination.feature @@ -0,0 +1,79 @@ +#-- copyright +# OpenProject is a project management system. +# Copyright (C) 2012-2013 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. +#++ + +Feature: Membership + + Background: + Given I am already admin + + Given there is a role "Manager" + And there is a role "Developer" + And there is 1 project with the following: + | Identifier | project1 | + And there is 1 User with: + | Login | peter | + | Firstname | Peter | + | Lastname | Pan | + And there is 1 user with the following: + | login | bob | + | firstname | Bob | + | Lastname | Bobbit | + And there is 1 user with the following: + | login | alice | + | firstname | Alice | + | Lastname | Alison | + And the user "bob" is a "Manager" in the project "project1" + And the user "alice" is a "Developer" in the project "project1" + + @javascript + Scenario: Paginating after adding a member + Given we paginate after 2 items + When I go to the members tab of the settings page of the project "project1" + And I add the principal "peter" as "Manager" + When I follow "2" within ".pagination" + Then I should see "Peter Pan" + + @javascript + Scenario: Paginating after removing a member + Given we paginate after 1 items + And the user "peter" is a "Manager" in the project "project1" + When I go to the members tab of the settings page of the project "project1" + And I delete the "Alice Alison" membership + Then I should see "Bob Bobbit" + When I follow "2" within ".pagination" + Then I should see "Peter Pan" + + @javascript + Scenario: Paginating after updating a member + Given we paginate after 1 items + When I go to the members tab of the settings page of the project "project1" + And I click on "Edit" + And I check "Manager" + And I click "Change" + And I follow "2" within ".pagination" + Then I should see "Bob Bobbit" From a6d820c21999d9c249772d3ada1d25c24546e7b4 Mon Sep 17 00:00:00 2001 From: Sebastian Schuster Date: Wed, 19 Feb 2014 11:55:34 +0100 Subject: [PATCH 2/2] Fixed wrong pagination links on ajax requests to members controller --- app/controllers/members_controller.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/controllers/members_controller.rb b/app/controllers/members_controller.rb index 6fbfe280f7..1532375b3a 100644 --- a/app/controllers/members_controller.rb +++ b/app/controllers/members_controller.rb @@ -55,6 +55,7 @@ JS format.html { redirect_to settings_project_path(@project, :tab => 'members') } format.js { + @pagination_url_options = {controller: 'projects', action: 'settings', id: @project} render(:update) {|page| page.replace_html "tab-content-members", :partial => 'projects/settings/members' page.insert_html :top, "tab-content-members", render_flash_messages @@ -64,6 +65,7 @@ JS } else format.js { + @pagination_url_options = {controller: 'projects', action: 'settings', id: @project} render(:update) {|page| if params[:member] page.insert_html :top, "tab-content-members", :partial => "members/member_errors", :locals => {:member => members.first} @@ -105,7 +107,9 @@ JS end respond_to do |format| format.html { redirect_to :controller => '/projects', :action => 'settings', :tab => 'members', :id => @project } - format.js { render(:update) {|page| + format.js { + @pagination_url_options = {controller: 'projects', action: 'settings', id: @project} + render(:update) {|page| page.replace_html "tab-content-members", :partial => 'projects/settings/members' page << TAB_SCRIPTS }