commit
258cbd80a3
@ -0,0 +1,135 @@ |
||||
#-- copyright |
||||
# OpenProject Costs Plugin |
||||
# |
||||
# Copyright (C) 2009 - 2014 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. |
||||
# |
||||
# 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. |
||||
#++ |
||||
|
||||
require 'spec_helper' |
||||
|
||||
describe 'Custom fields reporting', type: :feature, js: true do |
||||
let(:type) { FactoryGirl.create :type } |
||||
let(:project) { FactoryGirl.create :project, types: [type] } |
||||
|
||||
let(:user) { FactoryGirl.create :admin } |
||||
|
||||
let(:work_package) { |
||||
FactoryGirl.create :work_package, |
||||
project: project, |
||||
custom_values: initial_custom_values |
||||
} |
||||
|
||||
let!(:time_entry1) { |
||||
FactoryGirl.create :time_entry, |
||||
user: user, |
||||
work_package: work_package, |
||||
project: project, |
||||
hours: 10 |
||||
} |
||||
|
||||
let!(:time_entry2) { |
||||
FactoryGirl.create :time_entry, |
||||
user: user, |
||||
work_package: work_package, |
||||
project: project, |
||||
hours: 2.50 |
||||
} |
||||
|
||||
before do |
||||
login_as(user) |
||||
visit '/cost_reports' |
||||
end |
||||
|
||||
context 'with multi value cf' do |
||||
let!(:custom_field) do |
||||
FactoryGirl.create( |
||||
:list_wp_custom_field, |
||||
name: "List CF", |
||||
multi_value: true, |
||||
types: [type], |
||||
projects: [project], |
||||
possible_values: ['First option', 'Second option'] |
||||
) |
||||
end |
||||
|
||||
let(:initial_custom_values) { { custom_field.id => 1 } } |
||||
|
||||
it 'groups by the multi CF (Regression #26050)' do |
||||
expect(page).to have_selector('#group-by--add-columns') |
||||
expect(page).to have_selector('#group-by--add-rows') |
||||
|
||||
select 'List CF', from: 'group-by--add-columns' |
||||
select 'Work package', from: 'group-by--add-rows' |
||||
|
||||
find('#query-icon-apply-button').click |
||||
|
||||
# Expect row of work package |
||||
within('#result-table') do |
||||
expect(page).to have_selector('a.issue', text: "#{work_package.type.to_s} ##{work_package.id}") |
||||
expect(page).to have_selector('th.inner', text: 'First option') |
||||
expect(page).to have_no_selector('th.inner', text: 'Second option') |
||||
|
||||
# Only first option should have content for the work package |
||||
expect(page).to have_selector('table.report tbody tr', count: 1) |
||||
row_elements = page.all('table.report tr.odd th') |
||||
|
||||
expect(row_elements[0].text).to eq(project.name) |
||||
expect(row_elements[1].text).to eq(work_package.to_s) |
||||
|
||||
row_elements = page.all('table.report tr.odd td') |
||||
expect(row_elements[0].text).to eq('12.50 hours') |
||||
end |
||||
end |
||||
end |
||||
|
||||
context 'with text CF' do |
||||
let(:custom_field) do |
||||
FactoryGirl.create( |
||||
:text_wp_custom_field, |
||||
name: 'Text CF', |
||||
types: [type], |
||||
projects: [project] |
||||
) |
||||
end |
||||
let(:initial_custom_values) { { custom_field.id => 'foo' } } |
||||
|
||||
it 'groups by a text CF' do |
||||
expect(page).to have_selector('#group-by--add-columns') |
||||
expect(page).to have_selector('#group-by--add-rows') |
||||
|
||||
select 'Text CF', from: 'group-by--add-columns' |
||||
select 'Work package', from: 'group-by--add-rows' |
||||
|
||||
find('#query-icon-apply-button').click |
||||
|
||||
# Expect row of work package |
||||
within('#result-table') do |
||||
expect(page).to have_selector('a.issue', text: "#{work_package.type.to_s} ##{work_package.id}") |
||||
expect(page).to have_selector('th.inner', text: 'foo') |
||||
expect(page).to have_no_selector('th.inner', text: 'None') |
||||
|
||||
# Only first option should have content for the work package |
||||
expect(page).to have_selector('table.report tbody tr', count: 1) |
||||
row_elements = page.all('table.report tr.odd th') |
||||
|
||||
expect(row_elements[0].text).to eq(project.name) |
||||
expect(row_elements[1].text).to eq(work_package.to_s) |
||||
|
||||
row_elements = page.all('table.report tr.odd td') |
||||
expect(row_elements[0].text).to eq('12.50 hours') |
||||
end |
||||
end |
||||
end |
||||
end |
Loading…
Reference in new issue