mirror of
https://github.com/opf/openproject.git
synced 2026-06-14 03:30:14 +00:00
Fix a bunch of more usages of member_in_project that was overlooked
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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?)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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) }
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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:)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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) }
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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) }
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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:) }
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 }
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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]) }
|
||||
|
||||
@@ -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]) }
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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) }
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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]) }
|
||||
|
||||
@@ -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] }
|
||||
|
||||
@@ -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) }
|
||||
|
||||
@@ -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:) }
|
||||
|
||||
@@ -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]) }
|
||||
|
||||
@@ -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) }
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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[
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 }
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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."
|
||||
|
||||
@@ -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 }
|
||||
|
||||
@@ -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" }
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 }
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 }
|
||||
|
||||
@@ -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) }
|
||||
|
||||
@@ -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:) }
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
+1
-1
@@ -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]) }
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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) }
|
||||
|
||||
@@ -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] }
|
||||
|
||||
|
||||
+1
-1
@@ -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,
|
||||
|
||||
@@ -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:) }
|
||||
|
||||
@@ -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]) }
|
||||
|
||||
@@ -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:)
|
||||
|
||||
+1
-2
@@ -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] }
|
||||
|
||||
@@ -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:)
|
||||
|
||||
@@ -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) }
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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:)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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' }
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 }
|
||||
|
||||
@@ -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) }
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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) }
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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'
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user