From a256fd85acf889f45a8d7bb64ac904d1b7729ea2 Mon Sep 17 00:00:00 2001 From: Klaus Zanders Date: Thu, 28 Sep 2023 09:25:24 +0200 Subject: [PATCH] Fix a bunch of more usages of member_in_project that was overlooked --- .../api/work_packages/form_resource_spec.rb | 2 +- .../work_package_schema_representer_spec.rb | 2 +- .../work_packages/update_contract_spec.rb | 2 +- .../controllers/versions_controller_spec.rb | 3 +- .../features/backlogs/create_story_spec.rb | 23 ++++--- .../features/backlogs_in_backlog_view_spec.rb | 3 +- .../spec/features/empty_backlogs_spec.rb | 2 +- .../spec/features/impediments_spec.rb | 3 +- .../spec/features/resolved_status_spec.rb | 3 +- .../spec/features/stories_in_backlog_spec.rb | 3 +- .../spec/features/tasks_on_taskboard_spec.rb | 3 +- .../features/bcf/bcf_snapshot_column_spec.rb | 3 +- modules/bim/spec/features/bcf/create_spec.rb | 3 +- modules/bim/spec/features/bcf/export_spec.rb | 3 +- .../spec/features/bcf_view_management_spec.rb | 3 +- .../bim/spec/features/bim_navigation_spec.rb | 3 +- .../spec/features/model_management_spec.rb | 9 +-- .../bim/spec/features/model_viewer_spec.rb | 9 +-- .../bim_revit_add_in_navigation_spec.rb | 3 +- .../bim_revit_add_in_refresh_button_spec.rb | 3 +- .../bim/spec/features/show_default_spec.rb | 3 +- .../features/viewer/show_viewpoint_spec.rb | 3 +- modules/bim/spec/models/ifc_model_spec.rb | 3 +- .../api/bcf/v2_1/comments_api_spec.rb | 12 ++-- .../bcf/v2_1/project_extensions_api_spec.rb | 9 +-- .../api/bcf/v2_1/projects_api_spec.rb | 8 +-- .../requests/api/bcf/v2_1/topics_api_spec.rb | 49 +++++++------- .../api/bcf/v2_1/viewpoints_api_spec.rb | 6 +- .../api/bcf_xml/v1/bcf_xml_api_spec.rb | 2 +- .../ifc_models/set_attributes_service_spec.rb | 2 +- .../ifc_models/index.html.erb_spec.rb | 3 +- .../action_boards/assignee_board_spec.rb | 6 +- .../custom_field_filters_spec.rb | 3 +- .../action_boards/status_board_spec.rb | 3 +- .../status_type_moving_board_spec.rb | 3 +- .../action_boards/subproject_board_spec.rb | 31 ++++----- .../action_boards/subtasks_board_spec.rb | 3 +- .../action_boards/version_board_spec.rb | 16 ++--- .../spec/features/board_conflicts_spec.rb | 3 +- .../spec/features/board_highlighting_spec.rb | 3 +- .../boards/spec/features/board_index_spec.rb | 6 +- .../spec/features/board_management_spec.rb | 3 +- .../spec/features/board_navigation_spec.rb | 3 +- .../spec/features/board_overview_spec.rb | 9 +-- .../board_reference_work_package_spec.rb | 13 ++-- .../onboarding/boards_onboarding_tour_spec.rb | 3 +- .../boards/grid_registration_spec.rb | 3 +- .../grids/grids_create_form_resource_spec.rb | 4 +- .../grids/grids_update_form_resource_spec.rb | 4 +- .../services/copy_service_integration_spec.rb | 7 +- .../budgets/attachment_upload_spec.rb | 2 +- .../spec/features/budgets/copy_budget_spec.rb | 3 +- .../api/v3/budgets/budget_representer_spec.rb | 2 +- .../api/v3/budgets/budget_resource_spec.rb | 3 +- .../spec/controllers/ical_controller_spec.rb | 21 ++---- .../spec/features/calendar_dates_spec.rb | 65 +++++++++---------- .../spec/features/calendar_sharing_spec.rb | 62 +++++++++--------- .../calendar_user_interaction_spec.rb | 9 +-- .../spec/features/calendar_widget_spec.rb | 6 +- .../spec/features/calendars_index_spec.rb | 34 +++++----- .../calendar/spec/features/calendars_spec.rb | 3 +- .../spec/features/query_handling_spec.rb | 7 +- .../calendar/spec/features/shared_context.rb | 5 +- .../resolve_work_packages_service_spec.rb | 3 +- .../work_packages_bulk_controller_spec.rb | 2 +- .../cost_entries/add_cost_entry_spec.rb | 6 +- .../add_entry_without_rate_permission_spec.rb | 3 +- ...roy_work_package_with_cost_entries_spec.rb | 3 +- .../features/members_hourly_rates_spec.rb | 7 +- modules/costs/spec/features/timer_spec.rb | 2 +- .../spec/features/view_own_rates_spec.rb | 6 +- ..._package_costs_by_type_representer_spec.rb | 2 +- .../work_package_representer_spec.rb | 6 +- .../time_entry_query_integration_spec.rb | 4 +- .../time_entries/scopes/visible_spec.rb | 3 +- ...t_entries_by_work_package_resource_spec.rb | 2 +- .../cost_entries/cost_entry_resource_spec.rb | 2 +- .../api/cost_types/cost_type_resource_spec.rb | 2 +- .../time_entries/create_form_resource_spec.rb | 3 +- .../time_entry_schema_resource_spec.rb | 3 +- .../time_entries/update_form_resource_spec.rb | 3 +- .../api/time_entry_activity_resource_spec.rb | 2 +- .../requests/api/time_entry_resource_spec.rb | 4 +- .../spec/features/custom_text_spec.rb | 2 +- .../spec/features/members_principals_spec.rb | 9 +-- .../dashboards/spec/features/members_spec.rb | 11 ++-- .../features/modifying_with_unallowed_spec.rb | 2 +- .../spec/features/navigation_spec.rb | 3 +- .../spec/features/project_description_spec.rb | 6 +- .../spec/features/project_details_spec.rb | 7 +- .../spec/features/project_status_spec.rb | 6 +- .../grids/grids_create_form_resource_spec.rb | 9 +-- .../api/v3/grids/grids_resource_spec.rb | 3 +- .../documents/spec/application_helper_spec.rb | 3 +- .../spec/features/attachment_upload_spec.rb | 17 ++--- .../open_project/markdown_formatting_spec.rb | 2 +- .../v3/documents/documents_resource_spec.rb | 2 +- .../features/work_package_github_tab_spec.rb | 3 +- .../create_contract_spec.rb | 2 +- .../delete_contract_spec.rb | 2 +- .../update_contract_spec.rb | 2 +- .../meeting_contents_controller_spec.rb | 6 +- .../features/meetings_attachments_spec.rb | 2 +- .../spec/features/meetings_close_spec.rb | 6 +- .../spec/features/meetings_copy_spec.rb | 6 +- .../spec/features/meetings_delete_spec.rb | 6 +- .../spec/features/meetings_new_spec.rb | 6 +- .../features/meetings_participants_spec.rb | 9 +-- .../spec/features/meetings_search_spec.rb | 2 +- .../spec/features/meetings_show_spec.rb | 3 +- .../structured_meeting_crud_spec.rb | 6 +- .../open_project/markdown_formatting_spec.rb | 2 +- .../spec/mailers/meeting_mailer_spec.rb | 7 +- .../spec/features/my/accountable_spec.rb | 3 +- .../spec/features/my/assigned_to_me_spec.rb | 3 +- .../spec/features/my/custom_text_spec.rb | 4 +- .../spec/features/my/documents_spec.rb | 3 +- .../my_page/spec/features/my/my_page_spec.rb | 3 +- modules/my_page/spec/features/my/news_spec.rb | 3 +- .../my/time_entries_current_user_spec.rb | 3 +- .../features/my/work_package_table_spec.rb | 3 +- .../grids/grids_create_form_resource_spec.rb | 3 +- .../low_permissions_page_creation_spec.rb | 3 +- .../features/managing_overview_page_spec.rb | 3 +- .../spec/features/navigation_spec.rb | 3 +- .../api/v3/grids/grids_resource_spec.rb | 3 +- .../services/copy_service_integration_spec.rb | 3 +- .../spec/features/permissions_spec.rb | 3 +- .../reporting/spec/features/saving_spec.rb | 3 +- .../spec/features/subproject_spec.rb | 3 +- .../spec/features/update_entries_spec.rb | 5 +- .../features/work_package_costlog_spec.rb | 2 +- .../spec/models/cost_query/filter_spec.rb | 12 ++-- .../spec/features/create_file_links_spec.rb | 2 +- .../spec/features/show_file_links_spec.rb | 2 +- .../spec/features/storages_menu_links_spec.rb | 2 +- .../append_storages_hosts_to_csp_hook_spec.rb | 4 +- .../api/v3/file_links/file_links_api_spec.rb | 2 +- .../mixed_case_file_links_integration_spec.rb | 2 +- .../project_storages/project_storages_spec.rb | 10 +-- .../api/v3/storages/storage_files_api_spec.rb | 2 +- .../api/v3/storages/storages_api_spec.rb | 2 +- .../append_content_security_policy_spec.rb | 2 +- .../team_planner_onboarding_tour_spec.rb | 10 ++- .../spec/features/query_handling_spec.rb | 5 +- .../spec/features/shared_context.rb | 5 +- ...planner_add_existing_work_packages_spec.rb | 25 ++++--- .../team_planner_context_menu_spec.rb | 7 +- .../spec/features/team_planner_create_spec.rb | 14 ++-- .../spec/features/team_planner_index_spec.rb | 8 +-- .../spec/features/team_planner_menu_spec.rb | 10 ++- .../features/team_planner_overview_spec.rb | 10 ++- .../team_planner_remove_event_spec.rb | 9 ++- .../spec/features/team_planner_spec.rb | 13 ++-- ...eam_planner_subproject_constraints_spec.rb | 9 +-- .../team_planner_user_interaction_spec.rb | 9 +-- .../principals/shared_memberships_examples.rb | 3 +- .../queries/shared_with_user_filter_spec.rb | 12 ++-- 158 files changed, 406 insertions(+), 600 deletions(-) diff --git a/modules/backlogs/spec/api/work_packages/form_resource_spec.rb b/modules/backlogs/spec/api/work_packages/form_resource_spec.rb index abde87a6a7b..f8d1799dd08 100644 --- a/modules/backlogs/spec/api/work_packages/form_resource_spec.rb +++ b/modules/backlogs/spec/api/work_packages/form_resource_spec.rb @@ -35,7 +35,7 @@ RSpec.describe 'API v3 Work package form resource' do let(:project) { create(:project, public: false) } let(:work_package) { create(:work_package, project:) } - let(:authorized_user) { create(:user, member_in_project: project) } + let(:authorized_user) { create(:user, member_with_permissions: { project => %i[view_work_packages edit_work_packages] }) } let(:unauthorized_user) { create(:user) } before do diff --git a/modules/backlogs/spec/api/work_packages/work_package_schema_representer_spec.rb b/modules/backlogs/spec/api/work_packages/work_package_schema_representer_spec.rb index 5d3309fcfb3..b42b21a4746 100644 --- a/modules/backlogs/spec/api/work_packages/work_package_schema_representer_spec.rb +++ b/modules/backlogs/spec/api/work_packages/work_package_schema_representer_spec.rb @@ -33,7 +33,7 @@ RSpec.describe API::V3::WorkPackages::Schema::WorkPackageSchemaRepresenter do let(:work_package) { build_stubbed(:work_package, type: build_stubbed(:type)) } let(:current_user) do - build_stubbed(:user, member_in_project: work_package.project).tap do |user| + build_stubbed(:user).tap do |user| allow(user).to receive(:allowed_to?).and_return(false) allow(user) .to receive(:allowed_to?) diff --git a/modules/backlogs/spec/contracts/work_packages/update_contract_spec.rb b/modules/backlogs/spec/contracts/work_packages/update_contract_spec.rb index 130b68ffc47..cbe507a19f9 100644 --- a/modules/backlogs/spec/contracts/work_packages/update_contract_spec.rb +++ b/modules/backlogs/spec/contracts/work_packages/update_contract_spec.rb @@ -35,7 +35,7 @@ RSpec.describe WorkPackages::UpdateContract do estimated_hours: 6.0, project:) end - let(:member) { create(:user, member_in_project: project, member_through_role: role) } + let(:member) { create(:user, member_with_roles: { project => role }) } let(:project) { create(:project) } let(:current_user) { member } let(:permissions) do diff --git a/modules/backlogs/spec/controllers/versions_controller_spec.rb b/modules/backlogs/spec/controllers/versions_controller_spec.rb index f7b78a8a7ee..02543c754a6 100644 --- a/modules/backlogs/spec/controllers/versions_controller_spec.rb +++ b/modules/backlogs/spec/controllers/versions_controller_spec.rb @@ -45,8 +45,7 @@ RSpec.describe VersionsController do let(:current_user) do create(:user, - member_in_project: version.project, - member_with_permissions: [:manage_versions]) + member_with_permissions: { version.project => [:manage_versions] }) end before do diff --git a/modules/backlogs/spec/features/backlogs/create_story_spec.rb b/modules/backlogs/spec/features/backlogs/create_story_spec.rb index 77bc7e310e0..f9476a8fbeb 100644 --- a/modules/backlogs/spec/features/backlogs/create_story_spec.rb +++ b/modules/backlogs/spec/features/backlogs/create_story_spec.rb @@ -28,7 +28,7 @@ require 'spec_helper' -RSpec.describe 'Backlogs', js: true do +RSpec.describe 'Backlogs', :js do let(:story_type) do create(:type_feature) end @@ -52,11 +52,10 @@ RSpec.describe 'Backlogs', js: true do let(:user) do create(:user, - member_in_project: project, - member_with_permissions: %i(add_work_packages - view_master_backlog - view_work_packages - assign_versions)) + member_with_permissions: { project => %i(add_work_packages + view_master_backlog + view_work_packages + assign_versions) }) end let(:project) { create(:project) } @@ -113,7 +112,7 @@ RSpec.describe 'Backlogs', js: true do # inactive types should not be selectable # but the user can choose from the active types expect(page) - .not_to have_selector('option', text: inactive_story_type.name) + .not_to have_css('option', text: inactive_story_type.name) select story_type2.name, from: 'type' @@ -122,7 +121,7 @@ RSpec.describe 'Backlogs', js: true do # velocity should be summed up immediately expect(page) - .to have_selector('.velocity', text: "12") + .to have_css('.velocity', text: "12") # this will ensure that the page refresh is through before we check the order menu.click @@ -137,14 +136,14 @@ RSpec.describe 'Backlogs', js: true do .not_to have_content 'Another story' expect(page) - .to have_selector '.story:nth-of-type(1)', text: 'The new story' + .to have_css '.story:nth-of-type(1)', text: 'The new story' expect(page) - .to have_selector '.story:nth-of-type(2)', text: existing_story1.subject + .to have_css '.story:nth-of-type(2)', text: existing_story1.subject expect(page) - .to have_selector '.story:nth-of-type(3)', text: existing_story2.subject + .to have_css '.story:nth-of-type(3)', text: existing_story2.subject # created with the selected type expect(page) - .to have_selector '.story:nth-of-type(1) .type_id', text: story_type2.name + .to have_css '.story:nth-of-type(1) .type_id', text: story_type2.name end end diff --git a/modules/backlogs/spec/features/backlogs_in_backlog_view_spec.rb b/modules/backlogs/spec/features/backlogs_in_backlog_view_spec.rb index 0d9d1a3c521..f2ab26c27a3 100644 --- a/modules/backlogs/spec/features/backlogs_in_backlog_view_spec.rb +++ b/modules/backlogs/spec/features/backlogs_in_backlog_view_spec.rb @@ -63,8 +63,7 @@ RSpec.describe 'Backlogs in backlog view', end let!(:current_user) do create(:user, - member_in_project: project, - member_through_role: role) + member_with_roles: { project => role }) end let!(:sprint) do create(:version, diff --git a/modules/backlogs/spec/features/empty_backlogs_spec.rb b/modules/backlogs/spec/features/empty_backlogs_spec.rb index 43035c95523..71781f4da6d 100644 --- a/modules/backlogs/spec/features/empty_backlogs_spec.rb +++ b/modules/backlogs/spec/features/empty_backlogs_spec.rb @@ -62,7 +62,7 @@ RSpec.describe 'Empty backlogs project', context 'as regular member' do let(:role) { create(:role, permissions: %i(view_master_backlog)) } - let(:current_user) { create(:user, member_in_project: project, member_through_role: role) } + let(:current_user) { create(:user, member_with_roles: { project => role }) } it 'only shows a no results box' do expect(page).to have_selector '.generic-table--no-results-container', text: I18n.t(:backlogs_empty_title) diff --git a/modules/backlogs/spec/features/impediments_spec.rb b/modules/backlogs/spec/features/impediments_spec.rb index 450cdd5e839..f0126d88944 100644 --- a/modules/backlogs/spec/features/impediments_spec.rb +++ b/modules/backlogs/spec/features/impediments_spec.rb @@ -65,8 +65,7 @@ RSpec.describe 'Impediments on taskboard', end let!(:current_user) do create(:user, - member_in_project: project, - member_through_role: role) + member_with_roles: { project => role }) end let!(:task1) do create(:work_package, diff --git a/modules/backlogs/spec/features/resolved_status_spec.rb b/modules/backlogs/spec/features/resolved_status_spec.rb index 27ca06372c6..345b2c83eda 100644 --- a/modules/backlogs/spec/features/resolved_status_spec.rb +++ b/modules/backlogs/spec/features/resolved_status_spec.rb @@ -40,8 +40,7 @@ RSpec.describe 'Resolved status' do end let!(:current_user) do create(:user, - member_in_project: project, - member_through_role: role) + member_with_roles: { project => role }) end let(:settings_page) { Pages::Projects::Settings.new(project) } diff --git a/modules/backlogs/spec/features/stories_in_backlog_spec.rb b/modules/backlogs/spec/features/stories_in_backlog_spec.rb index cd5e030ed82..128f4f54eaf 100644 --- a/modules/backlogs/spec/features/stories_in_backlog_spec.rb +++ b/modules/backlogs/spec/features/stories_in_backlog_spec.rb @@ -61,8 +61,7 @@ RSpec.describe 'Stories in backlog', end let!(:current_user) do create(:user, - member_in_project: project, - member_through_role: role) + member_with_roles: { project => role }) end let!(:sprint_story1) do create(:work_package, diff --git a/modules/backlogs/spec/features/tasks_on_taskboard_spec.rb b/modules/backlogs/spec/features/tasks_on_taskboard_spec.rb index 78390db6aa5..89c6b13adbc 100644 --- a/modules/backlogs/spec/features/tasks_on_taskboard_spec.rb +++ b/modules/backlogs/spec/features/tasks_on_taskboard_spec.rb @@ -62,8 +62,7 @@ RSpec.describe 'Tasks on taskboard', end let!(:current_user) do create(:user, - member_in_project: project, - member_through_role: role) + member_with_roles: { project => role }) end let!(:story1) do create(:work_package, diff --git a/modules/bim/spec/features/bcf/bcf_snapshot_column_spec.rb b/modules/bim/spec/features/bcf/bcf_snapshot_column_spec.rb index ebc7e50f4c4..52ecea4b7d4 100644 --- a/modules/bim/spec/features/bcf/bcf_snapshot_column_spec.rb +++ b/modules/bim/spec/features/bcf/bcf_snapshot_column_spec.rb @@ -10,8 +10,7 @@ RSpec.describe 'BCF snapshot column', let!(:bcf_issue) { create(:bcf_issue_with_viewpoint, work_package:) } let(:user) do create(:user, - member_in_project: project, - member_with_permissions: permissions) + member_with_permissions: { project => permissions }) end let!(:query) do query = build(:query, user:, project:) diff --git a/modules/bim/spec/features/bcf/create_spec.rb b/modules/bim/spec/features/bcf/create_spec.rb index 9ecccef2212..cc04a0fccd3 100644 --- a/modules/bim/spec/features/bcf/create_spec.rb +++ b/modules/bim/spec/features/bcf/create_spec.rb @@ -16,8 +16,7 @@ RSpec.describe 'Create BCF', let(:user) do create(:user, - member_in_project: project, - member_with_permissions: permissions) + member_with_permissions: { project => permissions }) end let!(:model) do diff --git a/modules/bim/spec/features/bcf/export_spec.rb b/modules/bim/spec/features/bcf/export_spec.rb index 9dc3b694db6..02d079b441b 100644 --- a/modules/bim/spec/features/bcf/export_spec.rb +++ b/modules/bim/spec/features/bcf/export_spec.rb @@ -52,8 +52,7 @@ RSpec.describe 'bcf export', let(:current_user) do create(:user, - member_in_project: project, - member_with_permissions: permissions) + member_with_permissions: { project => permissions }) end let!(:model) do diff --git a/modules/bim/spec/features/bcf_view_management_spec.rb b/modules/bim/spec/features/bcf_view_management_spec.rb index cf2d39bb1d1..c7dd65a85c1 100644 --- a/modules/bim/spec/features/bcf_view_management_spec.rb +++ b/modules/bim/spec/features/bcf_view_management_spec.rb @@ -49,8 +49,7 @@ RSpec.describe 'bcf view management', let(:user) do create(:user, - member_in_project: project, - member_through_role: role) + member_with_roles: { project => role }) end let!(:model) do diff --git a/modules/bim/spec/features/bim_navigation_spec.rb b/modules/bim/spec/features/bim_navigation_spec.rb index 1f64a3c387e..19aaa4525ff 100644 --- a/modules/bim/spec/features/bim_navigation_spec.rb +++ b/modules/bim/spec/features/bim_navigation_spec.rb @@ -38,8 +38,7 @@ RSpec.describe 'BIM navigation spec', let(:user) do create(:user, - member_in_project: project, - member_through_role: role) + member_with_roles: { project => role }) end let(:model) do diff --git a/modules/bim/spec/features/model_management_spec.rb b/modules/bim/spec/features/model_management_spec.rb index 99f03a12394..e34f7ab8c6c 100644 --- a/modules/bim/spec/features/model_management_spec.rb +++ b/modules/bim/spec/features/model_management_spec.rb @@ -38,8 +38,7 @@ RSpec.describe 'model management', let(:user) do create(:user, - member_in_project: project, - member_through_role: role) + member_with_roles: { project => role }) end let!(:model) do @@ -89,8 +88,7 @@ RSpec.describe 'model management', let(:view_role) { create(:role, permissions: %i[view_ifc_models view_work_packages]) } let(:view_user) do create(:user, - member_in_project: project, - member_through_role: view_role) + member_with_roles: { project => view_role }) end before do @@ -122,8 +120,7 @@ RSpec.describe 'model management', let(:no_permissions_role) { create(:role, permissions: %i[]) } let(:user_without_permissions) do create(:user, - member_in_project: project, - member_through_role: no_permissions_role) + member_with_roles: { project => no_permissions_role }) end before do diff --git a/modules/bim/spec/features/model_viewer_spec.rb b/modules/bim/spec/features/model_viewer_spec.rb index 21e8093f6d6..c7de1f259b1 100644 --- a/modules/bim/spec/features/model_viewer_spec.rb +++ b/modules/bim/spec/features/model_viewer_spec.rb @@ -37,8 +37,7 @@ RSpec.describe 'model viewer', let(:user) do create(:user, - member_in_project: project, - member_through_role: role) + member_with_roles: { project => role }) end let!(:model) do @@ -104,8 +103,7 @@ RSpec.describe 'model viewer', let(:view_role) { create(:role, permissions: %i[view_ifc_models view_work_packages view_linked_issues]) } let(:view_user) do create(:user, - member_in_project: project, - member_through_role: view_role) + member_with_roles: { project => view_role }) end before do @@ -126,8 +124,7 @@ RSpec.describe 'model viewer', let(:no_permissions_role) { create(:role, permissions: %i[]) } let(:user_without_permissions) do create(:user, - member_in_project: project, - member_through_role: no_permissions_role) + member_with_roles: { project => no_permissions_role }) end before do diff --git a/modules/bim/spec/features/revit_add_in/bim_revit_add_in_navigation_spec.rb b/modules/bim/spec/features/revit_add_in/bim_revit_add_in_navigation_spec.rb index d12b779d68d..725a77b92bb 100644 --- a/modules/bim/spec/features/revit_add_in/bim_revit_add_in_navigation_spec.rb +++ b/modules/bim/spec/features/revit_add_in/bim_revit_add_in_navigation_spec.rb @@ -40,8 +40,7 @@ RSpec.describe 'BIM Revit Add-in navigation spec', let(:user) do create(:user, - member_in_project: project, - member_through_role: role) + member_with_roles: { project => role }) end context "when logged in on model page" do diff --git a/modules/bim/spec/features/revit_add_in/bim_revit_add_in_refresh_button_spec.rb b/modules/bim/spec/features/revit_add_in/bim_revit_add_in_refresh_button_spec.rb index 18268108775..78a40916fa0 100644 --- a/modules/bim/spec/features/revit_add_in/bim_revit_add_in_refresh_button_spec.rb +++ b/modules/bim/spec/features/revit_add_in/bim_revit_add_in_refresh_button_spec.rb @@ -40,8 +40,7 @@ RSpec.describe 'BIM Revit Add-in navigation spec', let(:user) do create(:user, - member_in_project: project, - member_through_role: role) + member_with_roles: { project => role }) end let(:model_page) { Pages::IfcModels::ShowDefault.new(project) } diff --git a/modules/bim/spec/features/show_default_spec.rb b/modules/bim/spec/features/show_default_spec.rb index fd6a23b1b3b..d3c01bfcfad 100644 --- a/modules/bim/spec/features/show_default_spec.rb +++ b/modules/bim/spec/features/show_default_spec.rb @@ -37,8 +37,7 @@ RSpec.describe 'show default model', let(:user) do create(:user, - member_in_project: project, - member_through_role: role) + member_with_roles: { project => role }) end let(:model) do diff --git a/modules/bim/spec/features/viewer/show_viewpoint_spec.rb b/modules/bim/spec/features/viewer/show_viewpoint_spec.rb index d73b7a8ef1c..6ff853a9ec4 100644 --- a/modules/bim/spec/features/viewer/show_viewpoint_spec.rb +++ b/modules/bim/spec/features/viewer/show_viewpoint_spec.rb @@ -138,8 +138,7 @@ RSpec.describe 'Show viewpoint in model viewer', let(:user) do create(:user, - member_in_project: project, - member_with_permissions: permissions) + member_with_permissions: { project => permissions }) end it 'does not show the viewpoint' do diff --git a/modules/bim/spec/models/ifc_model_spec.rb b/modules/bim/spec/models/ifc_model_spec.rb index 82db5b26360..c2b25b892b2 100644 --- a/modules/bim/spec/models/ifc_model_spec.rb +++ b/modules/bim/spec/models/ifc_model_spec.rb @@ -28,8 +28,7 @@ RSpec.describe Bim::IfcModels::IfcModel do current_user do create(:user, - member_in_project: project, - member_with_permissions: %i[manage_ifc_models]) + member_with_permissions: { project => %i[manage_ifc_models] }) end it 'replaces the previous attachment' do diff --git a/modules/bim/spec/requests/api/bcf/v2_1/comments_api_spec.rb b/modules/bim/spec/requests/api/bcf/v2_1/comments_api_spec.rb index 3966d5f3594..ebfb716d838 100644 --- a/modules/bim/spec/requests/api/bcf/v2_1/comments_api_spec.rb +++ b/modules/bim/spec/requests/api/bcf/v2_1/comments_api_spec.rb @@ -29,7 +29,7 @@ require 'spec_helper' require 'rack/test' -require_relative './shared_responses' +require_relative 'shared_responses' RSpec.describe 'BCF 2.1 comments resource', content_type: :json do include Rack::Test::Methods @@ -41,17 +41,17 @@ RSpec.describe 'BCF 2.1 comments resource', content_type: :json do let(:view_only_user) do create(:user, - member_in_project: project, - member_with_permissions: %i[view_linked_issues view_work_packages]) + member_with_permissions: { project => %i[view_linked_issues view_work_packages] }) end let(:edit_user) do create(:user, - member_in_project: project, - member_with_permissions: %i[view_linked_issues view_work_packages manage_bcf]) + member_with_permissions: { project => %i[view_linked_issues view_work_packages manage_bcf] }) end - let(:user_without_permission) { create(:user, member_in_project: project) } + let(:user_without_permission) do + create(:user, member_with_permissions: { project => %i[view_work_packages edit_work_packages] }) + end let(:assignee) { create(:user) } diff --git a/modules/bim/spec/requests/api/bcf/v2_1/project_extensions_api_spec.rb b/modules/bim/spec/requests/api/bcf/v2_1/project_extensions_api_spec.rb index 0c83d4978f6..159203f0cfa 100644 --- a/modules/bim/spec/requests/api/bcf/v2_1/project_extensions_api_spec.rb +++ b/modules/bim/spec/requests/api/bcf/v2_1/project_extensions_api_spec.rb @@ -44,8 +44,7 @@ RSpec.describe 'BCF 2.1 project extensions resource', content_type: :json do context 'with only view_project permissions' do let(:current_user) do create(:user, - member_in_project: project, - member_with_permissions: [:view_project]) + member_with_permissions: { project => [:view_project] }) end before do @@ -74,14 +73,12 @@ RSpec.describe 'BCF 2.1 project extensions resource', content_type: :json do context 'with edit permissions in project' do let(:current_user) do create(:user, - member_in_project: project, - member_with_permissions: %i[view_project edit_project manage_bcf view_members work_package_assigned]) + member_with_permissions: { project => %i[view_project edit_project manage_bcf view_members work_package_assigned] }) end let(:other_user) do create(:user, - member_in_project: project, - member_with_permissions: %i[view_project work_package_assigned]) + member_with_permissions: { project => %i[view_project work_package_assigned] }) end before do diff --git a/modules/bim/spec/requests/api/bcf/v2_1/projects_api_spec.rb b/modules/bim/spec/requests/api/bcf/v2_1/projects_api_spec.rb index ca7b81f62b4..e9405fb0adb 100644 --- a/modules/bim/spec/requests/api/bcf/v2_1/projects_api_spec.rb +++ b/modules/bim/spec/requests/api/bcf/v2_1/projects_api_spec.rb @@ -29,19 +29,17 @@ require 'spec_helper' require 'rack/test' -require_relative './shared_responses' +require_relative 'shared_responses' RSpec.describe 'BCF 2.1 projects resource', content_type: :json do include Rack::Test::Methods let(:view_only_user) do - create(:user, - member_in_project: project) + create(:user, member_with_permissions: { project => %i[view_work_packages] }) end let(:edit_user) do create(:user, - member_in_project: project, - member_with_permissions: [:edit_project]) + member_with_permissions: { project => [:edit_project] }) end let(:non_member_user) do create(:user) diff --git a/modules/bim/spec/requests/api/bcf/v2_1/topics_api_spec.rb b/modules/bim/spec/requests/api/bcf/v2_1/topics_api_spec.rb index 888f5f1b1b6..7b04c035b8a 100644 --- a/modules/bim/spec/requests/api/bcf/v2_1/topics_api_spec.rb +++ b/modules/bim/spec/requests/api/bcf/v2_1/topics_api_spec.rb @@ -29,7 +29,7 @@ require 'spec_helper' require 'rack/test' -require_relative './shared_responses' +require_relative 'shared_responses' RSpec.describe 'BCF 2.1 topics resource', content_type: :json do include Rack::Test::Methods @@ -37,40 +37,35 @@ RSpec.describe 'BCF 2.1 topics resource', content_type: :json do let(:view_only_user) do create(:user, - member_in_project: project, - member_with_permissions: %i[view_linked_issues view_work_packages work_package_assigned]) + member_with_permissions: { project => %i[view_linked_issues view_work_packages work_package_assigned] }) end let(:only_member_user) do create(:user, - member_in_project: project, - member_with_permissions: []) + member_with_permissions: { project => [] }) end let(:edit_member_user) do create(:user, - member_in_project: project, - member_with_permissions: %i[manage_bcf - add_work_packages - view_linked_issues - view_work_packages - edit_work_packages]) + member_with_permissions: { project => %i[manage_bcf + add_work_packages + view_linked_issues + view_work_packages + edit_work_packages] }) end let(:edit_and_delete_member_user) do create(:user, - member_in_project: project, - member_with_permissions: %i[delete_bcf - delete_work_packages - manage_bcf - add_work_packages - view_linked_issues - view_work_packages]) + member_with_permissions: { project => %i[delete_bcf + delete_work_packages + manage_bcf + add_work_packages + view_linked_issues + view_work_packages] }) end let(:edit_work_package_member_user) do create(:user, - member_in_project: project, - member_with_permissions: %i[add_work_packages - view_linked_issues - edit_work_packages - view_work_packages]) + member_with_permissions: { project => %i[add_work_packages + view_linked_issues + edit_work_packages + view_work_packages] }) end let(:non_member_user) do create(:user) @@ -311,8 +306,8 @@ RSpec.describe 'BCF 2.1 topics resource', content_type: :json do end it 'deletes the Bcf Issue as well as the belonging Work Package' do - expect(WorkPackage.where(id: work_package.id)).to match_array [] - expect(Bim::Bcf::Issue.where(id: bcf_issue.id)).to match_array [] + expect(WorkPackage.where(id: work_package.id)).to be_empty + expect(Bim::Bcf::Issue.where(id: bcf_issue.id)).to be_empty end context 'lacking permission to delete bcf' do @@ -321,8 +316,8 @@ RSpec.describe 'BCF 2.1 topics resource', content_type: :json do it_behaves_like 'bcf api not allowed response' it 'deletes neither the Work Package nor the Bcf Issue' do - expect(WorkPackage.where(id: work_package.id)).to match_array [work_package] - expect(Bim::Bcf::Issue.where(id: bcf_issue.id)).to match_array [bcf_issue] + expect(WorkPackage.where(id: work_package.id)).to contain_exactly(work_package) + expect(Bim::Bcf::Issue.where(id: bcf_issue.id)).to contain_exactly(bcf_issue) end end end diff --git a/modules/bim/spec/requests/api/bcf/v2_1/viewpoints_api_spec.rb b/modules/bim/spec/requests/api/bcf/v2_1/viewpoints_api_spec.rb index 3a3071901ff..09064cab6c9 100644 --- a/modules/bim/spec/requests/api/bcf/v2_1/viewpoints_api_spec.rb +++ b/modules/bim/spec/requests/api/bcf/v2_1/viewpoints_api_spec.rb @@ -42,14 +42,12 @@ RSpec.describe 'BCF 2.1 viewpoints resource', content_type: :json do shared_let(:view_only_user) do create(:user, - member_in_project: project, - member_with_permissions: [:view_linked_issues]) + member_with_permissions: { project => [:view_linked_issues] }) end shared_let(:create_user) do create(:user, - member_in_project: project, - member_with_permissions: %i[view_linked_issues manage_bcf]) + member_with_permissions: { project => %i[view_linked_issues manage_bcf] }) end shared_let(:non_member_user) do diff --git a/modules/bim/spec/requests/api/bcf_xml/v1/bcf_xml_api_spec.rb b/modules/bim/spec/requests/api/bcf_xml/v1/bcf_xml_api_spec.rb index a01f0b3e1b7..c8f9cc13a55 100644 --- a/modules/bim/spec/requests/api/bcf_xml/v1/bcf_xml_api_spec.rb +++ b/modules/bim/spec/requests/api/bcf_xml/v1/bcf_xml_api_spec.rb @@ -38,7 +38,7 @@ RSpec.describe 'BCF XML API v1 bcf_xml resource' do let!(:project) { create(:project, enabled_module_names: %w[bim work_package_tracking], types: [type]) } let(:current_user) do - create(:user, member_in_project: project, member_through_role: role, firstname: "BIMjamin") + create(:user, member_with_roles: { project => role, firstname: "BIMjamin" }) end let(:work_package) { create(:work_package, status:, priority:, project:) } let(:bcf_issue) { create(:bcf_issue_with_comment, work_package:) } diff --git a/modules/bim/spec/services/ifc_models/set_attributes_service_spec.rb b/modules/bim/spec/services/ifc_models/set_attributes_service_spec.rb index be2a2904f8c..078bb0644f8 100644 --- a/modules/bim/spec/services/ifc_models/set_attributes_service_spec.rb +++ b/modules/bim/spec/services/ifc_models/set_attributes_service_spec.rb @@ -31,7 +31,7 @@ require 'spec_helper' RSpec.describe Bim::IfcModels::SetAttributesService, type: :model do shared_let(:project) { create(:project, enabled_module_names: %i[bim]) } shared_let(:other_project) { create(:project, enabled_module_names: %i[bim]) } - shared_let(:user) { create(:user, member_in_project: project, member_with_permissions: %i[manage_ifc_models]) } + shared_let(:user) { create(:user, member_with_permissions: { project => %i[manage_ifc_models] }) } let(:other_user) { build_stubbed(:user) } let(:contract_class) do diff --git a/modules/bim/spec/views/bim/ifc_models/ifc_models/index.html.erb_spec.rb b/modules/bim/spec/views/bim/ifc_models/ifc_models/index.html.erb_spec.rb index 09fd5d9d2d2..7bf23b2873c 100644 --- a/modules/bim/spec/views/bim/ifc_models/ifc_models/index.html.erb_spec.rb +++ b/modules/bim/spec/views/bim/ifc_models/ifc_models/index.html.erb_spec.rb @@ -44,8 +44,7 @@ RSpec.describe 'bim/ifc_models/ifc_models/index' do end let(:user) do create(:user, - member_in_project: project, - member_through_role: role) + member_with_roles: { project => role }) end let(:uploader_user) { user } diff --git a/modules/boards/spec/features/action_boards/assignee_board_spec.rb b/modules/boards/spec/features/action_boards/assignee_board_spec.rb index 7b0b047f529..e9df1c452a9 100644 --- a/modules/boards/spec/features/action_boards/assignee_board_spec.rb +++ b/modules/boards/spec/features/action_boards/assignee_board_spec.rb @@ -37,8 +37,7 @@ RSpec.describe 'Assignee action board', create(:user, firstname: 'Bob', lastname: 'Self', - member_in_project: project, - member_through_role: role) + member_with_roles: { project => role }) end let(:admin) { create(:admin) } let(:type) { create(:type_standard) } @@ -62,8 +61,7 @@ RSpec.describe 'Assignee action board', create(:user, firstname: 'Foo', lastname: 'Bar', - member_in_project: project, - member_through_role: role) + member_with_roles: { project => role }) end let!(:group) do diff --git a/modules/boards/spec/features/action_boards/custom_field_filters_spec.rb b/modules/boards/spec/features/action_boards/custom_field_filters_spec.rb index 1b4e236bce8..b8d5efaa546 100644 --- a/modules/boards/spec/features/action_boards/custom_field_filters_spec.rb +++ b/modules/boards/spec/features/action_boards/custom_field_filters_spec.rb @@ -33,8 +33,7 @@ require_relative './../support/board_page' RSpec.describe 'Custom field filter in boards', js: true, with_ee: %i[board_view] do let(:user) do create(:user, - member_in_project: project, - member_through_role: role) + member_with_roles: { project => role }) end let(:type) { create(:type_standard) } let(:project) { create(:project, types: [type], enabled_module_names: %i[work_package_tracking board_view]) } diff --git a/modules/boards/spec/features/action_boards/status_board_spec.rb b/modules/boards/spec/features/action_boards/status_board_spec.rb index ed018e58abd..1691590f47d 100644 --- a/modules/boards/spec/features/action_boards/status_board_spec.rb +++ b/modules/boards/spec/features/action_boards/status_board_spec.rb @@ -33,8 +33,7 @@ require_relative './../support/board_page' RSpec.describe 'Status action board', js: true, with_ee: %i[board_view] do let(:user) do create(:user, - member_in_project: project, - member_through_role: role) + member_with_roles: { project => role }) end let(:type) { create(:type_standard) } let(:project) { create(:project, types: [type], enabled_module_names: %i[work_package_tracking board_view]) } diff --git a/modules/boards/spec/features/action_boards/status_type_moving_board_spec.rb b/modules/boards/spec/features/action_boards/status_type_moving_board_spec.rb index e6b9fa3d327..634f374aecc 100644 --- a/modules/boards/spec/features/action_boards/status_type_moving_board_spec.rb +++ b/modules/boards/spec/features/action_boards/status_type_moving_board_spec.rb @@ -33,8 +33,7 @@ require_relative './../support/board_page' RSpec.describe 'Status action board', js: true, with_ee: %i[board_view] do let(:user) do create(:user, - member_in_project: project, - member_through_role: role) + member_with_roles: { project => role }) end let(:permissions) do %i[show_board_views manage_board_views add_work_packages diff --git a/modules/boards/spec/features/action_boards/subproject_board_spec.rb b/modules/boards/spec/features/action_boards/subproject_board_spec.rb index 8b38e17b1b5..6d84e5b65fe 100644 --- a/modules/boards/spec/features/action_boards/subproject_board_spec.rb +++ b/modules/boards/spec/features/action_boards/subproject_board_spec.rb @@ -27,14 +27,13 @@ #++ require 'spec_helper' -require_relative './../support//board_index_page' -require_relative './../support/board_page' +require_relative '../support//board_index_page' +require_relative '../support/board_page' -RSpec.describe 'Subproject action board', js: true, with_ee: %i[board_view] do +RSpec.describe 'Subproject action board', :js, with_ee: %i[board_view] do let(:user) do create(:user, - member_in_project: project, - member_through_role: role) + member_with_roles: { project => role }) end let(:type) { create(:type_standard) } let(:project) do @@ -73,9 +72,7 @@ RSpec.describe 'Subproject action board', js: true, with_ee: %i[board_view] do end let(:user) do - create(:user, - member_in_projects: [project, subproject1, subproject2], - member_through_role: role) + create(:user, member_with_roles: { project => role, subproject1 => role, subproject2 => role }) end it 'does not allow to move work packages' do @@ -96,15 +93,12 @@ RSpec.describe 'Subproject action board', js: true, with_ee: %i[board_view] do context 'with permissions in all subprojects' do let(:user) do - create(:user, - member_in_projects: [project, subproject1, subproject2], - member_through_role: role) + create(:user, member_with_roles: { project => role, subproject1 => role, subproject2 => role }) end let(:only_parent_user) do create(:user, - member_in_project: project, - member_through_role: role) + member_with_roles: { project => role }) end it 'allows management of subproject work packages' do @@ -180,8 +174,7 @@ RSpec.describe 'Subproject action board', js: true, with_ee: %i[board_view] do let(:user) do create(:user, # The membership in subproject2 gets removed later on - member_in_projects: [project, subproject1, subproject2], - member_through_role: role) + member_with_roles: { project => role, subproject1 => role, subproject2 => role }) end let!(:board) do @@ -209,7 +202,7 @@ RSpec.describe 'Subproject action board', js: true, with_ee: %i[board_view] do board_page.expect_card subproject1.name, work_package.subject # No error is to be displayed as erroneous columns are filtered out - expect(page).not_to have_selector('.op-toast.-error') + expect(page).not_to have_css('.op-toast.-error') board_page.expect_no_list(subproject2.name) expect(page) @@ -219,9 +212,7 @@ RSpec.describe 'Subproject action board', js: true, with_ee: %i[board_view] do context 'with an archived subproject' do let(:user) do - create(:user, - member_in_projects: [project, subproject1, subproject2], - member_through_role: role) + create(:user, member_with_roles: { project => role, subproject1 => role, subproject2 => role }) end let!(:board) do @@ -245,7 +236,7 @@ RSpec.describe 'Subproject action board', js: true, with_ee: %i[board_view] do board_page.open_and_fill_add_list_modal subproject2.name - expect(page).not_to have_selector('.ng-option', text: subproject2.name) + expect(page).not_to have_css('.ng-option', text: subproject2.name) end end end diff --git a/modules/boards/spec/features/action_boards/subtasks_board_spec.rb b/modules/boards/spec/features/action_boards/subtasks_board_spec.rb index fbc089a682c..be61d991c0c 100644 --- a/modules/boards/spec/features/action_boards/subtasks_board_spec.rb +++ b/modules/boards/spec/features/action_boards/subtasks_board_spec.rb @@ -37,8 +37,7 @@ RSpec.describe 'Subtasks action board', js: true, with_ee: %i[board_view] do let(:user) do create(:user, - member_in_project: project, - member_through_role: role) + member_with_roles: { project => role }) end let(:board_index) { Pages::BoardIndex.new(project) } diff --git a/modules/boards/spec/features/action_boards/version_board_spec.rb b/modules/boards/spec/features/action_boards/version_board_spec.rb index 35090c20124..61ae931d5a3 100644 --- a/modules/boards/spec/features/action_boards/version_board_spec.rb +++ b/modules/boards/spec/features/action_boards/version_board_spec.rb @@ -30,17 +30,13 @@ require 'spec_helper' require_relative '../support//board_index_page' require_relative '../support/board_page' -RSpec.describe 'Version action board', js: true, with_ee: %i[board_view] do +RSpec.describe 'Version action board', :js, with_ee: %i[board_view] do let(:user) do - create(:user, - member_in_projects: [project, second_project], - member_through_role: role) + create(:user, member_with_roles: { project => role, second_project => role }) end let(:second_user) do - create(:user, - member_in_projects: [project, second_project], - member_through_role: role_board_manager) + create(:user, member_with_roles: { project => role_board_manager, second_project => role_board_manager }) end let(:type) { create(:type_standard) } let!(:priority) { create(:default_priority) } @@ -306,9 +302,7 @@ RSpec.describe 'Version action board', js: true, with_ee: %i[board_view] do context 'when user has edit_work_packages, but missing assign_versions permissions' do let(:no_version_edit_user) do - create(:user, - member_in_projects: [project], - member_through_role: no_version_edit_role) + create(:user, member_with_roles: { project => no_version_edit_role }) end let(:no_version_edit_role) { create(:role, permissions: no_version_edit_permissions) } let(:no_version_edit_permissions) do @@ -343,7 +337,7 @@ RSpec.describe 'Version action board', js: true, with_ee: %i[board_view] do board_page.open_and_fill_add_list_modal 'Completely new version' - expect(page).not_to have_selector('.ng-option', text: 'Completely new version') + expect(page).not_to have_css('.ng-option', text: 'Completely new version') end end end diff --git a/modules/boards/spec/features/board_conflicts_spec.rb b/modules/boards/spec/features/board_conflicts_spec.rb index 10eb979f9ba..f944bcb44b9 100644 --- a/modules/boards/spec/features/board_conflicts_spec.rb +++ b/modules/boards/spec/features/board_conflicts_spec.rb @@ -33,8 +33,7 @@ require_relative './support/board_page' RSpec.describe 'Board remote changes resolution', js: true, with_ee: %i[board_view] do let(:user1) do create(:user, - member_in_project: project, - member_through_role: role) + member_with_roles: { project => role }) end let(:type) { create(:type_standard) } let(:project) { create(:project, types: [type], enabled_module_names: %i[work_package_tracking board_view]) } diff --git a/modules/boards/spec/features/board_highlighting_spec.rb b/modules/boards/spec/features/board_highlighting_spec.rb index 126cc14b345..1a2da5990a4 100644 --- a/modules/boards/spec/features/board_highlighting_spec.rb +++ b/modules/boards/spec/features/board_highlighting_spec.rb @@ -33,8 +33,7 @@ require_relative './support/board_page' RSpec.describe 'Work Package boards spec', js: true, with_ee: %i[board_view] do let(:user) do create(:user, - member_in_project: project, - member_through_role: role) + member_with_roles: { project => role }) end let(:project) { create(:project, enabled_module_names: %i[work_package_tracking board_view]) } let(:permissions) { %i[show_board_views manage_board_views add_work_packages view_work_packages manage_public_queries] } diff --git a/modules/boards/spec/features/board_index_spec.rb b/modules/boards/spec/features/board_index_spec.rb index a32c14cfe61..2686f6c46a3 100644 --- a/modules/boards/spec/features/board_index_spec.rb +++ b/modules/boards/spec/features/board_index_spec.rb @@ -57,13 +57,11 @@ RSpec.describe 'Work Package Project Boards Index Page', shared_let(:user_with_full_permissions) do create(:user, - member_in_project: project, - member_through_role: management_role) + member_with_roles: { project => management_role }) end shared_let(:user_with_limited_permissions) do create(:user, - member_in_project: project, - member_through_role: view_only_role) + member_with_roles: { project => view_only_role }) end shared_let(:priority) { create(:default_priority) } diff --git a/modules/boards/spec/features/board_management_spec.rb b/modules/boards/spec/features/board_management_spec.rb index 65e12d8568c..1cb45fcbf2c 100644 --- a/modules/boards/spec/features/board_management_spec.rb +++ b/modules/boards/spec/features/board_management_spec.rb @@ -33,8 +33,7 @@ require_relative './support/board_page' RSpec.describe 'Board management spec', js: true, with_ee: %i[board_view] do let(:user) do create(:user, - member_in_project: project, - member_through_role: role) + member_with_roles: { project => role }) end let(:project) { create(:project, enabled_module_names: %i[work_package_tracking board_view]) } let(:role) { create(:role, permissions:) } diff --git a/modules/boards/spec/features/board_navigation_spec.rb b/modules/boards/spec/features/board_navigation_spec.rb index b851070b4e1..b31170ed2d0 100644 --- a/modules/boards/spec/features/board_navigation_spec.rb +++ b/modules/boards/spec/features/board_navigation_spec.rb @@ -33,8 +33,7 @@ require_relative './support/board_page' RSpec.describe 'Work Package boards spec', js: true, with_ee: %i[board_view] do let(:user) do create(:user, - member_in_project: project, - member_through_role: role) + member_with_roles: { project => role }) end # The identifier is important to test https://community.openproject.com/wp/29754 let(:project) { create(:project, identifier: 'boards', enabled_module_names: %i[work_package_tracking board_view]) } diff --git a/modules/boards/spec/features/board_overview_spec.rb b/modules/boards/spec/features/board_overview_spec.rb index d23b223525a..cd3928e610d 100644 --- a/modules/boards/spec/features/board_overview_spec.rb +++ b/modules/boards/spec/features/board_overview_spec.rb @@ -70,17 +70,14 @@ RSpec.describe 'Work Package Boards Overview', end shared_let(:user_with_full_permissions) do create(:user, - member_in_project: project, - member_through_role: management_role) + member_with_roles: { project => management_role }) end shared_let(:user_with_limited_permissions) do create(:user, - member_in_project: project, - member_through_role: view_only_role) + member_with_roles: { project => view_only_role }) end shared_let(:user_without_permissions) do - create(:user, - member_in_project: project) + create(:user, member_with_permissions: { project => [] }) end shared_let(:priority) { create(:default_priority) } diff --git a/modules/boards/spec/features/board_reference_work_package_spec.rb b/modules/boards/spec/features/board_reference_work_package_spec.rb index 415d873f6f1..5a79c73e68b 100644 --- a/modules/boards/spec/features/board_reference_work_package_spec.rb +++ b/modules/boards/spec/features/board_reference_work_package_spec.rb @@ -27,14 +27,13 @@ #++ require 'spec_helper' -require_relative './support/board_index_page' -require_relative './support/board_page' +require_relative 'support/board_index_page' +require_relative 'support/board_page' -RSpec.describe 'Board reference work package spec', js: true, with_ee: %i[board_view] do +RSpec.describe 'Board reference work package spec', :js, with_ee: %i[board_view] do let(:user) do create(:user, - member_in_project: project, - member_through_role: role) + member_with_roles: { project => role }) end let(:project) { create(:project, enabled_module_names: %i[work_package_tracking board_view]) } let(:role) { create(:role, permissions:) } @@ -98,9 +97,7 @@ RSpec.describe 'Board reference work package spec', js: true, with_ee: %i[board_ let!(:work_package) { create(:work_package, subject: 'WP SUB', project: child_project) } let(:user) do - create(:user, - member_in_projects: [project, child_project], - member_through_role: role) + create(:user, member_with_roles: { project => role, child_project => role }) end it 'returns the work package when subproject filters is added' do diff --git a/modules/boards/spec/features/onboarding/boards_onboarding_tour_spec.rb b/modules/boards/spec/features/onboarding/boards_onboarding_tour_spec.rb index 610cdbfb791..f678f7b6b98 100644 --- a/modules/boards/spec/features/onboarding/boards_onboarding_tour_spec.rb +++ b/modules/boards/spec/features/onboarding/boards_onboarding_tour_spec.rb @@ -34,8 +34,7 @@ RSpec.describe 'boards onboarding tour', let(:next_button) { find('.enjoyhint_next_btn') } let(:user) do create(:admin, - member_in_project: demo_project, - member_through_role: role) + member_with_roles: { demo_project => role }) end let(:permissions) do %i[ diff --git a/modules/boards/spec/lib/open_project/boards/grid_registration_spec.rb b/modules/boards/spec/lib/open_project/boards/grid_registration_spec.rb index 3a6aaff6d37..cc751396f29 100644 --- a/modules/boards/spec/lib/open_project/boards/grid_registration_spec.rb +++ b/modules/boards/spec/lib/open_project/boards/grid_registration_spec.rb @@ -6,8 +6,7 @@ RSpec.describe OpenProject::Boards::GridRegistration do let(:board) { create(:board_grid, project:) } let(:user) do create(:user, - member_in_project: project, - member_with_permissions: permissions) + member_with_permissions: { project => permissions }) end describe 'from_scope' do diff --git a/modules/boards/spec/requests/api/v3/grids/grids_create_form_resource_spec.rb b/modules/boards/spec/requests/api/v3/grids/grids_create_form_resource_spec.rb index cb1678176a5..c7d61f0b177 100644 --- a/modules/boards/spec/requests/api/v3/grids/grids_create_form_resource_spec.rb +++ b/modules/boards/spec/requests/api/v3/grids/grids_create_form_resource_spec.rb @@ -42,11 +42,11 @@ RSpec.describe "POST /api/v3/grids/form for Board Grids", content_type: :json do let(:params) { {} } shared_let(:current_user) do - create(:user, member_in_project: project, member_with_permissions: [:manage_board_views]) + create(:user, member_with_permissions: { project => [:manage_board_views] }) end shared_let(:prohibited_user) do - create(:user, member_in_project: project, member_with_permissions: [:show_board_views]) + create(:user, member_with_permissions: { project => [:show_board_views] }) end subject(:response) { last_response } diff --git a/modules/boards/spec/requests/api/v3/grids/grids_update_form_resource_spec.rb b/modules/boards/spec/requests/api/v3/grids/grids_update_form_resource_spec.rb index 06167ce4034..3705c7b62ac 100644 --- a/modules/boards/spec/requests/api/v3/grids/grids_update_form_resource_spec.rb +++ b/modules/boards/spec/requests/api/v3/grids/grids_update_form_resource_spec.rb @@ -37,10 +37,10 @@ RSpec.describe "PATCH /api/v3/grids/:id/form for Board Grids", content_type: :js create(:project) end shared_let(:allowed_user) do - create(:user, member_in_project: project, member_with_permissions: [:manage_board_views]) + create(:user, member_with_permissions: { project => [:manage_board_views] }) end shared_let(:prohibited_user) do - create(:user, member_in_project: project, member_with_permissions: [:show_board_views]) + create(:user, member_with_permissions: { project => [:show_board_views] }) end let(:grid) do diff --git a/modules/boards/spec/services/copy_service_integration_spec.rb b/modules/boards/spec/services/copy_service_integration_spec.rb index f01e170e582..50cc87a6e89 100644 --- a/modules/boards/spec/services/copy_service_integration_spec.rb +++ b/modules/boards/spec/services/copy_service_integration_spec.rb @@ -31,8 +31,7 @@ require 'spec_helper' RSpec.describe Projects::CopyService, 'integration', type: :model do let(:current_user) do create(:user, - member_in_project: source, - member_through_role: role) + member_with_roles: { source => role }) end let(:project_copy) { subject.result } let(:board_copies) { Boards::Grid.where(project: project_copy) } @@ -55,9 +54,7 @@ RSpec.describe Projects::CopyService, 'integration', type: :model do describe 'for a subproject board' do let(:current_user) do - create(:user, - member_in_projects: [source, child_project], - member_through_role: role) + create(:user, member_with_roles: { source => role, child_project => role }) end let(:expected_error) do "Widget contained in Grid Board 'Subproject board': Only subproject filter has invalid values." diff --git a/modules/budgets/spec/features/budgets/attachment_upload_spec.rb b/modules/budgets/spec/features/budgets/attachment_upload_spec.rb index 987b0563a11..3ffaab89175 100644 --- a/modules/budgets/spec/features/budgets/attachment_upload_spec.rb +++ b/modules/budgets/spec/features/budgets/attachment_upload_spec.rb @@ -31,7 +31,7 @@ require 'features/page_objects/notification' RSpec.describe 'Upload attachment to budget', js: true do let(:user) do - create(:user, member_in_project: project, member_with_permissions: %i[view_budgets edit_budgets]) + create(:user, member_with_permissions: { project => %i[view_budgets edit_budgets] }) end let(:project) { create(:project) } let(:attachments) { Components::Attachments.new } diff --git a/modules/budgets/spec/features/budgets/copy_budget_spec.rb b/modules/budgets/spec/features/budgets/copy_budget_spec.rb index efaf1d9369c..70a0d4910a8 100644 --- a/modules/budgets/spec/features/budgets/copy_budget_spec.rb +++ b/modules/budgets/spec/features/budgets/copy_budget_spec.rb @@ -32,8 +32,7 @@ RSpec.describe 'Copying a budget', js: true do let(:project) { create(:project, enabled_module_names: %i[budgets costs]) } let(:current_user) do create(:user, - member_in_project: project, - member_with_permissions: %i(view_budgets edit_budgets view_hourly_rates view_cost_rates)) + member_with_permissions: { project => %i(view_budgets edit_budgets view_hourly_rates view_cost_rates) }) end let(:original_author) { create(:user) } let(:budget_subject) { "A budget subject" } diff --git a/modules/budgets/spec/lib/api/v3/budgets/budget_representer_spec.rb b/modules/budgets/spec/lib/api/v3/budgets/budget_representer_spec.rb index 99f26c3aa28..045727bbb05 100644 --- a/modules/budgets/spec/lib/api/v3/budgets/budget_representer_spec.rb +++ b/modules/budgets/spec/lib/api/v3/budgets/budget_representer_spec.rb @@ -34,7 +34,7 @@ RSpec.describe API::V3::Budgets::BudgetRepresenter do let(:project) { build(:project, id: 999) } let(:user) do create(:user, - member_in_project: project, + member_with_permissions: { project => %i[view_work_packages edit_work_packages] }, created_at: 1.day.ago, updated_at: Time.zone.now) end diff --git a/modules/budgets/spec/requests/api/v3/budgets/budget_resource_spec.rb b/modules/budgets/spec/requests/api/v3/budgets/budget_resource_spec.rb index fa9a56f72f8..cff10d27d45 100644 --- a/modules/budgets/spec/requests/api/v3/budgets/budget_resource_spec.rb +++ b/modules/budgets/spec/requests/api/v3/budgets/budget_resource_spec.rb @@ -37,8 +37,7 @@ RSpec.describe 'API v3 Budget resource' do let!(:budget) { create(:budget, project:) } let(:current_user) do create(:user, - member_in_project: project, - member_with_permissions: [:view_budgets]) + member_with_permissions: { project => [:view_budgets] }) end subject(:response) { last_response } diff --git a/modules/calendar/spec/controllers/ical_controller_spec.rb b/modules/calendar/spec/controllers/ical_controller_spec.rb index c7b1e5ad013..5639b9d27f8 100644 --- a/modules/calendar/spec/controllers/ical_controller_spec.rb +++ b/modules/calendar/spec/controllers/ical_controller_spec.rb @@ -63,8 +63,7 @@ RSpec.describe Calendar::ICalController do end let(:user) do create(:user, - member_in_project: project, - member_with_permissions: sufficient_permissions) + member_with_permissions: { project => sufficient_permissions }) end let(:sufficient_permissions) { %i[view_work_packages share_calendars] } let(:insufficient_permissions) { %i[view_work_packages] } @@ -180,8 +179,7 @@ RSpec.describe Calendar::ICalController do context 'with valid params and permissions when targeting a public query of somebody else' do let(:user2) do create(:user, - member_in_project: project, - member_with_permissions: sufficient_permissions) + member_with_permissions: { project => sufficient_permissions }) end let(:query2) do create(:query, @@ -208,8 +206,7 @@ RSpec.describe Calendar::ICalController do with_settings: { ical_enabled: false } do let(:user2) do create(:user, - member_in_project: project, - member_with_permissions: sufficient_permissions) + member_with_permissions: { project => sufficient_permissions }) end let(:query2) do create(:query, @@ -236,8 +233,7 @@ RSpec.describe Calendar::ICalController do with_settings: { login_required: true } do let(:user2) do create(:user, - member_in_project: project, - member_with_permissions: sufficient_permissions) + member_with_permissions: { project => sufficient_permissions }) end let(:query2) do create(:query, @@ -263,8 +259,7 @@ RSpec.describe Calendar::ICalController do context 'with valid params and permissions when targeting a private query of somebody else' do let(:user2) do create(:user, - member_in_project: project, - member_with_permissions: sufficient_permissions) + member_with_permissions: { project => sufficient_permissions }) end let(:query2) do create(:query, @@ -291,8 +286,7 @@ RSpec.describe Calendar::ICalController do let(:project2) { create(:project) } let(:user) do create(:user, - member_in_project: project2, - member_with_permissions: sufficient_permissions) + member_with_permissions: { project2 => sufficient_permissions }) end before do @@ -309,8 +303,7 @@ RSpec.describe Calendar::ICalController do context 'with valid params and missing permissions' do let(:user) do create(:user, - member_in_project: project, - member_with_permissions: insufficient_permissions) + member_with_permissions: { project => insufficient_permissions }) end before do diff --git a/modules/calendar/spec/features/calendar_dates_spec.rb b/modules/calendar/spec/features/calendar_dates_spec.rb index 5c35ed7d58e..95aa59e54af 100644 --- a/modules/calendar/spec/features/calendar_dates_spec.rb +++ b/modules/calendar/spec/features/calendar_dates_spec.rb @@ -27,18 +27,13 @@ #++ require 'spec_helper' -require_relative './shared_context' +require_relative 'shared_context' RSpec.describe 'Calendar non working days', :js, :with_cuprite do include_context 'with calendar full access' let!(:other_user) do - create(:user, - firstname: 'Bernd', - member_in_project: project, - member_with_permissions: %w[ - view_work_packages view_calendar - ]) + create(:user, firstname: 'Bernd', member_with_permissions: { project => %w[view_work_packages view_calendar] }) end before do @@ -53,25 +48,25 @@ RSpec.describe 'Calendar non working days', :js, :with_cuprite do let(:week_days) { week_with_saturday_and_sunday_as_weekend } it 'renders sat and sun as non working' do - expect(page).to have_selector('.fc-day-sat.fc-non-working-day', minimum: 1, wait: 10) - expect(page).to have_selector('.fc-day-sun.fc-non-working-day', minimum: 1) + expect(page).to have_css('.fc-day-sat.fc-non-working-day', minimum: 1, wait: 10) + expect(page).to have_css('.fc-day-sun.fc-non-working-day', minimum: 1) - expect(page).not_to have_selector('.fc-day-mon.fc-non-working-day') - expect(page).not_to have_selector('.fc-day-tue.fc-non-working-day') - expect(page).not_to have_selector('.fc-day-wed.fc-non-working-day') - expect(page).not_to have_selector('.fc-day-thu.fc-non-working-day') - expect(page).not_to have_selector('.fc-day-fri.fc-non-working-day') + expect(page).not_to have_css('.fc-day-mon.fc-non-working-day') + expect(page).not_to have_css('.fc-day-tue.fc-non-working-day') + expect(page).not_to have_css('.fc-day-wed.fc-non-working-day') + expect(page).not_to have_css('.fc-day-thu.fc-non-working-day') + expect(page).not_to have_css('.fc-day-fri.fc-non-working-day') find('.fc-next-button').click - expect(page).to have_selector('.fc-day-sat.fc-non-working-day', minimum: 1, wait: 10) - expect(page).to have_selector('.fc-day-sun.fc-non-working-day', minimum: 1) + expect(page).to have_css('.fc-day-sat.fc-non-working-day', minimum: 1, wait: 10) + expect(page).to have_css('.fc-day-sun.fc-non-working-day', minimum: 1) - expect(page).not_to have_selector('.fc-day-mon.fc-non-working-day') - expect(page).not_to have_selector('.fc-day-tue.fc-non-working-day') - expect(page).not_to have_selector('.fc-day-wed.fc-non-working-day') - expect(page).not_to have_selector('.fc-day-thu.fc-non-working-day') - expect(page).not_to have_selector('.fc-day-fri.fc-non-working-day') + expect(page).not_to have_css('.fc-day-mon.fc-non-working-day') + expect(page).not_to have_css('.fc-day-tue.fc-non-working-day') + expect(page).not_to have_css('.fc-day-wed.fc-non-working-day') + expect(page).not_to have_css('.fc-day-thu.fc-non-working-day') + expect(page).not_to have_css('.fc-day-fri.fc-non-working-day') end end @@ -79,23 +74,23 @@ RSpec.describe 'Calendar non working days', :js, :with_cuprite do let(:week_days) { week_with_no_working_days } it 'renders all as non working' do - expect(page).to have_selector('.fc-day-sat.fc-non-working-day', minimum: 1, wait: 10) - expect(page).to have_selector('.fc-day-sun.fc-non-working-day', minimum: 1) - expect(page).to have_selector('.fc-day-mon.fc-non-working-day', minimum: 1) - expect(page).to have_selector('.fc-day-tue.fc-non-working-day', minimum: 1) - expect(page).to have_selector('.fc-day-wed.fc-non-working-day', minimum: 1) - expect(page).to have_selector('.fc-day-thu.fc-non-working-day', minimum: 1) - expect(page).to have_selector('.fc-day-fri.fc-non-working-day', minimum: 1) + expect(page).to have_css('.fc-day-sat.fc-non-working-day', minimum: 1, wait: 10) + expect(page).to have_css('.fc-day-sun.fc-non-working-day', minimum: 1) + expect(page).to have_css('.fc-day-mon.fc-non-working-day', minimum: 1) + expect(page).to have_css('.fc-day-tue.fc-non-working-day', minimum: 1) + expect(page).to have_css('.fc-day-wed.fc-non-working-day', minimum: 1) + expect(page).to have_css('.fc-day-thu.fc-non-working-day', minimum: 1) + expect(page).to have_css('.fc-day-fri.fc-non-working-day', minimum: 1) find('.fc-next-button').click - expect(page).to have_selector('.fc-day-sat.fc-non-working-day', minimum: 1, wait: 10) - expect(page).to have_selector('.fc-day-sun.fc-non-working-day', minimum: 1) - expect(page).to have_selector('.fc-day-mon.fc-non-working-day', minimum: 1) - expect(page).to have_selector('.fc-day-tue.fc-non-working-day', minimum: 1) - expect(page).to have_selector('.fc-day-wed.fc-non-working-day', minimum: 1) - expect(page).to have_selector('.fc-day-thu.fc-non-working-day', minimum: 1) - expect(page).to have_selector('.fc-day-fri.fc-non-working-day', minimum: 1) + expect(page).to have_css('.fc-day-sat.fc-non-working-day', minimum: 1, wait: 10) + expect(page).to have_css('.fc-day-sun.fc-non-working-day', minimum: 1) + expect(page).to have_css('.fc-day-mon.fc-non-working-day', minimum: 1) + expect(page).to have_css('.fc-day-tue.fc-non-working-day', minimum: 1) + expect(page).to have_css('.fc-day-wed.fc-non-working-day', minimum: 1) + expect(page).to have_css('.fc-day-thu.fc-non-working-day', minimum: 1) + expect(page).to have_css('.fc-day-fri.fc-non-working-day', minimum: 1) end end end diff --git a/modules/calendar/spec/features/calendar_sharing_spec.rb b/modules/calendar/spec/features/calendar_sharing_spec.rb index 4afc37d68ac..6983a763fa5 100644 --- a/modules/calendar/spec/features/calendar_sharing_spec.rb +++ b/modules/calendar/spec/features/calendar_sharing_spec.rb @@ -29,7 +29,7 @@ require 'spec_helper' require_relative 'shared_context' -RSpec.describe 'Calendar sharing via ical', js: true do +RSpec.describe 'Calendar sharing via ical', :js do include_context 'with calendar full access' shared_let(:status) { create(:default_status) } @@ -37,13 +37,12 @@ RSpec.describe 'Calendar sharing via ical', js: true do let(:user_with_sharing_permission) do create(:user, firstname: 'Bernd', - member_in_project: project, - member_with_permissions: %w[ + member_with_permissions: { project => %w[ view_work_packages save_queries view_calendar share_calendars - ]) + ] }) end let(:saved_query) do create(:query_with_view_work_packages_calendar, @@ -58,18 +57,16 @@ RSpec.describe 'Calendar sharing via ical', js: true do # sharing via ical needs to be explicitly allowed create(:user, firstname: 'Bernd', - member_in_project: project, - member_with_permissions: %w[ + member_with_permissions: { project => %w[ view_work_packages save_queries view_calendar manage_calendars - ]) + ] }) end shared_let(:admin) do - create(:admin, - member_in_project: project) + create(:admin, member_with_permissions: { project => %i[view_work_packages edit_work_packages] }) end context 'without sufficient permissions and the ical_enabled setting enabled', with_settings: { ical_enabled: true } do @@ -100,7 +97,7 @@ RSpec.describe 'Calendar sharing via ical', js: true do it 'shows disabled sharing menu item' do # wait for settings button to become visible - expect(page).to have_selector("#work-packages-settings-button") + expect(page).to have_css("#work-packages-settings-button") # click on settings button page.find_by_id('work-packages-settings-button').click @@ -108,11 +105,11 @@ RSpec.describe 'Calendar sharing via ical', js: true do # expect disabled sharing menu item within "#settingsDropdown" do # expect(page).to have_button("Subscribe to calendar", disabled: true) # disabled selector not working - expect(page).to have_selector(".menu-item.inactive", text: "Subscribe to calendar") + expect(page).to have_css(".menu-item.inactive", text: "Subscribe to calendar") page.click_button("Subscribe to calendar") # modal should not be shown - expect(page).not_to have_selector('.spot-modal--header', text: "Subscribe to calendar") + expect(page).not_to have_css('.spot-modal--header', text: "Subscribe to calendar") end end end @@ -131,14 +128,13 @@ RSpec.describe 'Calendar sharing via ical', js: true do let(:user_with_sharing_permission) do create(:user, firstname: 'Bernd', - member_in_project: project, - member_with_permissions: %w[ + member_with_permissions: { project => %w[ view_work_packages save_queries view_calendar manage_calendars share_calendars - ]) + ] }) end it 'shows disabled sharing menu item' do @@ -147,7 +143,7 @@ RSpec.describe 'Calendar sharing via ical', js: true do click_link "Create new calendar" # wait for settings button to become visible - expect(page).to have_selector("#work-packages-settings-button") + expect(page).to have_css("#work-packages-settings-button") # click on settings button page.find_by_id('work-packages-settings-button').click @@ -155,11 +151,11 @@ RSpec.describe 'Calendar sharing via ical', js: true do # expect disabled sharing menu item within "#settingsDropdown" do # expect(page).to have_button("Subscribe to calendar", disabled: true) # disabled selector not working - expect(page).to have_selector(".menu-item.inactive", text: "Subscribe to calendar") + expect(page).to have_css(".menu-item.inactive", text: "Subscribe to calendar") page.click_button("Subscribe to calendar") # modal should not be shown - expect(page).not_to have_selector('.spot-modal--header', text: "Subscribe to calendar") + expect(page).not_to have_css('.spot-modal--header', text: "Subscribe to calendar") end end end @@ -179,31 +175,31 @@ RSpec.describe 'Calendar sharing via ical', js: true do it 'shows an active menu item' do # wait for settings button to become visible - expect(page).to have_selector("#work-packages-settings-button") + expect(page).to have_css("#work-packages-settings-button") # click on settings button page.find_by_id('work-packages-settings-button').click # expect active sharing menu item within "#settingsDropdown" do - expect(page).to have_selector(".menu-item", text: "Subscribe to calendar") + expect(page).to have_css(".menu-item", text: "Subscribe to calendar") end end it 'shows a sharing modal' do open_sharing_modal - expect(page).to have_selector('.spot-modal--header', text: "Subscribe to calendar") + expect(page).to have_css('.spot-modal--header', text: "Subscribe to calendar") end it 'closes the sharing modal when closed by user by clicking the close button' do open_sharing_modal - expect(page).to have_selector('.spot-modal--header', text: "Subscribe to calendar") + expect(page).to have_css('.spot-modal--header', text: "Subscribe to calendar") click_button "Cancel" - expect(page).not_to have_selector('.spot-modal--header', text: "Subscribe to calendar") + expect(page).not_to have_css('.spot-modal--header', text: "Subscribe to calendar") end it 'successfully requests a new tokenized iCalendar URL when a unique name is provided' do @@ -214,7 +210,7 @@ RSpec.describe 'Calendar sharing via ical', js: true do click_button "Copy URL" # implicitly testing for success -> modal is closed and fallback message is shown - expect(page).not_to have_selector('.spot-modal--header', text: "Subscribe to calendar") + expect(page).not_to have_css('.spot-modal--header', text: "Subscribe to calendar") expect(page).to have_content("/projects/#{saved_query.project.id}/calendars/#{saved_query.id}/ical?ical_token=") # explictly testing for success message is not working in test env, probably @@ -235,7 +231,7 @@ RSpec.describe 'Calendar sharing via ical', js: true do click_button "Copy URL" # modal is still shown and error message is shown - expect(page).to have_selector('.spot-modal--header', text: "Subscribe to calendar") + expect(page).to have_css('.spot-modal--header', text: "Subscribe to calendar") expect(page).to have_content("Name is mandatory") end @@ -246,7 +242,7 @@ RSpec.describe 'Calendar sharing via ical', js: true do click_button "Copy URL" - expect(page).not_to have_selector('.spot-modal--header', text: "Subscribe to calendar") + expect(page).not_to have_css('.spot-modal--header', text: "Subscribe to calendar") expect(page).to have_content("/projects/#{saved_query.project.id}/calendars/#{saved_query.id}/ical?ical_token=") # do the same thing again, now expect validation error @@ -258,7 +254,7 @@ RSpec.describe 'Calendar sharing via ical', js: true do click_button "Copy URL" # modal is still shown and error message is shown - expect(page).to have_selector('.spot-modal--header', text: "Subscribe to calendar") + expect(page).to have_css('.spot-modal--header', text: "Subscribe to calendar") expect(page).to have_content("Name is already in use") end end @@ -273,7 +269,7 @@ RSpec.describe 'Calendar sharing via ical', js: true do click_link 'Calendars and dates' end - expect(page).to have_selector(".title-container", text: "Working days") + expect(page).to have_css(".title-container", text: "Working days") click_link I18n.t(:label_calendar_subscriptions) expect(page) @@ -301,7 +297,7 @@ RSpec.describe 'Calendar sharing via ical', js: true do loading_indicator_saveguard # wait for settings button to become visible - expect(page).to have_selector("#work-packages-settings-button") + expect(page).to have_css("#work-packages-settings-button") # click on settings button page.find_by_id('work-packages-settings-button').click @@ -309,11 +305,11 @@ RSpec.describe 'Calendar sharing via ical', js: true do # expect disabled sharing menu item within "#settingsDropdown" do # expect(page).to have_button("Subscribe to calendar", disabled: true) # disabled selector not working - expect(page).to have_selector(".menu-item.inactive", text: "Subscribe to calendar") + expect(page).to have_css(".menu-item.inactive", text: "Subscribe to calendar") page.click_button("Subscribe to calendar") # modal should not be shown - expect(page).not_to have_selector('.spot-modal--header', text: "Subscribe to calendar") + expect(page).not_to have_css('.spot-modal--header', text: "Subscribe to calendar") end end end @@ -322,14 +318,14 @@ RSpec.describe 'Calendar sharing via ical', js: true do def open_sharing_modal # wait for settings button to become visible - expect(page).to have_selector("#work-packages-settings-button") + expect(page).to have_css("#work-packages-settings-button") # click on settings button page.find_by_id('work-packages-settings-button').click # expect disabled sharing menu item within "#settingsDropdown" do - expect(page).to have_selector(".menu-item", text: "Subscribe to calendar") + expect(page).to have_css(".menu-item", text: "Subscribe to calendar") page.click_button("Subscribe to calendar") end end diff --git a/modules/calendar/spec/features/calendar_user_interaction_spec.rb b/modules/calendar/spec/features/calendar_user_interaction_spec.rb index ae0b9eea208..12638c59d58 100644 --- a/modules/calendar/spec/features/calendar_user_interaction_spec.rb +++ b/modules/calendar/spec/features/calendar_user_interaction_spec.rb @@ -27,18 +27,15 @@ #++ require 'spec_helper' -require_relative './shared_context' +require_relative 'shared_context' -RSpec.describe 'Calendar drag&dop and resizing', js: true do +RSpec.describe 'Calendar drag&dop and resizing', :js do include_context 'with calendar full access' let!(:other_user) do create(:user, firstname: 'Bernd', - member_in_project: project, - member_with_permissions: %w[ - view_work_packages view_calendar - ]) + member_with_permissions: { project => %w[view_work_packages view_calendar] }) end let!(:work_package) do diff --git a/modules/calendar/spec/features/calendar_widget_spec.rb b/modules/calendar/spec/features/calendar_widget_spec.rb index 5041302dc12..f98375c84e8 100644 --- a/modules/calendar/spec/features/calendar_widget_spec.rb +++ b/modules/calendar/spec/features/calendar_widget_spec.rb @@ -46,11 +46,7 @@ RSpec.describe 'Calendar Widget', :js, :with_cuprite do let(:wp_full_view) { Pages::FullWorkPackage.new(work_package, project) } current_user do - create(:user, - member_in_project: project, - member_with_permissions: %w[ - view_work_packages view_calendar manage_overview - ]) + create(:user, member_with_permissions: { project => %w[view_work_packages view_calendar manage_overview] }) end before do diff --git a/modules/calendar/spec/features/calendars_index_spec.rb b/modules/calendar/spec/features/calendars_index_spec.rb index 715143f3995..aca9a636c82 100644 --- a/modules/calendar/spec/features/calendars_index_spec.rb +++ b/modules/calendar/spec/features/calendars_index_spec.rb @@ -41,19 +41,16 @@ RSpec.describe 'Calendars', 'index', :with_cuprite do create(:project, name: 'Project 1', enabled_module_names: %w[work_package_tracking calendar_view]) end - shared_let(:user) do - create(:user, - member_in_projects: [project, other_project], - member_with_permissions: %w[ - view_work_packages - edit_work_packages - save_queries - save_public_queries - view_calendar - manage_calendars - ]) + shared_let(:permissions) do + %w[ + view_work_packages + edit_work_packages + save_queries + save_public_queries + view_calendar + manage_calendars + ] end - let(:query) do create(:query_with_view_work_packages_calendar, project:, @@ -66,15 +63,18 @@ RSpec.describe 'Calendars', 'index', :with_cuprite do user:, public: true) end - let(:current_user) { user } + shared_let(:user) do + create(:user, member_with_permissions: { project => permissions, other_project => permissions }) + end + context 'when navigating to the global index page', :js do shared_examples 'global index page is reachable' do it 'is reachable' do expect(page).to have_current_path(calendars_path) expect(page).to have_text 'There is currently nothing to display.' - expect(page).to have_selector '#main-menu' + expect(page).to have_css '#main-menu' end end @@ -181,8 +181,7 @@ RSpec.describe 'Calendars', 'index', :with_cuprite do let(:current_user) do create(:user, firstname: 'Bernd', - member_in_project: project, - member_with_permissions: %w[view_work_packages view_calendar]) + member_with_permissions: { project => %w[view_work_packages view_calendar] }) end context 'and the view is non-public' do @@ -226,8 +225,7 @@ RSpec.describe 'Calendars', 'index', :with_cuprite do let(:current_user) do create(:user, firstname: 'Bernd', - member_in_project: project, - member_with_permissions: %w[view_work_packages view_calendar]) + member_with_permissions: { project => %w[view_work_packages view_calendar] }) end it 'does not show the management buttons' do diff --git a/modules/calendar/spec/features/calendars_spec.rb b/modules/calendar/spec/features/calendars_spec.rb index e149f5730ea..631edbf20bc 100644 --- a/modules/calendar/spec/features/calendars_spec.rb +++ b/modules/calendar/spec/features/calendars_spec.rb @@ -32,8 +32,7 @@ RSpec.describe 'Work package calendars', js: true do let(:project) { create(:project) } let(:user) do create(:user, - member_in_project: project, - member_with_permissions: %i[view_work_packages view_calendar manage_calendars]) + member_with_permissions: { project => %i[view_work_packages view_calendar manage_calendars] }) end let!(:current_work_package) do create(:work_package, diff --git a/modules/calendar/spec/features/query_handling_spec.rb b/modules/calendar/spec/features/query_handling_spec.rb index f4ff9de6ede..a80198c3a19 100644 --- a/modules/calendar/spec/features/query_handling_spec.rb +++ b/modules/calendar/spec/features/query_handling_spec.rb @@ -30,7 +30,7 @@ require 'spec_helper' require_relative '../support/pages/calendar' require_relative '../../../../spec/features/views/shared_examples' -RSpec.describe 'Calendar query handling', js: true do +RSpec.describe 'Calendar query handling', :js do shared_let(:type_task) { create(:type_task) } shared_let(:type_bug) { create(:type_bug) } shared_let(:project) do @@ -41,14 +41,13 @@ RSpec.describe 'Calendar query handling', js: true do shared_let(:user) do create(:user, - member_in_project: project, - member_with_permissions: %w[ + member_with_permissions: { project => %w[ view_work_packages edit_work_packages save_queries save_public_queries view_calendar - ]) + ] }) end shared_let(:task) do diff --git a/modules/calendar/spec/features/shared_context.rb b/modules/calendar/spec/features/shared_context.rb index 0a361378a15..68f975466e5 100644 --- a/modules/calendar/spec/features/shared_context.rb +++ b/modules/calendar/spec/features/shared_context.rb @@ -36,12 +36,11 @@ RSpec.shared_context 'with calendar full access' do shared_let(:user) do create(:user, - member_in_project: project, - member_with_permissions: %w[ + member_with_permissions: { project => %w[ view_work_packages edit_work_packages add_work_packages manage_calendars view_calendar manage_public_queries - ]) + ] }) end let(:calendar) { Pages::Calendar.new project } diff --git a/modules/calendar/spec/services/resolve_work_packages_service_spec.rb b/modules/calendar/spec/services/resolve_work_packages_service_spec.rb index dd13e5f960c..ef0730db21a 100644 --- a/modules/calendar/spec/services/resolve_work_packages_service_spec.rb +++ b/modules/calendar/spec/services/resolve_work_packages_service_spec.rb @@ -31,8 +31,7 @@ require 'spec_helper' RSpec.describe Calendar::ResolveWorkPackagesService, type: :model do let(:user1) do create(:user, - member_in_project: project, - member_with_permissions: permissions) + member_with_permissions: { project => permissions }) end let(:permissions) { %i[view_work_packages] } let(:project) { create(:project) } diff --git a/modules/costs/spec/controllers/work_packages_bulk_controller_spec.rb b/modules/costs/spec/controllers/work_packages_bulk_controller_spec.rb index f3608091760..f5646fa6e8f 100644 --- a/modules/costs/spec/controllers/work_packages_bulk_controller_spec.rb +++ b/modules/costs/spec/controllers/work_packages_bulk_controller_spec.rb @@ -31,7 +31,7 @@ require 'spec_helper' RSpec.describe WorkPackages::BulkController do let(:project) { create(:project_with_types) } let(:controller_role) { build(:role, permissions: %i[view_work_packages edit_work_packages]) } - let(:user) { create(:user, member_in_project: project, member_through_role: controller_role) } + let(:user) { create(:user, member_with_roles: { project => controller_role }) } let(:budget) { create(:budget, project:) } let(:work_package) { create(:work_package, project:) } diff --git a/modules/costs/spec/features/cost_entries/add_cost_entry_spec.rb b/modules/costs/spec/features/cost_entries/add_cost_entry_spec.rb index 3be27414fd8..bd6f4260f1b 100644 --- a/modules/costs/spec/features/cost_entries/add_cost_entry_spec.rb +++ b/modules/costs/spec/features/cost_entries/add_cost_entry_spec.rb @@ -47,8 +47,7 @@ RSpec.describe 'Work Package cost fields', js: true do end shared_let(:user) do create(:user, - member_in_project: project, - member_through_role: role) + member_with_roles: { project => role }) end shared_let(:cost_type1) do type = create(:cost_type, name: 'A', unit: 'A single', unit_plural: 'A plural') @@ -168,8 +167,7 @@ RSpec.describe 'Work Package cost fields', js: true do context 'with an additional placeholder user in the project' do let!(:placeholder_user) do create(:placeholder_user, - member_in_project: project, - member_through_role: role) + member_with_roles: { project => role }) end it 'does not allow to select them (Regression #36353)' do diff --git a/modules/costs/spec/features/cost_entries/add_entry_without_rate_permission_spec.rb b/modules/costs/spec/features/cost_entries/add_entry_without_rate_permission_spec.rb index f4ec4d51a15..43fc38b96ee 100644 --- a/modules/costs/spec/features/cost_entries/add_entry_without_rate_permission_spec.rb +++ b/modules/costs/spec/features/cost_entries/add_entry_without_rate_permission_spec.rb @@ -44,8 +44,7 @@ RSpec.describe 'Create cost entry without rate permissions', js: true do end shared_let(:user) do create(:user, - member_in_project: project, - member_through_role: role) + member_with_roles: { project => role }) end shared_let(:cost_type) do diff --git a/modules/costs/spec/features/destroy_work_package_with_cost_entries_spec.rb b/modules/costs/spec/features/destroy_work_package_with_cost_entries_spec.rb index 108adb0e503..697a021c0c0 100644 --- a/modules/costs/spec/features/destroy_work_package_with_cost_entries_spec.rb +++ b/modules/costs/spec/features/destroy_work_package_with_cost_entries_spec.rb @@ -32,8 +32,7 @@ RSpec.describe 'Deleting time entries', js: true do let(:project) { work_package.project } let(:user) do create(:user, - member_in_project: project, - member_through_role: role) + member_with_roles: { project => role }) end let(:role) do create(:role, diff --git a/modules/costs/spec/features/members_hourly_rates_spec.rb b/modules/costs/spec/features/members_hourly_rates_spec.rb index b96e656ca67..4e8284a4403 100644 --- a/modules/costs/spec/features/members_hourly_rates_spec.rb +++ b/modules/costs/spec/features/members_hourly_rates_spec.rb @@ -28,11 +28,10 @@ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper.rb') -RSpec.describe 'hourly rates on a member', js: true do +RSpec.describe 'hourly rates on a member', :js do let(:project) { build(:project) } let(:user) do - create(:admin, - member_in_project: project) + create(:admin, member_with_permissions: { project => %i[view_work_packages edit_work_packages] }) end let(:member) { Member.find_by(project:, principal: user) } @@ -51,7 +50,7 @@ RSpec.describe 'hourly rates on a member', js: true do end def add_rate(rate:, date:) - expect(page).to have_selector(".add-row-button") + expect(page).to have_css(".add-row-button") sleep(0.1) all("tr[id^='user_new_rate_attributes_'] .delete-row-button").each(&:click) sleep(0.1) diff --git a/modules/costs/spec/features/timer_spec.rb b/modules/costs/spec/features/timer_spec.rb index b23ea7aa46e..a2738b05b30 100644 --- a/modules/costs/spec/features/timer_spec.rb +++ b/modules/costs/spec/features/timer_spec.rb @@ -39,7 +39,7 @@ RSpec.describe 'Work Package timer', js: true do let(:time_logging_modal) { Components::TimeLoggingModal.new } let(:timer_button) { Components::WorkPackages::TimerButton.new } - let(:user) { create(:user, member_in_project: project, member_with_permissions: permissions) } + let(:user) { create(:user, member_with_permissions: { project => permissions }) } before do login_as user diff --git a/modules/costs/spec/features/view_own_rates_spec.rb b/modules/costs/spec/features/view_own_rates_spec.rb index a78fc102b26..c9d5397a760 100644 --- a/modules/costs/spec/features/view_own_rates_spec.rb +++ b/modules/costs/spec/features/view_own_rates_spec.rb @@ -32,8 +32,7 @@ RSpec.describe 'Only see your own rates', js: true do let(:project) { work_package.project } let(:user) do create(:user, - member_in_project: project, - member_through_role: role) + member_with_roles: { project => role }) end let(:role) do create(:role, permissions: %i[view_own_hourly_rate @@ -72,8 +71,7 @@ RSpec.describe 'Only see your own rates', js: true do let(:other_role) { create(:role, permissions: []) } let(:other_user) do create(:user, - member_in_project: project, - member_through_role: other_role) + member_with_roles: { project => other_role }) end let(:other_hourly_rate) do create(:default_hourly_rate, user: other_user, diff --git a/modules/costs/spec/lib/api/v3/cost_entries/work_package_costs_by_type_representer_spec.rb b/modules/costs/spec/lib/api/v3/cost_entries/work_package_costs_by_type_representer_spec.rb index 2782a67f612..e37fd309e40 100644 --- a/modules/costs/spec/lib/api/v3/cost_entries/work_package_costs_by_type_representer_spec.rb +++ b/modules/costs/spec/lib/api/v3/cost_entries/work_package_costs_by_type_representer_spec.rb @@ -52,7 +52,7 @@ RSpec.describe API::V3::CostEntries::WorkPackageCostsByTypeRepresenter do cost_type: cost_type_B) end let(:current_user) do - create(:user, member_in_project: project, member_through_role: role) + create(:user, member_with_roles: { project => role }) end let(:role) { build(:role, permissions: [:view_cost_entries]) } diff --git a/modules/costs/spec/lib/api/v3/work_packages/work_package_representer_spec.rb b/modules/costs/spec/lib/api/v3/work_packages/work_package_representer_spec.rb index de5621c9830..75f19cf7b14 100644 --- a/modules/costs/spec/lib/api/v3/work_packages/work_package_representer_spec.rb +++ b/modules/costs/spec/lib/api/v3/work_packages/work_package_representer_spec.rb @@ -41,8 +41,7 @@ RSpec.describe API::V3::WorkPackages::WorkPackageRepresenter do end let(:user) do create(:user, - member_in_project: project, - member_through_role: role) + member_with_roles: { project => role }) end let(:cost_entry_1) do @@ -146,8 +145,7 @@ RSpec.describe API::V3::WorkPackages::WorkPackageRepresenter do let(:user2) do create(:user, - member_in_project: project, - member_through_role: own_time_entries_role) + member_with_roles: { project => own_time_entries_role }) end let!(:own_time_entry) do diff --git a/modules/costs/spec/models/queries/time_entries/time_entry_query_integration_spec.rb b/modules/costs/spec/models/queries/time_entries/time_entry_query_integration_spec.rb index b113074da08..d5b3a980114 100644 --- a/modules/costs/spec/models/queries/time_entries/time_entry_query_integration_spec.rb +++ b/modules/costs/spec/models/queries/time_entries/time_entry_query_integration_spec.rb @@ -37,8 +37,8 @@ RSpec.describe Queries::TimeEntries::TimeEntryQuery, 'integration' do context 'when using ongoing filter' do let(:project) { create(:project, enabled_module_names: %w[costs]) } - let(:user) { create(:user, member_in_project: project, member_with_permissions: %i[log_own_time]) } - let(:other_user) { create(:user, member_in_project: project, member_with_permissions: %i[log_own_time]) } + let(:user) { create(:user, member_with_permissions: { project => %i[log_own_time] }) } + let(:other_user) { create(:user, member_with_permissions: { project => %i[log_own_time] }) } let!(:user_timer) { create(:time_entry, user:, project:, ongoing: true) } let!(:other_user_timer) { create(:time_entry, user: other_user, project:, ongoing: true) } diff --git a/modules/costs/spec/models/time_entries/scopes/visible_spec.rb b/modules/costs/spec/models/time_entries/scopes/visible_spec.rb index 0cdb263215f..1311e537157 100644 --- a/modules/costs/spec/models/time_entries/scopes/visible_spec.rb +++ b/modules/costs/spec/models/time_entries/scopes/visible_spec.rb @@ -32,8 +32,7 @@ RSpec.describe TimeEntries::Scopes::Visible do let(:project) { create(:project) } let(:user) do create(:user, - member_in_project: project, - member_with_permissions: permissions) + member_with_permissions: { project => permissions }) end let(:permissions) { [:view_time_entries] } diff --git a/modules/costs/spec/requests/api/cost_entries/cost_entries_by_work_package_resource_spec.rb b/modules/costs/spec/requests/api/cost_entries/cost_entries_by_work_package_resource_spec.rb index 53be388317d..c61993f0060 100644 --- a/modules/costs/spec/requests/api/cost_entries/cost_entries_by_work_package_resource_spec.rb +++ b/modules/costs/spec/requests/api/cost_entries/cost_entries_by_work_package_resource_spec.rb @@ -34,7 +34,7 @@ RSpec.describe 'API v3 Cost Entry resource' do include API::V3::Utilities::PathHelper let(:current_user) do - create(:user, member_in_project: project, member_through_role: role) + create(:user, member_with_roles: { project => role }) end let(:cost_entry) do create(:cost_entry, diff --git a/modules/costs/spec/requests/api/cost_entries/cost_entry_resource_spec.rb b/modules/costs/spec/requests/api/cost_entries/cost_entry_resource_spec.rb index 75a43d8d4fe..1eab78190f5 100644 --- a/modules/costs/spec/requests/api/cost_entries/cost_entry_resource_spec.rb +++ b/modules/costs/spec/requests/api/cost_entries/cost_entry_resource_spec.rb @@ -34,7 +34,7 @@ RSpec.describe 'API v3 Cost Entry resource' do include API::V3::Utilities::PathHelper let(:current_user) do - create(:user, member_in_project: project, member_through_role: role) + create(:user, member_with_roles: { project => role }) end let(:cost_entry) { create(:cost_entry, project:) } let(:role) { create(:role, permissions:) } diff --git a/modules/costs/spec/requests/api/cost_types/cost_type_resource_spec.rb b/modules/costs/spec/requests/api/cost_types/cost_type_resource_spec.rb index f3d3bf6f7cd..549fba1ab1c 100644 --- a/modules/costs/spec/requests/api/cost_types/cost_type_resource_spec.rb +++ b/modules/costs/spec/requests/api/cost_types/cost_type_resource_spec.rb @@ -34,7 +34,7 @@ RSpec.describe 'API v3 Cost Type resource' do include API::V3::Utilities::PathHelper let(:current_user) do - create(:user, member_in_project: project, member_through_role: role) + create(:user, member_with_roles: { project => role }) end let!(:cost_type) { create(:cost_type) } let(:role) { create(:role, permissions: [:view_cost_entries]) } diff --git a/modules/costs/spec/requests/api/time_entries/create_form_resource_spec.rb b/modules/costs/spec/requests/api/time_entries/create_form_resource_spec.rb index 6c40e51a846..be8761edeba 100644 --- a/modules/costs/spec/requests/api/time_entries/create_form_resource_spec.rb +++ b/modules/costs/spec/requests/api/time_entries/create_form_resource_spec.rb @@ -42,8 +42,7 @@ RSpec.describe API::V3::TimeEntries::CreateFormAPI, content_type: :json do let(:custom_field) { create(:time_entry_custom_field) } let(:user) do create(:user, - member_in_project: project, - member_with_permissions: permissions) + member_with_permissions: { project => permissions }) end let(:work_package) do create(:work_package, project:) diff --git a/modules/costs/spec/requests/api/time_entries/schemas/time_entry_schema_resource_spec.rb b/modules/costs/spec/requests/api/time_entries/schemas/time_entry_schema_resource_spec.rb index 4e57b25f483..5720d31e8fb 100644 --- a/modules/costs/spec/requests/api/time_entries/schemas/time_entry_schema_resource_spec.rb +++ b/modules/costs/spec/requests/api/time_entries/schemas/time_entry_schema_resource_spec.rb @@ -36,8 +36,7 @@ RSpec.describe 'API v3 Time entry schema resource', content_type: :json do let(:project) { create(:project) } let(:current_user) do create(:user, - member_in_project: project, - member_with_permissions: permissions) + member_with_permissions: { project => permissions }) end let(:permissions) { [:view_time_entries] } diff --git a/modules/costs/spec/requests/api/time_entries/update_form_resource_spec.rb b/modules/costs/spec/requests/api/time_entries/update_form_resource_spec.rb index d52b7d256b7..a1f3eacaede 100644 --- a/modules/costs/spec/requests/api/time_entries/update_form_resource_spec.rb +++ b/modules/costs/spec/requests/api/time_entries/update_form_resource_spec.rb @@ -43,8 +43,7 @@ RSpec.describe API::V3::TimeEntries::UpdateFormAPI, content_type: :json do let(:custom_field) { create(:time_entry_custom_field) } let(:user) do create(:user, - member_in_project: project, - member_with_permissions: permissions) + member_with_permissions: { project => permissions }) end let(:work_package) do create(:work_package, project:) diff --git a/modules/costs/spec/requests/api/time_entry_activity_resource_spec.rb b/modules/costs/spec/requests/api/time_entry_activity_resource_spec.rb index b4acb7df582..25e3ae09b2f 100644 --- a/modules/costs/spec/requests/api/time_entry_activity_resource_spec.rb +++ b/modules/costs/spec/requests/api/time_entry_activity_resource_spec.rb @@ -34,7 +34,7 @@ RSpec.describe 'API v3 time_entry_activity resource' do include API::V3::Utilities::PathHelper let(:current_user) do - create(:user, member_in_project: project, member_through_role: role) + create(:user, member_with_roles: { project => role }) end let(:activity) { create(:time_entry_activity) } let(:project) { create(:project) } diff --git a/modules/costs/spec/requests/api/time_entry_resource_spec.rb b/modules/costs/spec/requests/api/time_entry_resource_spec.rb index 2562cbab53a..ac2c59c5a12 100644 --- a/modules/costs/spec/requests/api/time_entry_resource_spec.rb +++ b/modules/costs/spec/requests/api/time_entry_resource_spec.rb @@ -34,7 +34,7 @@ RSpec.describe 'API v3 time_entry resource' do include API::V3::Utilities::PathHelper let(:current_user) do - create(:user, member_in_project: project, member_through_role: role) + create(:user, member_with_roles: { project => role }) end let(:time_entry) do create(:time_entry, project:, work_package:, user: current_user) @@ -43,7 +43,7 @@ RSpec.describe 'API v3 time_entry resource' do create(:time_entry, project:, work_package:, user: other_user) end let(:other_user) do - create(:user, member_in_project: project, member_through_role: role) + create(:user, member_with_roles: { project => role }) end let(:invisible_time_entry) do create(:time_entry, project: other_project, work_package: other_work_package, user: other_user) diff --git a/modules/dashboards/spec/features/custom_text_spec.rb b/modules/dashboards/spec/features/custom_text_spec.rb index 61f3045bfc4..f5a8c9c5256 100644 --- a/modules/dashboards/spec/features/custom_text_spec.rb +++ b/modules/dashboards/spec/features/custom_text_spec.rb @@ -47,7 +47,7 @@ RSpec.describe 'Project description widget on dashboard', js: true do end let(:user) do - create(:user, member_in_project: project, member_with_permissions: permissions) + create(:user, member_with_permissions: { project => permissions }) end let(:dashboard_page) do Pages::Dashboard.new(project) diff --git a/modules/dashboards/spec/features/members_principals_spec.rb b/modules/dashboards/spec/features/members_principals_spec.rb index f4decf991db..983bd5af980 100644 --- a/modules/dashboards/spec/features/members_principals_spec.rb +++ b/modules/dashboards/spec/features/members_principals_spec.rb @@ -44,22 +44,19 @@ RSpec.describe 'Dashboard page members', js: true do create(:user, firstname: 'Foo', lastname: 'Bar', - member_in_project: project, - member_with_permissions: permissions) + member_with_permissions: { project => permissions }) end shared_let(:group) do create(:group, name: 'DEV Team', - member_in_project: project, - member_with_permissions: permissions) + member_with_permissions: { project => permissions }) end shared_let(:placeholder) do create(:placeholder_user, name: 'DEVELOPER PLACEHOLDER', - member_in_project: project, - member_with_permissions: permissions) + member_with_permissions: { project => permissions }) end let(:dashboard_page) do diff --git a/modules/dashboards/spec/features/members_spec.rb b/modules/dashboards/spec/features/members_spec.rb index b87dbf18fda..daa3b4b665c 100644 --- a/modules/dashboards/spec/features/members_spec.rb +++ b/modules/dashboards/spec/features/members_spec.rb @@ -35,22 +35,21 @@ RSpec.describe 'Members widget on dashboard', js: true do let!(:other_project) { create(:project) } let!(:manager_user) do - create(:user, lastname: "Manager", member_in_project: project, member_through_role: role) + create(:user, lastname: "Manager", member_with_roles: { project => role }) end let!(:no_edit_member_user) do - create(:user, lastname: "No_Edit", member_in_project: project, member_through_role: no_edit_member_role) + create(:user, lastname: "No_Edit", member_with_roles: { project => no_edit_member_role }) end let!(:no_view_member_user) do - create(:user, lastname: "No_View", member_in_project: project, member_through_role: no_view_member_role) + create(:user, lastname: "No_View", member_with_roles: { project => no_view_member_role }) end let!(:placeholder_user) do create(:placeholder_user, lastname: "Placeholder user", - member_in_project: project, - member_through_role: no_view_member_role) + member_with_roles: { project => no_view_member_role }) end let!(:invisible_user) do - create(:user, lastname: "Invisible", member_in_project: other_project, member_through_role: role) + create(:user, lastname: "Invisible", member_with_roles: { other_project => role }) end let(:no_view_member_role) do diff --git a/modules/dashboards/spec/features/modifying_with_unallowed_spec.rb b/modules/dashboards/spec/features/modifying_with_unallowed_spec.rb index 907fe3f70da..229b706eb57 100644 --- a/modules/dashboards/spec/features/modifying_with_unallowed_spec.rb +++ b/modules/dashboards/spec/features/modifying_with_unallowed_spec.rb @@ -41,7 +41,7 @@ RSpec.describe 'Modifying a dashboard which already has widgets for which permis end let(:user) do - create(:user, member_in_project: project, member_with_permissions: permissions) + create(:user, member_with_permissions: { project => permissions }) end let!(:dashboard) do create(:dashboard_with_table, project:) diff --git a/modules/dashboards/spec/features/navigation_spec.rb b/modules/dashboards/spec/features/navigation_spec.rb index cb5e4903dda..bc7eec97bea 100644 --- a/modules/dashboards/spec/features/navigation_spec.rb +++ b/modules/dashboards/spec/features/navigation_spec.rb @@ -33,8 +33,7 @@ RSpec.describe 'Navigate to dashboard', js: true do let(:permissions) { [:view_dashboards] } let(:user) do create(:user, - member_in_project: project, - member_with_permissions: permissions) + member_with_permissions: { project => permissions }) end before do diff --git a/modules/dashboards/spec/features/project_description_spec.rb b/modules/dashboards/spec/features/project_description_spec.rb index 75df9fd5245..f6abf62bf0b 100644 --- a/modules/dashboards/spec/features/project_description_spec.rb +++ b/modules/dashboards/spec/features/project_description_spec.rb @@ -48,11 +48,11 @@ RSpec.describe 'Project description widget on dashboard', js: true do end let(:read_only_user) do - create(:user, member_in_project: project, member_with_permissions: read_only_permissions) + create(:user, member_with_permissions: { project => read_only_permissions }) end let(:editing_user) do - create(:user, member_in_project: project, member_with_permissions: editing_permissions) + create(:user, member_with_permissions: { project => editing_permissions }) end let(:dashboard_page) do @@ -124,7 +124,7 @@ RSpec.describe 'Project description widget on dashboard', js: true do end let(:current_user) do - create(:user, member_in_project: project, member_with_permissions: editing_permissions + %i[add_work_packages]) + create(:user, member_with_permissions: { project => editing_permissions + %i[add_work_packages] }) end let(:editor) { Components::WysiwygEditor.new 'body' } diff --git a/modules/dashboards/spec/features/project_details_spec.rb b/modules/dashboards/spec/features/project_details_spec.rb index b5fc763ea74..ce433a25912 100644 --- a/modules/dashboards/spec/features/project_details_spec.rb +++ b/modules/dashboards/spec/features/project_details_spec.rb @@ -30,7 +30,7 @@ require 'spec_helper' require_relative '../support/pages/dashboard' -RSpec.describe 'Project details widget on dashboard', js: true do +RSpec.describe 'Project details widget on dashboard', :js do let!(:version_cf) { create(:version_project_custom_field) } let!(:bool_cf) { create(:boolean_project_custom_field) } let!(:user_cf) { create(:user_project_custom_field) } @@ -73,12 +73,11 @@ RSpec.describe 'Project details widget on dashboard', js: true do end let(:read_only_user) do - create(:user, member_in_project: project, member_through_role: role) + create(:user, member_with_roles: { project => role }) end let(:editing_user) do create(:user, - member_in_project: project, - member_with_permissions: editing_permissions, + member_with_permissions: { project => editing_permissions }, firstname: 'Cool', lastname: 'Guy') end diff --git a/modules/dashboards/spec/features/project_status_spec.rb b/modules/dashboards/spec/features/project_status_spec.rb index f7134c1b56f..4b3e81bc51b 100644 --- a/modules/dashboards/spec/features/project_status_spec.rb +++ b/modules/dashboards/spec/features/project_status_spec.rb @@ -49,14 +49,12 @@ RSpec.describe 'Project status widget on dashboard', js: true do let(:read_only_user) do create(:user, - member_in_project: project, - member_with_permissions: read_only_permissions) + member_with_permissions: { project => read_only_permissions }) end let(:editing_user) do create(:user, - member_in_project: project, - member_with_permissions: editing_permissions) + member_with_permissions: { project => editing_permissions }) end let(:dashboard_page) do diff --git a/modules/dashboards/spec/requests/api/v3/grids/grids_create_form_resource_spec.rb b/modules/dashboards/spec/requests/api/v3/grids/grids_create_form_resource_spec.rb index ce301e01cab..453daca73e7 100644 --- a/modules/dashboards/spec/requests/api/v3/grids/grids_create_form_resource_spec.rb +++ b/modules/dashboards/spec/requests/api/v3/grids/grids_create_form_resource_spec.rb @@ -43,20 +43,17 @@ RSpec.describe "POST /api/v3/grids/form for Dashboard Grids", content_type: :jso shared_let(:allowed_user) do create(:user, - member_in_project: project, - member_with_permissions: %i[view_dashboards manage_dashboards save_queries manage_public_queries]) + member_with_permissions: { project => %i[view_dashboards manage_dashboards save_queries manage_public_queries] }) end shared_let(:no_save_query_user) do create(:user, - member_in_project: project, - member_with_permissions: %i[view_dashboards manage_dashboards]) + member_with_permissions: { project => %i[view_dashboards manage_dashboards] }) end shared_let(:prohibited_user) do create(:user, - member_in_project: project, - member_with_permissions: []) + member_with_permissions: { project => [] }) end subject(:response) { last_response } diff --git a/modules/dashboards/spec/requests/api/v3/grids/grids_resource_spec.rb b/modules/dashboards/spec/requests/api/v3/grids/grids_resource_spec.rb index 95afde92b79..7f4d92b309a 100644 --- a/modules/dashboards/spec/requests/api/v3/grids/grids_resource_spec.rb +++ b/modules/dashboards/spec/requests/api/v3/grids/grids_resource_spec.rb @@ -35,8 +35,7 @@ RSpec.describe 'API v3 Grids resource', content_type: :json do let(:current_user) do create(:user, - member_in_project: project, - member_with_permissions: permissions) + member_with_permissions: { project => permissions }) end let(:permissions) { %i[view_dashboards manage_dashboards] } let(:project) { create(:project) } diff --git a/modules/documents/spec/application_helper_spec.rb b/modules/documents/spec/application_helper_spec.rb index fa7dfa87252..bebb256bd0f 100644 --- a/modules/documents/spec/application_helper_spec.rb +++ b/modules/documents/spec/application_helper_spec.rb @@ -43,8 +43,7 @@ RSpec.describe ApplicationHelper do ]) end let(:project_member) do - create(:user, member_in_project: project, - member_through_role: role) + create(:user, member_with_roles: { project => role }) end let(:document) do create(:document, diff --git a/modules/documents/spec/features/attachment_upload_spec.rb b/modules/documents/spec/features/attachment_upload_spec.rb index c5bade94ab7..3cc6a441e9d 100644 --- a/modules/documents/spec/features/attachment_upload_spec.rb +++ b/modules/documents/spec/features/attachment_upload_spec.rb @@ -35,14 +35,11 @@ RSpec.describe 'Upload attachment to documents', :js, } do let!(:user) do create(:user, - member_in_project: project, - member_with_permissions: %i[view_documents - manage_documents]) + member_with_permissions: { project => %i[view_documents manage_documents] }) end let!(:other_user) do create(:user, - member_in_project: project, - member_with_permissions: %i[view_documents], + member_with_permissions: { project => %i[view_documents] }, notification_settings: [build(:notification_setting, all: true)]) end let!(:category) do @@ -62,7 +59,7 @@ RSpec.describe 'Upload attachment to documents', :js, it 'can upload an image' do visit new_project_document_path(project) - expect(page).to have_selector('#new_document', wait: 10) + expect(page).to have_css('#new_document', wait: 10) SeleniumHubWaiter.wait select(category.name, from: 'Category') fill_in "Title", with: 'New documentation' @@ -81,8 +78,8 @@ RSpec.describe 'Upload attachment to documents', :js, click_on 'Create' # Expect it to be present on the index page - expect(page).to have_selector('.document-category-elements--header', text: 'New documentation') - expect(page).to have_selector('#content img', count: 1) + expect(page).to have_css('.document-category-elements--header', text: 'New documentation') + expect(page).to have_css('#content img', count: 1) expect(page).to have_content('Image uploaded on creation') end @@ -93,7 +90,7 @@ RSpec.describe 'Upload attachment to documents', :js, SeleniumHubWaiter.wait find('.document-category-elements--header a', text: 'New documentation').click expect(page).to have_current_path "/documents/#{document.id}", wait: 10 - expect(page).to have_selector('#content img', count: 1) + expect(page).to have_css('#content img', count: 1) expect(page).to have_content('Image uploaded on creation') # Adding a second image @@ -121,7 +118,7 @@ RSpec.describe 'Upload attachment to documents', :js, click_on 'Save' # Expect both images to be present on the show page - expect(page).to have_selector('#content img', count: 2) + expect(page).to have_css('#content img', count: 2) expect(page).to have_content('Image uploaded on creation') expect(page).to have_content('Image uploaded the second time') attachments_list.expect_attached('image.png', count: 4) diff --git a/modules/documents/spec/lib/open_project/markdown_formatting_spec.rb b/modules/documents/spec/lib/open_project/markdown_formatting_spec.rb index 86d67709ff2..e6b5c8808f1 100644 --- a/modules/documents/spec/lib/open_project/markdown_formatting_spec.rb +++ b/modules/documents/spec/lib/open_project/markdown_formatting_spec.rb @@ -64,7 +64,7 @@ RSpec.describe OpenProject::TextFormatting, context 'when visible' do let(:role) { create(:role, permissions: %i[view_documents view_project]) } - let(:user) { create(:user, member_in_project: project, member_through_role: role) } + let(:user) { create(:user, member_with_roles: { project => role }) } let(:expected) do <<~HTML diff --git a/modules/documents/spec/requests/api/v3/documents/documents_resource_spec.rb b/modules/documents/spec/requests/api/v3/documents/documents_resource_spec.rb index d7850b942b7..6640803992c 100644 --- a/modules/documents/spec/requests/api/v3/documents/documents_resource_spec.rb +++ b/modules/documents/spec/requests/api/v3/documents/documents_resource_spec.rb @@ -34,7 +34,7 @@ RSpec.describe 'API v3 documents resource' do include API::V3::Utilities::PathHelper let(:current_user) do - create(:user, member_in_project: project, member_through_role: role) + create(:user, member_with_roles: { project => role }) end let(:document) { create(:document, project:) } let(:invisible_document) { create(:document, project: other_project) } diff --git a/modules/github_integration/spec/features/work_package_github_tab_spec.rb b/modules/github_integration/spec/features/work_package_github_tab_spec.rb index f19b625387b..da8c5607b5f 100644 --- a/modules/github_integration/spec/features/work_package_github_tab_spec.rb +++ b/modules/github_integration/spec/features/work_package_github_tab_spec.rb @@ -32,8 +32,7 @@ require_relative '../support/pages/work_package_github_tab' RSpec.describe 'Open the GitHub tab', js: true do let(:user) do create(:user, - member_in_project: project, - member_through_role: role) + member_with_roles: { project => role }) end let(:role) do create(:role, diff --git a/modules/meeting/spec/contracts/meeting_agenda_items/create_contract_spec.rb b/modules/meeting/spec/contracts/meeting_agenda_items/create_contract_spec.rb index a36dd6f13e1..c57d29a8506 100644 --- a/modules/meeting/spec/contracts/meeting_agenda_items/create_contract_spec.rb +++ b/modules/meeting/spec/contracts/meeting_agenda_items/create_contract_spec.rb @@ -41,7 +41,7 @@ RSpec.describe MeetingAgendaItems::CreateContract do context 'with permission' do let(:user) do - create(:user, member_in_project: project, member_with_permissions: %i[view_meetings edit_meetings]) + create(:user, member_with_permissions: { project => %i[view_meetings edit_meetings] }) end it_behaves_like 'contract is valid' diff --git a/modules/meeting/spec/contracts/meeting_agenda_items/delete_contract_spec.rb b/modules/meeting/spec/contracts/meeting_agenda_items/delete_contract_spec.rb index 3b72e63df42..bd4fdcc1491 100644 --- a/modules/meeting/spec/contracts/meeting_agenda_items/delete_contract_spec.rb +++ b/modules/meeting/spec/contracts/meeting_agenda_items/delete_contract_spec.rb @@ -41,7 +41,7 @@ RSpec.describe MeetingAgendaItems::DeleteContract do context 'with permission' do let(:user) do - create(:user, member_in_project: project, member_with_permissions: [:edit_meetings]) + create(:user, member_with_permissions: { project => [:edit_meetings] }) end it_behaves_like 'contract is valid' diff --git a/modules/meeting/spec/contracts/meeting_agenda_items/update_contract_spec.rb b/modules/meeting/spec/contracts/meeting_agenda_items/update_contract_spec.rb index 81156b7c913..8206014ac45 100644 --- a/modules/meeting/spec/contracts/meeting_agenda_items/update_contract_spec.rb +++ b/modules/meeting/spec/contracts/meeting_agenda_items/update_contract_spec.rb @@ -41,7 +41,7 @@ RSpec.describe MeetingAgendaItems::UpdateContract do context 'with permission' do let(:user) do - create(:user, member_in_project: project, member_with_permissions: [:edit_meetings]) + create(:user, member_with_permissions: { project => [:edit_meetings] }) end it_behaves_like 'contract is valid' diff --git a/modules/meeting/spec/controllers/meeting_contents_controller_spec.rb b/modules/meeting/spec/controllers/meeting_contents_controller_spec.rb index 9c9b17e996f..f1da09c7bb4 100644 --- a/modules/meeting/spec/controllers/meeting_contents_controller_spec.rb +++ b/modules/meeting/spec/controllers/meeting_contents_controller_spec.rb @@ -31,9 +31,9 @@ require 'spec_helper' RSpec.describe MeetingContentsController do shared_let(:role) { create(:role, permissions: [:view_meetings]) } shared_let(:project) { create(:project) } - shared_let(:author) { create(:user, member_in_project: project, member_through_role: role) } - shared_let(:watcher1) { create(:user, member_in_project: project, member_through_role: role) } - shared_let(:watcher2) { create(:user, member_in_project: project, member_through_role: role) } + shared_let(:author) { create(:user, member_with_roles: { project => role }) } + shared_let(:watcher1) { create(:user, member_with_roles: { project => role }) } + shared_let(:watcher2) { create(:user, member_with_roles: { project => role }) } shared_let(:meeting) do User.execute_as author do create(:meeting, author:, project:) diff --git a/modules/meeting/spec/features/meetings_attachments_spec.rb b/modules/meeting/spec/features/meetings_attachments_spec.rb index ed09fe21e89..3c036e2faa3 100644 --- a/modules/meeting/spec/features/meetings_attachments_spec.rb +++ b/modules/meeting/spec/features/meetings_attachments_spec.rb @@ -7,7 +7,7 @@ RSpec.describe 'Add an attachment to a meeting (agenda)', js: true, with_cuprite end let(:dev) do - create(:user, member_in_project: project, member_through_role: role) + create(:user, member_with_roles: { project => role }) end let(:project) { create(:project) } diff --git a/modules/meeting/spec/features/meetings_close_spec.rb b/modules/meeting/spec/features/meetings_close_spec.rb index 44deecd03d3..9a61e38f6ad 100644 --- a/modules/meeting/spec/features/meetings_close_spec.rb +++ b/modules/meeting/spec/features/meetings_close_spec.rb @@ -32,13 +32,11 @@ RSpec.describe 'Meetings close' do let(:project) { create(:project, enabled_module_names: %w[meetings]) } let(:user) do create(:user, - member_in_project: project, - member_with_permissions: permissions) + member_with_permissions: { project => permissions }) end let(:other_user) do create(:user, - member_in_project: project, - member_with_permissions: permissions) + member_with_permissions: { project => permissions }) end let!(:meeting) { create(:meeting, project:, title: 'Own awesome meeting!', author: user) } diff --git a/modules/meeting/spec/features/meetings_copy_spec.rb b/modules/meeting/spec/features/meetings_copy_spec.rb index 0861c692652..74060cec645 100644 --- a/modules/meeting/spec/features/meetings_copy_spec.rb +++ b/modules/meeting/spec/features/meetings_copy_spec.rb @@ -33,8 +33,7 @@ RSpec.describe 'Meetings copy', :js, :with_cuprite do shared_let(:permissions) { %i[view_meetings create_meetings] } shared_let(:user) do create(:user, - member_in_project: project, - member_with_permissions: permissions).tap do |u| + member_with_permissions: { project => permissions }).tap do |u| u.pref[:time_zone] = 'UTC' u.save! @@ -42,8 +41,7 @@ RSpec.describe 'Meetings copy', :js, :with_cuprite do end shared_let(:other_user) do create(:user, - member_in_project: project, - member_with_permissions: permissions) + member_with_permissions: { project => permissions }) end shared_let(:start_time) { Time.current.tomorrow.at_noon } diff --git a/modules/meeting/spec/features/meetings_delete_spec.rb b/modules/meeting/spec/features/meetings_delete_spec.rb index 1b0692e5e5d..5099b74948c 100644 --- a/modules/meeting/spec/features/meetings_delete_spec.rb +++ b/modules/meeting/spec/features/meetings_delete_spec.rb @@ -32,13 +32,11 @@ RSpec.describe 'Meetings deletion' do let(:project) { create(:project, enabled_module_names: %w[meetings]) } let(:user) do create(:user, - member_in_project: project, - member_with_permissions: permissions) + member_with_permissions: { project => permissions }) end let(:other_user) do create(:user, - member_in_project: project, - member_with_permissions: permissions) + member_with_permissions: { project => permissions }) end let!(:meeting) { create(:meeting, project:, title: 'Own awesome meeting!', author: user) } diff --git a/modules/meeting/spec/features/meetings_new_spec.rb b/modules/meeting/spec/features/meetings_new_spec.rb index cbddfd09e26..49ecffb621c 100644 --- a/modules/meeting/spec/features/meetings_new_spec.rb +++ b/modules/meeting/spec/features/meetings_new_spec.rb @@ -37,8 +37,7 @@ RSpec.describe 'Meetings new', :js, with_cuprite: false do let(:user) do create(:user, lastname: 'First', - member_in_project: project, - member_with_permissions: permissions).tap do |u| + member_with_permissions: { project => permissions }).tap do |u| u.pref[:time_zone] = time_zone u.save! @@ -47,8 +46,7 @@ RSpec.describe 'Meetings new', :js, with_cuprite: false do let(:other_user) do create(:user, lastname: 'Second', - member_in_project: project, - member_with_permissions: permissions) + member_with_permissions: { project => permissions }) end let(:permissions) { %i[view_meetings create_meetings] } let(:current_user) { user } diff --git a/modules/meeting/spec/features/meetings_participants_spec.rb b/modules/meeting/spec/features/meetings_participants_spec.rb index c401ab50034..74e0563b902 100644 --- a/modules/meeting/spec/features/meetings_participants_spec.rb +++ b/modules/meeting/spec/features/meetings_participants_spec.rb @@ -35,20 +35,17 @@ RSpec.describe 'Meetings participants' do let!(:user) do create(:user, firstname: 'Current', - member_in_project: project, - member_with_permissions: %i[view_meetings edit_meetings]) + member_with_permissions: { project => %i[view_meetings edit_meetings] }) end let!(:viewer_user) do create(:user, firstname: 'Viewer', - member_in_project: project, - member_with_permissions: %i[view_meetings]) + member_with_permissions: { project => %i[view_meetings] }) end let!(:non_viewer_user) do create(:user, firstname: 'Nonviewer', - member_in_project: project, - member_with_permissions: %i[]) + member_with_permissions: { project => %i[] }) end let(:edit_page) { Pages::Meetings::Edit.new(meeting) } let!(:meeting) { create(:meeting, project:, title: 'Awesome meeting!') } diff --git a/modules/meeting/spec/features/meetings_search_spec.rb b/modules/meeting/spec/features/meetings_search_spec.rb index ea4fde75439..45782ad79de 100644 --- a/modules/meeting/spec/features/meetings_search_spec.rb +++ b/modules/meeting/spec/features/meetings_search_spec.rb @@ -31,7 +31,7 @@ require 'spec_helper' RSpec.describe 'Meeting search', js: true do include Components::Autocompleter::NgSelectAutocompleteHelpers let(:project) { create(:project) } - let(:user) { create(:user, member_in_project: project, member_through_role: role) } + let(:user) { create(:user, member_with_roles: { project => role }) } let(:role) { create(:role, permissions: %i(view_meetings view_work_packages)) } let!(:meeting) { create(:meeting, project:) } diff --git a/modules/meeting/spec/features/meetings_show_spec.rb b/modules/meeting/spec/features/meetings_show_spec.rb index 99d1aef4654..8fe840b72a2 100644 --- a/modules/meeting/spec/features/meetings_show_spec.rb +++ b/modules/meeting/spec/features/meetings_show_spec.rb @@ -35,8 +35,7 @@ RSpec.describe 'Meetings', js: true do let(:role) { create(:role, permissions:) } let(:user) do create(:user, - member_in_project: project, - member_through_role: role) + member_with_roles: { project => role }) end let!(:meeting) { create(:meeting, project:, title: 'Awesome meeting!') } diff --git a/modules/meeting/spec/features/structured_meetings/structured_meeting_crud_spec.rb b/modules/meeting/spec/features/structured_meetings/structured_meeting_crud_spec.rb index a483d33706c..298c07def1f 100644 --- a/modules/meeting/spec/features/structured_meetings/structured_meeting_crud_spec.rb +++ b/modules/meeting/spec/features/structured_meetings/structured_meeting_crud_spec.rb @@ -43,8 +43,7 @@ RSpec.describe 'Structured meetings CRUD', shared_let(:user) do create(:user, lastname: 'First', - member_in_project: project, - member_with_permissions: %i[view_meetings create_meetings edit_meetings delete_meetings view_work_packages]).tap do |u| + member_with_permissions: { project => %i[view_meetings create_meetings edit_meetings delete_meetings view_work_packages] }).tap do |u| u.pref[:time_zone] = 'utc' u.save! @@ -53,8 +52,7 @@ RSpec.describe 'Structured meetings CRUD', shared_let(:other_user) do create(:user, lastname: 'Second', - member_in_project: project, - member_with_permissions: %i[view_meetings view_work_packages]) + member_with_permissions: { project => %i[view_meetings view_work_packages] }) end shared_let(:no_member_user) do create(:user, diff --git a/modules/meeting/spec/lib/open_project/markdown_formatting_spec.rb b/modules/meeting/spec/lib/open_project/markdown_formatting_spec.rb index 77e23e975ca..f182dbd0cc1 100644 --- a/modules/meeting/spec/lib/open_project/markdown_formatting_spec.rb +++ b/modules/meeting/spec/lib/open_project/markdown_formatting_spec.rb @@ -66,7 +66,7 @@ RSpec.describe OpenProject::TextFormatting, context 'when visible' do let(:role) { create(:role, permissions: %i[view_meetings view_project]) } - let(:user) { create(:user, member_in_project: project, member_through_role: role) } + let(:user) { create(:user, member_with_roles: { project => role }) } let(:expected) do <<~HTML diff --git a/modules/meeting/spec/mailers/meeting_mailer_spec.rb b/modules/meeting/spec/mailers/meeting_mailer_spec.rb index f2877756dbe..94791624a7a 100644 --- a/modules/meeting/spec/mailers/meeting_mailer_spec.rb +++ b/modules/meeting/spec/mailers/meeting_mailer_spec.rb @@ -33,12 +33,11 @@ RSpec.describe MeetingMailer do shared_let(:project) { create(:project, name: 'My project') } shared_let(:author) do create(:user, - member_in_project: project, - member_through_role: role, + member_with_roles: { project => role }, preferences: { time_zone: 'Europe/Berlin' }) end - shared_let(:watcher1) { create(:user, member_in_project: project, member_through_role: role) } - shared_let(:watcher2) { create(:user, member_in_project: project, member_through_role: role) } + shared_let(:watcher1) { create(:user, member_with_roles: { project => role }) } + shared_let(:watcher2) { create(:user, member_with_roles: { project => role }) } let(:meeting) do create(:meeting, diff --git a/modules/my_page/spec/features/my/accountable_spec.rb b/modules/my_page/spec/features/my/accountable_spec.rb index 8819b2ba873..884b475f8c0 100644 --- a/modules/my_page/spec/features/my/accountable_spec.rb +++ b/modules/my_page/spec/features/my/accountable_spec.rb @@ -65,8 +65,7 @@ RSpec.describe 'Accountable widget on my page', js: true do let(:user) do create(:user, - member_in_project: project, - member_through_role: role) + member_with_roles: { project => role }) end let(:my_page) do Pages::My::Page.new diff --git a/modules/my_page/spec/features/my/assigned_to_me_spec.rb b/modules/my_page/spec/features/my/assigned_to_me_spec.rb index b1c95049726..7feda9a5721 100644 --- a/modules/my_page/spec/features/my/assigned_to_me_spec.rb +++ b/modules/my_page/spec/features/my/assigned_to_me_spec.rb @@ -70,8 +70,7 @@ RSpec.describe 'Assigned to me embedded query on my page', js: true do let(:user) do create(:user, - member_in_project: project, - member_through_role: role) + member_with_roles: { project => role }) end let(:my_page) do Pages::My::Page.new diff --git a/modules/my_page/spec/features/my/custom_text_spec.rb b/modules/my_page/spec/features/my/custom_text_spec.rb index e6d1035fdf4..d231603122f 100644 --- a/modules/my_page/spec/features/my/custom_text_spec.rb +++ b/modules/my_page/spec/features/my/custom_text_spec.rb @@ -41,10 +41,10 @@ RSpec.describe 'Custom text widget on my page', js: true do end let(:user) do - create(:user, member_in_project: project, member_with_permissions: permissions) + create(:user, member_with_permissions: { project => permissions }) end let(:other_user) do - create(:user, member_in_project: project, member_with_permissions: permissions) + create(:user, member_with_permissions: { project => permissions }) end let(:my_page) do Pages::My::Page.new diff --git a/modules/my_page/spec/features/my/documents_spec.rb b/modules/my_page/spec/features/my/documents_spec.rb index c5a7ef66be8..2b8cf8c1719 100644 --- a/modules/my_page/spec/features/my/documents_spec.rb +++ b/modules/my_page/spec/features/my/documents_spec.rb @@ -47,8 +47,7 @@ RSpec.describe 'My page documents widget', js: true do end let(:user) do create(:user, - member_in_project: project, - member_with_permissions: %i[view_documents]) + member_with_permissions: { project => %i[view_documents] }) end let(:my_page) do Pages::My::Page.new diff --git a/modules/my_page/spec/features/my/my_page_spec.rb b/modules/my_page/spec/features/my/my_page_spec.rb index af071502b81..410c79f89b5 100644 --- a/modules/my_page/spec/features/my/my_page_spec.rb +++ b/modules/my_page/spec/features/my/my_page_spec.rb @@ -49,8 +49,7 @@ RSpec.describe 'My page', js: true do let(:user) do create(:user, - member_in_project: project, - member_with_permissions: %i[view_work_packages add_work_packages save_queries]) + member_with_permissions: { project => %i[view_work_packages add_work_packages save_queries] }) end let(:my_page) do Pages::My::Page.new diff --git a/modules/my_page/spec/features/my/news_spec.rb b/modules/my_page/spec/features/my/news_spec.rb index 2f44d9c79b3..d9b10febed6 100644 --- a/modules/my_page/spec/features/my/news_spec.rb +++ b/modules/my_page/spec/features/my/news_spec.rb @@ -47,8 +47,7 @@ RSpec.describe 'My page news widget spec', js: true do end let(:user) do create(:user, - member_in_project: project, - member_with_permissions: %i[]) + member_with_permissions: { project => %i[] }) end let(:my_page) do Pages::My::Page.new diff --git a/modules/my_page/spec/features/my/time_entries_current_user_spec.rb b/modules/my_page/spec/features/my/time_entries_current_user_spec.rb index 622feb5a755..d6a0026fccc 100644 --- a/modules/my_page/spec/features/my/time_entries_current_user_spec.rb +++ b/modules/my_page/spec/features/my/time_entries_current_user_spec.rb @@ -105,8 +105,7 @@ RSpec.describe 'My page time entries current user widget spec', js: true do end let(:user) do create(:user, - member_in_project: project, - member_with_permissions: %i[view_time_entries edit_time_entries view_work_packages log_own_time]) + member_with_permissions: { project => %i[view_time_entries edit_time_entries view_work_packages log_own_time] }) end let(:my_page) do Pages::My::Page.new diff --git a/modules/my_page/spec/features/my/work_package_table_spec.rb b/modules/my_page/spec/features/my/work_package_table_spec.rb index ec70a0ed2f3..cb573259bf2 100644 --- a/modules/my_page/spec/features/my/work_package_table_spec.rb +++ b/modules/my_page/spec/features/my/work_package_table_spec.rb @@ -56,8 +56,7 @@ RSpec.describe 'Arbitrary WorkPackage query table widget on my page', js: true d let(:user) do create(:user, - member_in_project: project, - member_with_permissions: permissions) + member_with_permissions: { project => permissions }) end let(:my_page) do Pages::My::Page.new diff --git a/modules/my_page/spec/requests/api/v3/grids/grids_create_form_resource_spec.rb b/modules/my_page/spec/requests/api/v3/grids/grids_create_form_resource_spec.rb index 321a544ec98..3abb7c10e65 100644 --- a/modules/my_page/spec/requests/api/v3/grids/grids_create_form_resource_spec.rb +++ b/modules/my_page/spec/requests/api/v3/grids/grids_create_form_resource_spec.rb @@ -38,8 +38,7 @@ RSpec.describe "POST /api/v3/grids/form", content_type: :json do end shared_let(:current_user) do create(:user, - member_in_project: project, - member_with_permissions: %i[save_queries]) + member_with_permissions: { project => %i[save_queries] }) end let(:path) { api_v3_paths.create_grid_form } diff --git a/modules/overviews/spec/features/low_permissions_page_creation_spec.rb b/modules/overviews/spec/features/low_permissions_page_creation_spec.rb index e7e681b49d4..00960b54426 100644 --- a/modules/overviews/spec/features/low_permissions_page_creation_spec.rb +++ b/modules/overviews/spec/features/low_permissions_page_creation_spec.rb @@ -42,8 +42,7 @@ RSpec.describe 'Overview page on the fly creation if user lacks :mange_overview let(:user) do create(:user, - member_in_project: project, - member_with_permissions: permissions) + member_with_permissions: { project => permissions }) end let(:overview_page) do Pages::Overview.new(project) diff --git a/modules/overviews/spec/features/managing_overview_page_spec.rb b/modules/overviews/spec/features/managing_overview_page_spec.rb index a951e44b89a..c9bf7b3a16d 100644 --- a/modules/overviews/spec/features/managing_overview_page_spec.rb +++ b/modules/overviews/spec/features/managing_overview_page_spec.rb @@ -58,8 +58,7 @@ RSpec.describe 'Overview page managing', js: true do let(:user) do create(:user, - member_in_project: project, - member_with_permissions: permissions) + member_with_permissions: { project => permissions }) end let(:overview_page) do Pages::Overview.new(project) diff --git a/modules/overviews/spec/features/navigation_spec.rb b/modules/overviews/spec/features/navigation_spec.rb index b35c67d0ee8..be3fd93b331 100644 --- a/modules/overviews/spec/features/navigation_spec.rb +++ b/modules/overviews/spec/features/navigation_spec.rb @@ -33,8 +33,7 @@ RSpec.describe 'Navigate to overview', js: true do let(:permissions) { [] } let(:user) do create(:user, - member_in_project: project, - member_with_permissions: permissions) + member_with_permissions: { project => permissions }) end before do diff --git a/modules/overviews/spec/requests/api/v3/grids/grids_resource_spec.rb b/modules/overviews/spec/requests/api/v3/grids/grids_resource_spec.rb index f093174551f..82a358f9ed9 100644 --- a/modules/overviews/spec/requests/api/v3/grids/grids_resource_spec.rb +++ b/modules/overviews/spec/requests/api/v3/grids/grids_resource_spec.rb @@ -35,8 +35,7 @@ RSpec.describe 'API v3 Grids resource', content_type: :json do current_user do create(:user, - member_in_project: project, - member_with_permissions: permissions) + member_with_permissions: { project => permissions }) end let(:permissions) { %i[] } let(:project) { create(:project) } diff --git a/modules/overviews/spec/services/copy_service_integration_spec.rb b/modules/overviews/spec/services/copy_service_integration_spec.rb index 5475227d741..eb7d318e017 100644 --- a/modules/overviews/spec/services/copy_service_integration_spec.rb +++ b/modules/overviews/spec/services/copy_service_integration_spec.rb @@ -35,8 +35,7 @@ RSpec.describe Projects::CopyService, 'integration', type: :model do let(:current_user) do create(:user, - member_in_project: source, - member_through_role: role) + member_with_roles: { source => role }) end let(:role) { create(:role, permissions: %i[copy_projects]) } let(:instance) do diff --git a/modules/reporting/spec/features/permissions_spec.rb b/modules/reporting/spec/features/permissions_spec.rb index ccf58052231..1db4eb031de 100644 --- a/modules/reporting/spec/features/permissions_spec.rb +++ b/modules/reporting/spec/features/permissions_spec.rb @@ -9,8 +9,7 @@ RSpec.describe 'Cost report calculations', js: true do let!(:role) { create(:role, permissions:) } let!(:user) do create(:user, - member_in_project: project, - member_through_role: role) + member_with_roles: { project => role }) end let(:work_package) { create(:work_package, project:) } diff --git a/modules/reporting/spec/features/saving_spec.rb b/modules/reporting/spec/features/saving_spec.rb index 3b0c0d8e5cd..e73e92721d8 100644 --- a/modules/reporting/spec/features/saving_spec.rb +++ b/modules/reporting/spec/features/saving_spec.rb @@ -50,8 +50,7 @@ RSpec.describe 'Cost report saving', js: true do let(:role) { create(:role, permissions: %i(view_time_entries)) } let!(:user) do create(:user, - member_in_project: project, - member_through_role: role) + member_with_roles: { project => role }) end it 'cannot save reports' do diff --git a/modules/reporting/spec/features/subproject_spec.rb b/modules/reporting/spec/features/subproject_spec.rb index b3e3d1e1cdb..ce21d56c322 100644 --- a/modules/reporting/spec/features/subproject_spec.rb +++ b/modules/reporting/spec/features/subproject_spec.rb @@ -7,8 +7,7 @@ RSpec.describe 'Cost report in subproject', js: true do let!(:role) { create(:role, permissions: %i(view_cost_entries view_own_cost_entries)) } let!(:user) do create(:user, - member_in_project: subproject, - member_through_role: role) + member_with_roles: { subproject => role }) end before do diff --git a/modules/reporting/spec/features/update_entries_spec.rb b/modules/reporting/spec/features/update_entries_spec.rb index 3b3e580e5f2..2bb6e14dc3a 100644 --- a/modules/reporting/spec/features/update_entries_spec.rb +++ b/modules/reporting/spec/features/update_entries_spec.rb @@ -32,7 +32,7 @@ require_relative 'support/components/cost_reports_base_table' RSpec.describe 'Updating entries within the cost report', js: true do let(:project) { create(:project) } - let(:user) { create(:admin, member_in_project: project, member_with_permissions: %i[work_package_assigned]) } + let(:user) { create(:admin, member_with_permissions: { project => %i[work_package_assigned] }) } let(:work_package) { create(:work_package, project:) } let!(:time_entry_user) do @@ -121,8 +121,7 @@ RSpec.describe 'Updating entries within the cost report', js: true do let(:role) { create(:role, permissions: %i(view_time_entries)) } let!(:user) do create(:user, - member_in_project: project, - member_through_role: role) + member_with_roles: { project => role }) end it 'cannot edit or delete' do diff --git a/modules/reporting/spec/features/work_package_costlog_spec.rb b/modules/reporting/spec/features/work_package_costlog_spec.rb index 220764c764e..4fad88521fc 100644 --- a/modules/reporting/spec/features/work_package_costlog_spec.rb +++ b/modules/reporting/spec/features/work_package_costlog_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' RSpec.describe 'Cost report showing my own times', js: true do let(:project) { create(:project) } let(:user) do - create(:user, member_in_project: project, member_through_role: role) + create(:user, member_with_roles: { project => role }) end let(:role) { create(:role, permissions:) } let(:permissions) { %i[view_work_packages view_own_cost_entries] } diff --git a/modules/reporting/spec/models/cost_query/filter_spec.rb b/modules/reporting/spec/models/cost_query/filter_spec.rb index 23136575d15..06738075c9b 100644 --- a/modules/reporting/spec/models/cost_query/filter_spec.rb +++ b/modules/reporting/spec/models/cost_query/filter_spec.rb @@ -29,11 +29,11 @@ require File.expand_path("#{File.dirname(__FILE__)}/../../spec_helper") require File.join(File.dirname(__FILE__), '..', '..', 'support', 'custom_field_filter') -RSpec.describe CostQuery, reporting_query_helper: true do +RSpec.describe CostQuery, :reporting_query_helper do minimal_query let!(:project) { create(:project_with_types) } - let!(:user) { create(:user, member_in_project: project) } + let!(:user) { create(:user, member_with_permissions: { project => %i[view_work_packages edit_work_packages] }) } def create_work_package_with_entry(entry_type, work_package_params = {}, entry_params = {}) work_package_params = { project: }.merge!(work_package_params) @@ -78,7 +78,7 @@ RSpec.describe CostQuery, reporting_query_helper: true do describe filter do let!(:non_matching_entry) { create(:cost_entry) } let!(:object) { send(object_name) } - let!(:author) { create(:user, member_in_project: project) } + let!(:author) { create(:user, member_with_permissions: { project => %i[view_work_packages edit_work_packages] }) } let!(:work_package) do create(:work_package, project:, @@ -133,7 +133,7 @@ RSpec.describe CostQuery, reporting_query_helper: true do describe CostQuery::Filter::AuthorId do let!(:non_matching_entry) { create(:cost_entry) } - let!(:author) { create(:user, member_in_project: project) } + let!(:author) { create(:user, member_with_permissions: { project => %i[view_work_packages edit_work_packages] }) } let!(:work_package) do create(:work_package, project:, @@ -228,7 +228,7 @@ RSpec.describe CostQuery, reporting_query_helper: true do it "filters overridden_costs" do query.filter :overridden_costs, operator: 'y' - expect(query.result.count).to eq(Entry.all.count { |e| !(e.overridden_costs.nil?) }) + expect(query.result.count).to eq(Entry.all.count { |e| !e.overridden_costs.nil? }) end it "filters status" do @@ -333,7 +333,7 @@ RSpec.describe CostQuery, reporting_query_helper: true do CostQuery::Filter::WorkPackageId ].each do |filter| it "onlies allow default operators for #{filter}" do - expect(filter.new.available_operators.uniq).to match_array([CostQuery::Operator.default_operator]) + expect(filter.new.available_operators.uniq).to contain_exactly(CostQuery::Operator.default_operator) end end diff --git a/modules/storages/spec/features/create_file_links_spec.rb b/modules/storages/spec/features/create_file_links_spec.rb index 07f0b987d4c..3f735db14e3 100644 --- a/modules/storages/spec/features/create_file_links_spec.rb +++ b/modules/storages/spec/features/create_file_links_spec.rb @@ -34,7 +34,7 @@ require_module_spec_helper RSpec.describe 'Managing file links in work package', js: true, webmock: true do let(:permissions) { %i(view_work_packages edit_work_packages view_file_links manage_file_links) } let(:project) { create(:project) } - let(:current_user) { create(:user, member_in_project: project, member_with_permissions: permissions) } + let(:current_user) { create(:user, member_with_permissions: { project => permissions }) } let(:work_package) { create(:work_package, project:, description: 'Initial description') } let(:oauth_application) { create(:oauth_application) } diff --git a/modules/storages/spec/features/show_file_links_spec.rb b/modules/storages/spec/features/show_file_links_spec.rb index c04e9868d39..861fd9f1376 100644 --- a/modules/storages/spec/features/show_file_links_spec.rb +++ b/modules/storages/spec/features/show_file_links_spec.rb @@ -34,7 +34,7 @@ require_module_spec_helper RSpec.describe 'Showing of file links in work package', js: true do let(:permissions) { %i(view_work_packages edit_work_packages view_file_links manage_file_links) } let(:project) { create(:project) } - let(:current_user) { create(:user, member_in_project: project, member_with_permissions: permissions) } + let(:current_user) { create(:user, member_with_permissions: { project => permissions }) } let(:work_package) { create(:work_package, project:, description: 'Initial description') } let(:oauth_application) { create(:oauth_application) } diff --git a/modules/storages/spec/features/storages_menu_links_spec.rb b/modules/storages/spec/features/storages_menu_links_spec.rb index 9a726d72820..fc21cfa2d08 100644 --- a/modules/storages/spec/features/storages_menu_links_spec.rb +++ b/modules/storages/spec/features/storages_menu_links_spec.rb @@ -41,7 +41,7 @@ RSpec.describe 'Project menu', :js, :with_cuprite do create(:project_storage, project:, storage: another_storage, project_folder_mode: 'manual', project_folder_id: '42') end let(:permissions) { %i[view_file_links] } - let(:user) { create(:user, member_in_project: project, member_with_permissions: permissions) } + let(:user) { create(:user, member_with_permissions: { project => permissions }) } before do project_storage_without_folder diff --git a/modules/storages/spec/lib/append_storages_hosts_to_csp_hook_spec.rb b/modules/storages/spec/lib/append_storages_hosts_to_csp_hook_spec.rb index 11d004b3dfc..59ae5844d61 100644 --- a/modules/storages/spec/lib/append_storages_hosts_to_csp_hook_spec.rb +++ b/modules/storages/spec/lib/append_storages_hosts_to_csp_hook_spec.rb @@ -76,13 +76,13 @@ RSpec.describe OpenProject::Storages::AppendStoragesHostsToCspHook do end context 'when current user is a member of the project with permission to manage file links' do - current_user { create(:user, member_in_project: project, member_with_permissions: %i[manage_file_links]) } + current_user { create(:user, member_with_permissions: { project => %i[manage_file_links] }) } include_examples 'content security policy directives' end context 'when current user is a member of the project without permission to manage file links' do - current_user { create(:user, member_in_project: project, member_with_permissions: []) } + current_user { create(:user, member_with_permissions: { project => [] }) } it 'does not add CSP connect_src directive' do trigger_application_controller_before_action_hook diff --git a/modules/storages/spec/requests/api/v3/file_links/file_links_api_spec.rb b/modules/storages/spec/requests/api/v3/file_links/file_links_api_spec.rb index 57a17d081fd..add90cf090b 100644 --- a/modules/storages/spec/requests/api/v3/file_links/file_links_api_spec.rb +++ b/modules/storages/spec/requests/api/v3/file_links/file_links_api_spec.rb @@ -62,7 +62,7 @@ RSpec.describe 'API v3 file links resource' do shared_let(:project) { create(:project) } shared_let(:current_user) do - create(:user, member_in_project: project, member_with_permissions: %i(view_work_packages view_file_links)) + create(:user, member_with_permissions: { project => %i(view_work_packages view_file_links) }) end shared_let(:work_package) { create(:work_package, author: current_user, project:) } diff --git a/modules/storages/spec/requests/api/v3/file_links/mixed_case_file_links_integration_spec.rb b/modules/storages/spec/requests/api/v3/file_links/mixed_case_file_links_integration_spec.rb index 3bb694b6de0..328d374aefb 100644 --- a/modules/storages/spec/requests/api/v3/file_links/mixed_case_file_links_integration_spec.rb +++ b/modules/storages/spec/requests/api/v3/file_links/mixed_case_file_links_integration_spec.rb @@ -37,7 +37,7 @@ RSpec.describe 'API v3 file links resource' do let(:project) { create(:project) } let(:permissions) { %i(view_work_packages view_file_links) } - let(:user) { create(:user, member_in_project: project, member_with_permissions: permissions) } + let(:user) { create(:user, member_with_permissions: { project => permissions }) } let(:work_package) { create(:work_package, author: user, project:) } diff --git a/modules/storages/spec/requests/api/v3/project_storages/project_storages_spec.rb b/modules/storages/spec/requests/api/v3/project_storages/project_storages_spec.rb index b0bd29c2a29..837affe8583 100644 --- a/modules/storages/spec/requests/api/v3/project_storages/project_storages_spec.rb +++ b/modules/storages/spec/requests/api/v3/project_storages/project_storages_spec.rb @@ -29,7 +29,7 @@ require 'spec_helper' require_module_spec_helper -RSpec.describe 'API v3 project storages resource', content_type: :json, webmock: true do +RSpec.describe 'API v3 project storages resource', :webmock, content_type: :json do include API::V3::Utilities::PathHelper let(:view_permissions) { %i(view_work_packages view_file_links) } @@ -139,7 +139,7 @@ RSpec.describe 'API v3 project storages resource', content_type: :json, webmock: context 'as user with permissions' do let(:current_user) do - create(:user, member_in_projects: [project1, project3], member_with_permissions: view_permissions) + create(:user, member_with_permissions: { project1 => view_permissions, project3 => view_permissions }) end it_behaves_like 'API V3 collection response', 4, 4, 'ProjectStorage', 'Collection' do @@ -156,7 +156,7 @@ RSpec.describe 'API v3 project storages resource', content_type: :json, webmock: context 'as user without permissions' do let(:current_user) do - create(:user, member_in_projects: [project1, project2, project3], member_with_permissions: []) + create(:user, member_with_permissions: { project1 => [], project2 => [], project3 => [] }) end it_behaves_like 'API V3 collection response', 0, 0, 'ProjectStorage', 'Collection' do @@ -176,7 +176,7 @@ RSpec.describe 'API v3 project storages resource', content_type: :json, webmock: let(:project_storage_id) { project_storage.id } let(:path) { api_v3_paths.project_storage(project_storage_id) } let(:current_user) do - create(:user, member_in_project: project3, member_with_permissions: view_permissions) + create(:user, member_with_permissions: { project3 => view_permissions }) end subject { last_response.body } @@ -189,7 +189,7 @@ RSpec.describe 'API v3 project storages resource', content_type: :json, webmock: context 'if user has permission to see file storages in project' do let(:current_user) do - create(:user, member_in_project: project3, member_with_permissions: []) + create(:user, member_with_permissions: { project3 => [] }) end it_behaves_like 'not found' diff --git a/modules/storages/spec/requests/api/v3/storages/storage_files_api_spec.rb b/modules/storages/spec/requests/api/v3/storages/storage_files_api_spec.rb index bb3ad7f2ce9..3da514a1568 100644 --- a/modules/storages/spec/requests/api/v3/storages/storage_files_api_spec.rb +++ b/modules/storages/spec/requests/api/v3/storages/storage_files_api_spec.rb @@ -39,7 +39,7 @@ RSpec.describe 'API v3 storage files', :webmock, content_type: :json do let(:project) { create(:project) } let(:current_user) do - create(:user, member_in_project: project, member_with_permissions: permissions) + create(:user, member_with_permissions: { project => permissions }) end let(:oauth_application) { create(:oauth_application) } diff --git a/modules/storages/spec/requests/api/v3/storages/storages_api_spec.rb b/modules/storages/spec/requests/api/v3/storages/storages_api_spec.rb index 0342ef64292..28210b70838 100644 --- a/modules/storages/spec/requests/api/v3/storages/storages_api_spec.rb +++ b/modules/storages/spec/requests/api/v3/storages/storages_api_spec.rb @@ -37,7 +37,7 @@ RSpec.describe 'API v3 storages resource', content_type: :json, webmock: true do let(:project) { create(:project) } let(:current_user) do - create(:user, member_in_project: project, member_with_permissions: permissions) + create(:user, member_with_permissions: { project => permissions }) end let(:oauth_application) { create(:oauth_application) } diff --git a/modules/storages/spec/requests/append_content_security_policy_spec.rb b/modules/storages/spec/requests/append_content_security_policy_spec.rb index a14ed417ba8..97e7a229aba 100644 --- a/modules/storages/spec/requests/append_content_security_policy_spec.rb +++ b/modules/storages/spec/requests/append_content_security_policy_spec.rb @@ -43,7 +43,7 @@ RSpec.describe 'Appendix of default CSP for external file storage hosts' do describe 'GET /' do context 'when logged in' do - current_user { create(:user, member_in_project: project, member_with_permissions: %i[manage_file_links]) } + current_user { create(:user, member_with_permissions: { project => %i[manage_file_links] }) } it 'appends storage host to the connect-src CSP' do get '/' diff --git a/modules/team_planner/spec/features/onboarding/team_planner_onboarding_tour_spec.rb b/modules/team_planner/spec/features/onboarding/team_planner_onboarding_tour_spec.rb index 70673daa42e..7fe8baec6a1 100644 --- a/modules/team_planner/spec/features/onboarding/team_planner_onboarding_tour_spec.rb +++ b/modules/team_planner/spec/features/onboarding/team_planner_onboarding_tour_spec.rb @@ -29,8 +29,7 @@ require 'spec_helper' require_relative '../../support/onboarding/onboarding_steps' -RSpec.describe 'team planner onboarding tour', - js: true, +RSpec.describe 'team planner onboarding tour', :js, with_cuprite: false, with_ee: %i[team_planner_view] do let(:next_button) { find('.enjoyhint_next_btn') } @@ -52,10 +51,9 @@ RSpec.describe 'team planner onboarding tour', let(:user) do create(:admin, - member_in_project: demo_project, - member_with_permissions: %w[view_work_packages edit_work_packages add_work_packages - view_team_planner manage_team_planner save_queries manage_public_queries - work_package_assigned]) + member_with_permissions: { demo_project => %w[view_work_packages edit_work_packages add_work_packages + view_team_planner manage_team_planner save_queries + manage_public_queries work_package_assigned] }) end let!(:wp1) do diff --git a/modules/team_planner/spec/features/query_handling_spec.rb b/modules/team_planner/spec/features/query_handling_spec.rb index cbda224c9a6..8ec113955a8 100644 --- a/modules/team_planner/spec/features/query_handling_spec.rb +++ b/modules/team_planner/spec/features/query_handling_spec.rb @@ -43,15 +43,14 @@ RSpec.describe 'Team planner query handling', :js, with_ee: %i[team_planner_view shared_let(:user) do create(:user, - member_in_project: project, - member_with_permissions: %w[ + member_with_permissions: { project => %w[ view_work_packages edit_work_packages save_queries save_public_queries view_team_planner manage_team_planner - ]) + ] }) end shared_let(:task) do diff --git a/modules/team_planner/spec/features/shared_context.rb b/modules/team_planner/spec/features/shared_context.rb index 3291217b882..e50267ea533 100644 --- a/modules/team_planner/spec/features/shared_context.rb +++ b/modules/team_planner/spec/features/shared_context.rb @@ -36,13 +36,12 @@ RSpec.shared_context 'with team planner full access' do shared_let(:user) do create(:user, - member_in_project: project, - member_with_permissions: %w[ + member_with_permissions: { project => %w[ view_work_packages edit_work_packages add_work_packages view_team_planner manage_team_planner save_queries manage_public_queries work_package_assigned - ]) + ] }) end let(:team_planner) { Pages::TeamPlanner.new project } diff --git a/modules/team_planner/spec/features/team_planner_add_existing_work_packages_spec.rb b/modules/team_planner/spec/features/team_planner_add_existing_work_packages_spec.rb index 8b51e685b25..4d6651a579a 100644 --- a/modules/team_planner/spec/features/team_planner_add_existing_work_packages_spec.rb +++ b/modules/team_planner/spec/features/team_planner_add_existing_work_packages_spec.rb @@ -27,10 +27,10 @@ #++ require 'spec_helper' -require_relative './shared_context' +require_relative 'shared_context' require_relative '../support/components/add_existing_pane' -RSpec.describe 'Team planner add existing work packages', js: true do +RSpec.describe 'Team planner add existing work packages', :js do include_context 'with team planner full access' let(:closed_status) { create(:status, is_closed: true) } @@ -39,10 +39,7 @@ RSpec.describe 'Team planner add existing work packages', js: true do let!(:other_user) do create(:user, firstname: 'Bernd', - member_in_project: project, - member_with_permissions: %w[ - view_work_packages view_team_planner - ]) + member_with_permissions: { project => %w[view_work_packages view_team_planner] }) end let!(:first_wp) do @@ -203,14 +200,16 @@ RSpec.describe 'Team planner add existing work packages', js: true do create(:work_package, subject: 'Subtask', project: sub_project) end + let(:permissions) do + %w[ + view_work_packages edit_work_packages add_work_packages + view_team_planner manage_team_planner + save_queries manage_public_queries + ] + end + let!(:user) do - create(:user, - member_in_projects: [project, sub_project], - member_with_permissions: %w[ - view_work_packages edit_work_packages add_work_packages - view_team_planner manage_team_planner - save_queries manage_public_queries - ]) + create(:user, member_with_permissions: { project => permissions, sub_project => permissions }) end let(:dropdown) { Components::ProjectIncludeComponent.new } diff --git a/modules/team_planner/spec/features/team_planner_context_menu_spec.rb b/modules/team_planner/spec/features/team_planner_context_menu_spec.rb index e44348f5392..e91e1f99ced 100644 --- a/modules/team_planner/spec/features/team_planner_context_menu_spec.rb +++ b/modules/team_planner/spec/features/team_planner_context_menu_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' require_relative 'shared_context' require 'features/work_packages/table/context_menu/context_menu_shared_examples' -RSpec.describe 'Work package table context menu', js: true, with_ee: %i[team_planner_view] do +RSpec.describe 'Work package table context menu', :js, with_ee: %i[team_planner_view] do include_context 'with team planner full access' let!(:work_package) do @@ -16,13 +16,12 @@ RSpec.describe 'Work package table context menu', js: true, with_ee: %i[team_pla shared_let(:user) do create(:admin, - member_in_project: project, - member_with_permissions: %w[ + member_with_permissions: { project => %w[ view_work_packages edit_work_packages add_work_packages view_team_planner manage_team_planner save_queries manage_public_queries work_package_assigned - ]) + ] }) end before do diff --git a/modules/team_planner/spec/features/team_planner_create_spec.rb b/modules/team_planner/spec/features/team_planner_create_spec.rb index 96d3e8a1ba5..0372dfc4370 100644 --- a/modules/team_planner/spec/features/team_planner_create_spec.rb +++ b/modules/team_planner/spec/features/team_planner_create_spec.rb @@ -27,9 +27,9 @@ #++ require 'spec_helper' -require_relative './shared_context' +require_relative 'shared_context' -RSpec.describe 'Team planner create new work package', js: true, with_ee: %i[team_planner_view] do +RSpec.describe 'Team planner create new work package', :js, with_ee: %i[team_planner_view] do include_context 'with team planner full access' let(:type_task) { create(:type_task) } @@ -92,26 +92,24 @@ RSpec.describe 'Team planner create new work package', js: true, with_ee: %i[tea create(:user, firstname: 'Other', lastname: 'User', - member_in_project: project, - member_with_permissions: %w[ + member_with_permissions: { project => %w[ view_work_packages edit_work_packages add_work_packages view_team_planner manage_team_planner save_queries manage_public_queries work_package_assigned - ]) + ] }) end let!(:third_user) do create(:user, firstname: 'Other', lastname: 'User', - member_in_project: project, - member_with_permissions: %w[ + member_with_permissions: { project => %w[ view_work_packages edit_work_packages add_work_packages view_team_planner manage_team_planner save_queries manage_public_queries work_package_assigned - ]) + ] }) end before do diff --git a/modules/team_planner/spec/features/team_planner_index_spec.rb b/modules/team_planner/spec/features/team_planner_index_spec.rb index 46d28c7abff..5e60601c321 100644 --- a/modules/team_planner/spec/features/team_planner_index_spec.rb +++ b/modules/team_planner/spec/features/team_planner_index_spec.rb @@ -36,19 +36,17 @@ RSpec.describe 'Team planner index', :js, :with_cuprite, with_ee: %i[team_planne shared_let(:user_with_full_permissions) do create(:user, - member_in_project: project, - member_with_permissions: %w[ + member_with_permissions: { project => %w[ view_work_packages edit_work_packages add_work_packages view_team_planner manage_team_planner save_queries manage_public_queries work_package_assigned - ]) + ] }) end shared_let(:user_with_limited_permissions) do create(:user, firstname: 'Bernd', - member_in_project: project, - member_with_permissions: %w[view_work_packages view_team_planner]) + member_with_permissions: { project => %w[view_work_packages view_team_planner] }) end let(:team_planner) { Pages::TeamPlanner.new(project) } diff --git a/modules/team_planner/spec/features/team_planner_menu_spec.rb b/modules/team_planner/spec/features/team_planner_menu_spec.rb index c937c383c38..c98838cc10a 100644 --- a/modules/team_planner/spec/features/team_planner_menu_spec.rb +++ b/modules/team_planner/spec/features/team_planner_menu_spec.rb @@ -34,19 +34,17 @@ RSpec.describe 'Team planner Menu Item', :js, :with_cuprite do end shared_let(:user_without_rights) do create(:user, - member_in_project: project, - member_with_permissions: %w[ + member_with_permissions: { project => %w[ view_work_packages edit_work_packages add_work_packages view_team_planner - ]) + ] }) end shared_let(:user_with_rights) do create(:user, - member_in_project: project, - member_with_permissions: %w[ + member_with_permissions: { project => %w[ view_work_packages edit_work_packages add_work_packages view_team_planner manage_team_planner - ]) + ] }) end context 'within the global menu' do diff --git a/modules/team_planner/spec/features/team_planner_overview_spec.rb b/modules/team_planner/spec/features/team_planner_overview_spec.rb index 11fa41b928f..4f72fd14895 100644 --- a/modules/team_planner/spec/features/team_planner_overview_spec.rb +++ b/modules/team_planner/spec/features/team_planner_overview_spec.rb @@ -44,19 +44,17 @@ RSpec.describe 'Team planner overview', shared_let(:admin) { create(:admin) } shared_let(:user_with_full_permissions) do create(:user, - member_in_project: project, - member_with_permissions: %w[ + member_with_permissions: { project => %w[ view_work_packages edit_work_packages add_work_packages view_team_planner manage_team_planner save_queries manage_public_queries work_package_assigned - ]) + ] }) end shared_let(:user_with_limited_permissions) do create(:user, firstname: 'Bernd', - member_in_project: project, - member_with_permissions: %w[view_work_packages view_team_planner]) + member_with_permissions: { project => %w[view_work_packages view_team_planner] }) end let(:team_planner) { Pages::TeamPlanner.new(project) } @@ -70,7 +68,7 @@ RSpec.describe 'Team planner overview', it 'renders a global menu with its item selected' do within '#main-menu' do - expect(page).to have_selector '.selected', text: 'Team planners' + expect(page).to have_css '.selected', text: 'Team planners' end end diff --git a/modules/team_planner/spec/features/team_planner_remove_event_spec.rb b/modules/team_planner/spec/features/team_planner_remove_event_spec.rb index 81943837f89..1805ebb8141 100644 --- a/modules/team_planner/spec/features/team_planner_remove_event_spec.rb +++ b/modules/team_planner/spec/features/team_planner_remove_event_spec.rb @@ -27,10 +27,10 @@ #++ require 'spec_helper' -require_relative './shared_context' +require_relative 'shared_context' require_relative '../support/components/add_existing_pane' -RSpec.describe 'Team planner remove event', js: true, with_ee: %i[team_planner_view] do +RSpec.describe 'Team planner remove event', :js, with_ee: %i[team_planner_view] do include_context 'with team planner full access' let!(:viewer_role) { create(:existing_role, permissions: [:view_work_packages]) } @@ -38,10 +38,9 @@ RSpec.describe 'Team planner remove event', js: true, with_ee: %i[team_planner_v let!(:other_user) do create(:user, firstname: 'Bernd', - member_in_project: project, - member_with_permissions: %w[ + member_with_permissions: { project => %w[ view_work_packages view_team_planner - ]) + ] }) end let!(:removable_wp) do diff --git a/modules/team_planner/spec/features/team_planner_spec.rb b/modules/team_planner/spec/features/team_planner_spec.rb index 9d74834a7a2..36f34a104e7 100644 --- a/modules/team_planner/spec/features/team_planner_spec.rb +++ b/modules/team_planner/spec/features/team_planner_spec.rb @@ -27,9 +27,9 @@ #++ require 'spec_helper' -require_relative './shared_context' +require_relative 'shared_context' -RSpec.describe 'Team planner', js: true, with_ee: %i[team_planner_view] do +RSpec.describe 'Team planner', :js, with_ee: %i[team_planner_view] do include_context 'with team planner full access' it 'hides the internally used filters' do @@ -63,10 +63,9 @@ RSpec.describe 'Team planner', js: true, with_ee: %i[team_planner_view] do create(:user, firstname: 'Other', lastname: 'User', - member_in_project: project, - member_with_permissions: %w[ + member_with_permissions: { project => %w[ view_work_packages edit_work_packages view_team_planner manage_team_planner - ]) + ] }) end let!(:user_outside_project) { create(:user, firstname: 'Not', lastname: 'In Project') } let(:type_task) { create(:type_task) } @@ -297,7 +296,7 @@ RSpec.describe 'Team planner', js: true, with_ee: %i[team_planner_view] do team_planner.search_user_to_add user_outside_project.name end - expect(page).to have_selector('.ng-option-disabled', text: "No items found") + expect(page).to have_css('.ng-option-disabled', text: "No items found") retry_block do team_planner.select_user_to_add user.name @@ -311,7 +310,7 @@ RSpec.describe 'Team planner', js: true, with_ee: %i[team_planner_view] do team_planner.search_user_to_add user.name end - expect(page).to have_selector('.ng-option-disabled', text: "No items found") + expect(page).to have_css('.ng-option-disabled', text: "No items found") end end diff --git a/modules/team_planner/spec/features/team_planner_subproject_constraints_spec.rb b/modules/team_planner/spec/features/team_planner_subproject_constraints_spec.rb index dd782fab7aa..6cbe2b125db 100644 --- a/modules/team_planner/spec/features/team_planner_subproject_constraints_spec.rb +++ b/modules/team_planner/spec/features/team_planner_subproject_constraints_spec.rb @@ -27,18 +27,15 @@ #++ require 'spec_helper' -require_relative './shared_context' +require_relative 'shared_context' -RSpec.describe 'Team planner constraints for a subproject', js: true, with_ee: %i[team_planner_view] do +RSpec.describe 'Team planner constraints for a subproject', :js, with_ee: %i[team_planner_view] do include_context 'with team planner full access' let!(:other_user) do create(:user, firstname: 'Bernd', - member_in_project: project, - member_with_permissions: %w[ - view_work_packages view_team_planner work_package_assigned - ]) + member_with_permissions: { project => %w[view_work_packages view_team_planner work_package_assigned] }) end let!(:subproject) { create(:project, parent: project) } diff --git a/modules/team_planner/spec/features/team_planner_user_interaction_spec.rb b/modules/team_planner/spec/features/team_planner_user_interaction_spec.rb index 8df43bf8758..4a35fba3307 100644 --- a/modules/team_planner/spec/features/team_planner_user_interaction_spec.rb +++ b/modules/team_planner/spec/features/team_planner_user_interaction_spec.rb @@ -27,18 +27,15 @@ #++ require 'spec_helper' -require_relative './shared_context' +require_relative 'shared_context' -RSpec.describe 'Team planner drag&dop and resizing', js: true, with_ee: %i[team_planner_view] do +RSpec.describe 'Team planner drag&dop and resizing', :js, with_ee: %i[team_planner_view] do include_context 'with team planner full access' let!(:other_user) do create(:user, firstname: 'Bernd', - member_in_project: project, - member_with_permissions: %w[ - view_work_packages view_team_planner work_package_assigned - ]) + member_with_permissions: { project => %w[view_work_packages view_team_planner work_package_assigned] }) end let!(:first_wp) do diff --git a/spec/features/principals/shared_memberships_examples.rb b/spec/features/principals/shared_memberships_examples.rb index b6c002ccadf..81d16aadadc 100644 --- a/spec/features/principals/shared_memberships_examples.rb +++ b/spec/features/principals/shared_memberships_examples.rb @@ -99,8 +99,7 @@ RSpec.shared_examples 'global user principal membership management flows' do |pe current_user do create(:user, global_permission: permission, - member_in_project: project, - member_with_permissions: %i[view_work_packages]) + member_with_permissions: { project => %i[view_work_packages] }) end it 'does not allow to select that project' do diff --git a/spec/features/work_packages/table/queries/shared_with_user_filter_spec.rb b/spec/features/work_packages/table/queries/shared_with_user_filter_spec.rb index 19557f4d00f..4f2653fb7e0 100644 --- a/spec/features/work_packages/table/queries/shared_with_user_filter_spec.rb +++ b/spec/features/work_packages/table/queries/shared_with_user_filter_spec.rb @@ -60,29 +60,25 @@ RSpec.describe 'Work package filtering', create(:user, firstname: 'Bruce', lastname: 'Wayne', - member_in_project: visible_project, - member_through_role: project_role_with_sufficient_permissions) + member_with_roles: { visible_project => project_role_with_sufficient_permissions }) end shared_let(:user_with_insufficient_permissions) do create(:user, firstname: 'Alfred', lastname: 'Pennyworth', - member_in_project: visible_project, - member_through_role: project_role_with_insufficient_permissions) + member_with_roles: { visible_project => project_role_with_insufficient_permissions }) end shared_let(:user_with_shared_work_package) do create(:user, firstname: 'Clark', lastname: 'Kent', - member_in_project: visible_project, - member_through_role: project_role_with_insufficient_permissions) + member_with_roles: { visible_project => project_role_with_insufficient_permissions }) end shared_let(:invisible_user) do create(:user, firstname: 'Salvatore', lastname: 'Maroni', - member_in_project: invisible_project, - member_through_role: project_role_with_insufficient_permissions) + member_with_roles: { invisible_project => project_role_with_insufficient_permissions }) end shared_let(:shared_work_package) do