OpenProject is the leading open source project management software.
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.
 
 
 
 
 
 
openproject/spec/features/work_packages/table/invalid_query_spec.rb

110 lines
3.3 KiB

require 'spec_helper'
describe 'Invalid query spec', js: true do
let(:user) { FactoryBot.create :admin }
let(:project) { FactoryBot.create :project }
let(:wp_table) { ::Pages::WorkPackagesTable.new(project) }
let(:filters) { ::Components::WorkPackages::Filters.new }
let(:group_by) { ::Components::WorkPackages::GroupBy.new }
let(:member) do
FactoryBot.create(:member,
user: user,
project: project,
roles: [FactoryBot.create(:role)])
end
let(:status) do
FactoryBot.create(:status)
end
let(:status2) do
FactoryBot.create(:status)
end
let(:invalid_query) do
query = FactoryBot.create(:query,
project: project,
user: user)
query.add_filter('assigned_to_id', '=', [99999])
query.columns << 'cf_0815'
query.group_by = 'cf_0815'
query.sort_criteria = [%w(cf_0815 desc)]
query.save(validate: false)
query
end
let(:valid_query) do
FactoryBot.create(:query,
project: project,
user: user)
end
let(:work_package_assigned) do
FactoryBot.create(:work_package,
project: project,
status: status2,
assigned_to: user)
end
before do
login_as(user)
status
status2
member
work_package_assigned
end
it 'should handle invalid queries' do
# should load a faulty query and also the drop down
wp_table.visit_query(invalid_query)
filters.open
filters.expect_filter_count 1
filters.expect_no_filter_by('Assignee')
filters.expect_filter_by('Status', 'open', nil)
wp_table.expect_no_toaster(type: :error,
message: I18n.t('js.work_packages.faulty_query.description'))
wp_table.expect_work_package_listed work_package_assigned
wp_table.expect_query_in_select_dropdown(invalid_query.name)
Capybara.current_session.driver.execute_script('window.localStorage.clear()')
# should not load with faulty parameters but can be fixed
filter_props = [{ 'n': 'assignee', 'o': '=', 'v': ['999999'] },
{ 'n': 'status', 'o': '=', 'v': [status.id.to_s, status2.id.to_s] }]
column_props = %w(id subject customField0815)
invalid_props = JSON.dump('f': filter_props,
'c': column_props,
'g': 'customField0815',
't': 'customField0815:desc')
wp_table.visit_with_params("query_id=#{valid_query.id}&query_props=#{invalid_props}")
wp_table.expect_toast(type: :error,
message: I18n.t('js.work_packages.faulty_query.description'))
wp_table.dismiss_toaster!
wp_table.expect_no_work_package_listed
filters.expect_filter_count 2
filters.open
filters.expect_filter_by('Assignee', 'is', :placeholder)
filters.expect_filter_by('Status', 'is', [status.name, status2.name])
group_by.enable_via_menu('Assignee')
sleep(0.3)
filters.set_filter('Assignee', 'is', user.name)
sleep(0.3)
wp_table.expect_work_package_listed work_package_assigned
wp_table.save
wp_table.expect_toast(message: I18n.t('js.notice_successful_update'))
end
end