kanbanworkflowstimelinescrumrubyroadmapproject-planningproject-managementopenprojectangularissue-trackerifcgantt-chartganttbug-trackerboardsbcf
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
2.9 KiB
93 lines
2.9 KiB
7 years ago
|
require 'spec_helper'
|
||
|
|
||
|
describe 'Cost report showing my own times', type: :feature, js: true do
|
||
|
let(:project) { FactoryBot.create :project }
|
||
|
let(:user) { FactoryBot.create :admin }
|
||
|
let(:user2) { FactoryBot.create :admin }
|
||
|
|
||
|
let(:work_package) { FactoryBot.create :work_package, project: project }
|
||
|
let!(:hourly_rate1) { FactoryBot.create :default_hourly_rate, user: user, rate: 1.00, valid_from: 1.year.ago }
|
||
|
|
||
|
let!(:time_entry1) {
|
||
|
FactoryBot.create :time_entry,
|
||
|
user: user,
|
||
|
work_package: work_package,
|
||
|
project: project,
|
||
|
hours: 10
|
||
|
}
|
||
|
let!(:time_entry2) {
|
||
|
FactoryBot.create :time_entry,
|
||
|
user: user2,
|
||
|
work_package: work_package,
|
||
|
project: project,
|
||
|
hours: 15
|
||
|
}
|
||
|
|
||
|
before do
|
||
|
# Login as first user
|
||
|
login_as user
|
||
|
|
||
|
# Create and save cost report
|
||
|
visit cost_reports_path(project)
|
||
|
|
||
|
end
|
||
|
|
||
|
shared_examples 'me filter value' do |filter_name, filter_selector|
|
||
|
it 'keeps the special "me" value for the current user' do
|
||
|
select 'me', from: filter_selector
|
||
|
click_on 'Save'
|
||
|
fill_in 'query_name', with: 'Query ME value'
|
||
|
check 'query_is_public'
|
||
|
find('#query-icon-save-button').click
|
||
|
|
||
|
expect(page).to have_selector('.report', text: '10.00')
|
||
|
|
||
|
report = CostQuery.last
|
||
|
user_filter = report.serialized[:filters].detect { |name,_| name == filter_name }
|
||
|
expect(user_filter[1][:values]).to eq %w(me)
|
||
|
|
||
|
# Login as the next user
|
||
|
login_as user2
|
||
|
|
||
|
# Create and save cost report
|
||
|
visit cost_report_path(report.id, project_id: project.identifier)
|
||
|
expect(page).to have_no_selector('.report', text: '10.00')
|
||
|
expect(page).to have_selector('.report', text: '15.00')
|
||
|
|
||
|
expect(find("##{filter_selector}").value).to eq 'me'
|
||
|
end
|
||
|
end
|
||
|
|
||
|
describe 'assignee filter' do
|
||
|
let(:work_package) { FactoryBot.create :work_package, project: project, assigned_to: user }
|
||
|
let(:work_package2) { FactoryBot.create :work_package, project: project, assigned_to: user2 }
|
||
|
|
||
|
let!(:time_entry1) {
|
||
|
FactoryBot.create :time_entry,
|
||
|
user: user,
|
||
|
work_package: work_package,
|
||
|
project: project,
|
||
|
hours: 10
|
||
|
}
|
||
|
let!(:time_entry2) {
|
||
|
FactoryBot.create :time_entry,
|
||
|
user: user2,
|
||
|
work_package: work_package2,
|
||
|
project: project,
|
||
|
hours: 15
|
||
|
}
|
||
|
|
||
|
|
||
|
before do
|
||
|
# Remove default user filter, add assignee filter
|
||
|
find('#rm_box_user_id .filter_rem').click
|
||
|
select 'Assignee', from: 'add_filter_select'
|
||
|
end
|
||
|
|
||
|
it_behaves_like 'me filter value', 'AssignedToId', 'assigned_to_id_arg_1_val'
|
||
|
end
|
||
|
|
||
|
describe 'user filter' do
|
||
|
it_behaves_like 'me filter value', 'UserId', 'user_id_arg_1_val'
|
||
|
end
|
||
|
end
|