Skip to content

Commit

Permalink
Next round of moving all factories from project -> entity
Browse files Browse the repository at this point in the history
  • Loading branch information
Klaus Zanders committed Aug 10, 2023
1 parent 12a525e commit 39fc24c
Show file tree
Hide file tree
Showing 20 changed files with 100 additions and 284 deletions.
7 changes: 2 additions & 5 deletions spec/requests/api/v3/projects/update_form_resource_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -49,11 +49,8 @@
create(:list_project_custom_field)
end
let(:viable_parent_project) do
create(:project).tap do |p|
create(:member,
project: p,
principal: current_user,
roles: [parent_project_role])
create(:project).tap do |project|
create(:member, entity: project, principal: current_user, roles: [parent_project_role])
end
end
let(:parent_project_role) do
Expand Down
10 changes: 2 additions & 8 deletions spec/requests/api/v3/queries/query_resource_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -105,10 +105,7 @@
global_query
other_query

create(:member,
roles: [role],
project: other_query.project,
user: current_user)
create(:member, roles: [role], entity: other_query.project, principal: current_user)
end

it 'includes only queries from the specified project' do
Expand Down Expand Up @@ -136,10 +133,7 @@
global_query
other_query

create(:member,
roles: [role],
project: other_query.project,
user: current_user)
create(:member, roles: [role], entity: other_query.project, principal: current_user)
end

it 'includes only queries not belonging to a project' do
Expand Down
20 changes: 4 additions & 16 deletions spec/requests/api/v3/relations/relations_api_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -376,14 +376,8 @@

let(:current_user) do
create(:user).tap do |user|
create(:member,
project: to.project,
user:,
roles: [role])
create(:member,
project: from.project,
user:,
roles: [role])
create(:member, entity: to.project, principal: user, roles: [role])
create(:member, entity: from.project, principal: user, roles: [role])
end
end

Expand Down Expand Up @@ -485,14 +479,8 @@

let(:current_user) do
create(:user).tap do |user|
create(:member,
project: to.project,
user:,
roles: [role])
create(:member,
project: from.project,
user:,
roles: [role])
create(:member, entity: to.project, principal: user, roles: [role])
create(:member, entity: from.project, principal: user, roles: [role])
end
end

Expand Down
31 changes: 5 additions & 26 deletions spec/requests/api/v3/versions/available_projects_resource_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -37,41 +37,20 @@
create(:user)
end
let(:own_member) do
create(:member,
roles: [create(:role, permissions:)],
project:,
user: current_user)
create(:member, roles: [create(:role, permissions:)], entity: project, principal: current_user)

Check failure on line 40 in spec/requests/api/v3/versions/available_projects_resource_spec.rb

View workflow job for this annotation

GitHub Actions / rubocop

[rubocop] spec/requests/api/v3/versions/available_projects_resource_spec.rb#L40

[Correctable] FactoryBot/CreateList: Prefer 1.times.map.
Raw output
spec/requests/api/v3/versions/available_projects_resource_spec.rb:40:28: C: [Correctable] FactoryBot/CreateList: Prefer 1.times.map.
    create(:member, roles: [create(:role, permissions:)], entity: project, principal: current_user)
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
end
let(:permissions) { %i[view_versions manage_versions] }
let(:manage_project) do
create(:project).tap do |p|
create(:member,
roles: [create(:role, permissions:)],
project: p,
user: current_user)
create(:project).tap do |project|
create(:member, roles: [create(:role, permissions:)], entity: project, principal: current_user)

Check failure on line 45 in spec/requests/api/v3/versions/available_projects_resource_spec.rb

View workflow job for this annotation

GitHub Actions / rubocop

[rubocop] spec/requests/api/v3/versions/available_projects_resource_spec.rb#L45

[Correctable] FactoryBot/CreateList: Prefer 1.times.map.
Raw output
spec/requests/api/v3/versions/available_projects_resource_spec.rb:45:30: C: [Correctable] FactoryBot/CreateList: Prefer 1.times.map.
      create(:member, roles: [create(:role, permissions:)], entity: project, principal: current_user)
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
end
end
let(:view_project) do
create(:project).tap do |p|
create(:member,
roles: [create(:role, permissions: [:view_versions])],
project: p,
user: current_user)
create(:project).tap do |project|
create(:member, roles: [create(:role, permissions: [:view_versions])], entity: project, principal: current_user)

Check failure on line 50 in spec/requests/api/v3/versions/available_projects_resource_spec.rb

View workflow job for this annotation

GitHub Actions / rubocop

[rubocop] spec/requests/api/v3/versions/available_projects_resource_spec.rb#L50

[Correctable] FactoryBot/CreateList: Prefer create_list.
Raw output
spec/requests/api/v3/versions/available_projects_resource_spec.rb:50:30: C: [Correctable] FactoryBot/CreateList: Prefer create_list.
      create(:member, roles: [create(:role, permissions: [:view_versions])], entity: project, principal: current_user)
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
end
end
# let(:membered_project) do
# create(:project).tap do |p|
# create(:member,
# roles: [create(:role, permissions: permissions)],
# project: p,
# user: current_user)

# create(:member,
# roles: [create(:role, permissions: permissions)],
# project: p,
# user: other_user)
# end
# end
let(:unauthorized_project) do
create(:public_project)
end
Expand Down
13 changes: 4 additions & 9 deletions spec/requests/api/v3/versions/project_resource_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -60,14 +60,9 @@
current_user

# this is to be included
create(:member, user: current_user,
project: project2,
roles: [role])
# this is to be included as the user is a member of the project, the
# lack of permissions is irrelevant.
create(:member, user: current_user,
project: project3,
roles: [role_without_permissions])
create(:member, principal: current_user, entity: project2, roles: [role])
# this is to be included as the user is a member of the project, the lack of permissions is irrelevant.
create(:member, principal: current_user, entity: project3, roles: [role_without_permissions])
# project4 should NOT be included
project4

Expand All @@ -79,7 +74,7 @@
it 'includes only the projects which the user can see' do
id_in_response = JSON.parse(response.body)['_embedded']['elements'].map { |p| p['id'] }

expect(id_in_response).to match_array [project.id, project2.id, project3.id]
expect(id_in_response).to contain_exactly(project.id, project2.id, project3.id)
end
end

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,7 @@
let(:type) { create(:type) }
let(:type_id) { type.id }
let(:project_with_type) { create(:project, types: [type]) }
let(:member) do
create(:member, principal: current_user, project: project_with_type, roles: [add_role])
end
let(:member) { create(:member, principal: current_user, entity: project_with_type, roles: [add_role]) }

before do
project
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,13 +44,8 @@
let(:work_package) { create(:work_package, project:) }

current_user do
create(:user,
member_in_project: project,
member_through_role: edit_role).tap do |user|
create(:member,
user:,
project: target_project,
roles: [move_role])
create(:user, member_in_project: project, member_through_role: edit_role).tap do |user|
create(:member, principal: user, entity: target_project, roles: [move_role])
end
end

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -463,12 +463,7 @@
let(:user_link) { api_v3_paths.group group.id }
let(:group) { create(:group) }
let(:role) { create(:role, permissions: %i[work_package_assigned]) }
let(:group_member) do
create(:member,
principal: group,
project:,
roles: [role])
end
let(:group_member) { create(:member, principal: group, entity: project, roles: [role]) }

before do
group_member.save!
Expand Down
9 changes: 2 additions & 7 deletions spec/requests/api/v3/work_packages/update_resource_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -403,7 +403,7 @@
before do
create(:member,
user: current_user,
project: target_project,
entity: target_project,
roles: [create(:role, permissions: member_permissions)])

allow(User).to receive(:current).and_return current_user
Expand Down Expand Up @@ -468,12 +468,7 @@
shared_context 'setup group membership' do
let(:group) { create(:group) }
let(:group_role) { create(:role, permissions: %i[work_package_assigned]) }
let!(:group_member) do
create(:member,
principal: group,
project:,
roles: [group_role])
end
let!(:group_member) { create(:member, principal: group, entity: project, roles: [group_role]) }
end

shared_examples_for 'handling people' do |property|
Expand Down
60 changes: 17 additions & 43 deletions spec/services/groups/add_users_service_integration_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -60,11 +60,11 @@
expect(service_call).to be_success

expect(group.users)
.to match_array([user1, user2])
.to contain_exactly(user1, user2)
expect(user1.memberships.where(project_id: projects).count).to eq 2
expect(user1.memberships.map(&:roles).flatten).to match_array [role, role]
expect(user1.memberships.map(&:roles).flatten).to contain_exactly(role, role)
expect(user2.memberships.where(project_id: projects).count).to eq 2
expect(user2.memberships.map(&:roles).flatten).to match_array [role, role]
expect(user2.memberships.map(&:roles).flatten).to contain_exactly(role, role)
end
end

Expand Down Expand Up @@ -108,12 +108,7 @@

context 'when the user was already a member in a project with the same role' do
let(:previous_project) { projects.first }
let!(:user_member) do
create(:member,
project: previous_project,
roles: [role],
principal: user1)
end
let!(:user_member) { create(:member, entity: previous_project, roles: [role], principal: user1) }

it_behaves_like 'adds the users to the group and project'

Expand All @@ -139,24 +134,16 @@
let(:roles) { create_list(:role, 2) }
let!(:group) do
create(:group) do |g|
create(:member,
project:,
principal: g,
roles:)
create(:member, entity:, principal: g, roles:)
end
end
let!(:user_member) do
create(:member,
project:,
roles: [roles.first],
principal: user1)
end
let!(:user_member) { create(:member, entity: project, roles: [roles.first], principal: user1) }

it 'adds the users to the group and project' do
expect(service_call).to be_success

expect(group.users)
.to match_array([user1, user2])
.to contain_exactly(user1, user2)
expect(user1.memberships.where(project_id: project).map(&:roles).flatten)
.to match_array(roles)
expect(user2.memberships.where(project_id: project).count).to eq 1
Expand All @@ -178,24 +165,19 @@
context 'when the user was already a member in a project with a different role' do
let(:other_role) { create(:role) }
let(:previous_project) { projects.first }
let!(:user_member) do
create(:member,
project: previous_project,
roles: [other_role],
principal: user1)
end
let!(:user_member) { create(:member, entity: previous_project, roles: [other_role], principal: user1) }

it 'adds the users to the group and project' do
expect(service_call).to be_success

expect(group.users)
.to match_array([user1, user2])
.to contain_exactly(user1, user2)
expect(user1.memberships.where(project_id: previous_project).map(&:roles).flatten)
.to match_array([role, other_role])
.to contain_exactly(role, other_role)
expect(user1.memberships.where(project_id: projects.last).map(&:roles).flatten)
.to match_array([role])
.to contain_exactly(role)
expect(user2.memberships.where(project_id: projects).count).to eq 2
expect(user2.memberships.map(&:roles).flatten).to match_array [role, role]
expect(user2.memberships.map(&:roles).flatten).to contain_exactly(role, role)
end

it 'updates the timestamps on the preexisting membership' do
Expand All @@ -221,29 +203,21 @@
it 'adds the users to the group and their membership to the global role' do
expect(service_call).to be_success

expect(group.users).to match_array([user1, user2])
expect(group.users).to contain_exactly(user1, user2)
expect(user1.memberships.where(project_id: nil).count).to eq 1
expect(user1.memberships.flat_map(&:roles)).to match_array [role]
expect(user1.memberships.flat_map(&:roles)).to contain_exactly(role)
expect(user2.memberships.where(project_id: nil).count).to eq 1
expect(user2.memberships.flat_map(&:roles)).to match_array [role]
expect(user2.memberships.flat_map(&:roles)).to contain_exactly(role)
end

context 'when one user already has a global role that the group would add' do
let(:global_roles) { create_list(:global_role, 2) }
let!(:group) do
create(:group) do |g|
create(:member,
project: nil,
principal: g,
roles: global_roles)
create(:global_member, principal: g, roles: global_roles)
end
end
let!(:user_membership) do
create(:member,
project: nil,
roles: [global_roles.first],
principal: user1)
end
let!(:user_membership) { create(:member, entity: nil, roles: [global_roles.first], principal: user1) }

it 'adds their membership to the global role' do
expect(service_call).to be_success
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,15 +44,9 @@
let(:message) { "Some message" }

let!(:group) do
create(:group,
members: users).tap do |group|
create(:member,
project:,
principal: group,
roles:)
create(:global_member,
principal: group,
roles: global_roles)
create(:group, members: users).tap do |group|
create(:member, entity: project, principal: group, roles:)
create(:global_member, principal: group, roles: global_roles)

Groups::CreateInheritedRolesService
.new(group, current_user: User.system, contract_class: EmptyContract)
Expand Down Expand Up @@ -137,7 +131,7 @@
.not_to eql(Member.find_by(id: first_user_member.id).updated_at)

expect(first_user_member.reload.roles)
.to match_array([another_role, another_global_role])
.to contain_exactly(another_role, another_global_role)
end

it 'sends a notification on the kept membership' do
Expand Down Expand Up @@ -180,7 +174,7 @@
.not_to eql(Member.find_by(id: first_user_member.id).updated_at)

expect(first_user_member.reload.roles)
.to match_array([role, global_role])
.to contain_exactly(role, global_role)
end

it 'sends a notification on the kept membership' do
Expand Down Expand Up @@ -219,7 +213,7 @@
service_call

expect(Member.find_by(principal: users.last).roles)
.to match_array([role])
.to contain_exactly(role)
end

it 'sends no notifications' do
Expand Down
Loading

0 comments on commit 39fc24c

Please sign in to comment.