Commit e4445e69 authored by Arturo Herrero's avatar Arturo Herrero

Reduce database queries in transfer_service_spec

parent 5b1c5673
...@@ -3,15 +3,15 @@ ...@@ -3,15 +3,15 @@
require 'spec_helper' require 'spec_helper'
RSpec.describe Groups::TransferService do RSpec.describe Groups::TransferService do
let(:user) { create(:user) } let_it_be(:user) { create(:user) }
let(:new_parent_group) { create(:group, :public) } let_it_be(:new_parent_group) { create(:group, :public) }
let!(:group_member) { create(:group_member, :owner, group: group, user: user) } let!(:group_member) { create(:group_member, :owner, group: group, user: user) }
let(:transfer_service) { described_class.new(group, user) } let(:transfer_service) { described_class.new(group, user) }
context 'handling packages' do context 'handling packages' do
let_it_be(:group) { create(:group, :public) } let_it_be(:group) { create(:group, :public) }
let_it_be(:new_group) { create(:group, :public) }
let(:project) { create(:project, :public, namespace: group) } let(:project) { create(:project, :public, namespace: group) }
let(:new_group) { create(:group, :public) }
before do before do
group.add_owner(user) group.add_owner(user)
...@@ -35,8 +35,8 @@ RSpec.describe Groups::TransferService do ...@@ -35,8 +35,8 @@ RSpec.describe Groups::TransferService do
it_behaves_like 'transfer not allowed' it_behaves_like 'transfer not allowed'
context 'with a project within subgroup' do context 'with a project within subgroup' do
let(:root_group) { create(:group) } let_it_be(:root_group) { create(:group) }
let(:group) { create(:group, parent: root_group) } let_it_be(:group) { create(:group, parent: root_group) }
before do before do
root_group.add_owner(user) root_group.add_owner(user)
...@@ -79,8 +79,6 @@ RSpec.describe Groups::TransferService do ...@@ -79,8 +79,6 @@ RSpec.describe Groups::TransferService do
shared_examples 'ensuring allowed transfer for a group' do shared_examples 'ensuring allowed transfer for a group' do
context "when there's an exception on GitLab shell directories" do context "when there's an exception on GitLab shell directories" do
let(:new_parent_group) { create(:group, :public) }
before do before do
allow_next_instance_of(described_class) do |instance| allow_next_instance_of(described_class) do |instance|
allow(instance).to receive(:update_group_attributes).and_raise(Gitlab::UpdatePathError, 'namespace directory cannot be moved') allow(instance).to receive(:update_group_attributes).and_raise(Gitlab::UpdatePathError, 'namespace directory cannot be moved')
...@@ -101,7 +99,7 @@ RSpec.describe Groups::TransferService do ...@@ -101,7 +99,7 @@ RSpec.describe Groups::TransferService do
describe '#execute' do describe '#execute' do
context 'when transforming a group into a root group' do context 'when transforming a group into a root group' do
let!(:group) { create(:group, :public, :nested) } let_it_be_with_reload(:group) { create(:group, :public, :nested) }
it_behaves_like 'ensuring allowed transfer for a group' it_behaves_like 'ensuring allowed transfer for a group'
...@@ -115,7 +113,7 @@ RSpec.describe Groups::TransferService do ...@@ -115,7 +113,7 @@ RSpec.describe Groups::TransferService do
end end
context 'when the user does not have the right policies' do context 'when the user does not have the right policies' do
let!(:group_member) { create(:group_member, :guest, group: group, user: user) } let_it_be(:group_member) { create(:group_member, :guest, group: group, user: user) }
it "returns false" do it "returns false" do
expect(transfer_service.execute(nil)).to be_falsy expect(transfer_service.execute(nil)).to be_falsy
...@@ -128,7 +126,7 @@ RSpec.describe Groups::TransferService do ...@@ -128,7 +126,7 @@ RSpec.describe Groups::TransferService do
end end
context 'when there is a group with the same path' do context 'when there is a group with the same path' do
let!(:group) { create(:group, :public, :nested, path: 'not-unique') } let_it_be(:group) { create(:group, :public, :nested, path: 'not-unique') }
before do before do
create(:group, path: 'not-unique') create(:group, path: 'not-unique')
...@@ -145,9 +143,9 @@ RSpec.describe Groups::TransferService do ...@@ -145,9 +143,9 @@ RSpec.describe Groups::TransferService do
end end
context 'when the group is a subgroup and the transfer is valid' do context 'when the group is a subgroup and the transfer is valid' do
let!(:subgroup1) { create(:group, :private, parent: group) } let_it_be(:subgroup1) { create(:group, :private, parent: group) }
let!(:subgroup2) { create(:group, :internal, parent: group) } let_it_be(:subgroup2) { create(:group, :internal, parent: group) }
let!(:project1) { create(:project, :repository, :private, namespace: group) } let_it_be(:project1) { create(:project, :repository, :private, namespace: group) }
before do before do
transfer_service.execute(nil) transfer_service.execute(nil)
...@@ -173,12 +171,12 @@ RSpec.describe Groups::TransferService do ...@@ -173,12 +171,12 @@ RSpec.describe Groups::TransferService do
end end
context 'when transferring a subgroup into another group' do context 'when transferring a subgroup into another group' do
let(:group) { create(:group, :public, :nested) } let_it_be_with_reload(:group) { create(:group, :public, :nested) }
it_behaves_like 'ensuring allowed transfer for a group' it_behaves_like 'ensuring allowed transfer for a group'
context 'when the new parent group is the same as the previous parent group' do context 'when the new parent group is the same as the previous parent group' do
let(:group) { create(:group, :public, :nested, parent: new_parent_group) } let_it_be(:group) { create(:group, :public, :nested, parent: new_parent_group) }
it 'returns false' do it 'returns false' do
expect(transfer_service.execute(new_parent_group)).to be_falsy expect(transfer_service.execute(new_parent_group)).to be_falsy
...@@ -191,7 +189,7 @@ RSpec.describe Groups::TransferService do ...@@ -191,7 +189,7 @@ RSpec.describe Groups::TransferService do
end end
context 'when the user does not have the right policies' do context 'when the user does not have the right policies' do
let!(:group_member) { create(:group_member, :guest, group: group, user: user) } let_it_be(:group_member) { create(:group_member, :guest, group: group, user: user) }
it "returns false" do it "returns false" do
expect(transfer_service.execute(new_parent_group)).to be_falsy expect(transfer_service.execute(new_parent_group)).to be_falsy
...@@ -221,7 +219,7 @@ RSpec.describe Groups::TransferService do ...@@ -221,7 +219,7 @@ RSpec.describe Groups::TransferService do
end end
context 'when the parent group has a project with the same path' do context 'when the parent group has a project with the same path' do
let!(:group) { create(:group, :public, :nested, path: 'foo') } let_it_be_with_reload(:group) { create(:group, :public, :nested, path: 'foo') }
before do before do
create(:group_member, :owner, group: new_parent_group, user: user) create(:group_member, :owner, group: new_parent_group, user: user)
...@@ -464,7 +462,7 @@ RSpec.describe Groups::TransferService do ...@@ -464,7 +462,7 @@ RSpec.describe Groups::TransferService do
end end
context 'updated paths' do context 'updated paths' do
let(:group) { create(:group, :public) } let_it_be_with_reload(:group) { create(:group, :public) }
before do before do
transfer_service.execute(new_parent_group) transfer_service.execute(new_parent_group)
...@@ -500,10 +498,10 @@ RSpec.describe Groups::TransferService do ...@@ -500,10 +498,10 @@ RSpec.describe Groups::TransferService do
end end
context 'resets project authorizations' do context 'resets project authorizations' do
let(:old_parent_group) { create(:group) } let_it_be(:old_parent_group) { create(:group) }
let(:group) { create(:group, :private, parent: old_parent_group) } let_it_be_with_reload(:group) { create(:group, :private, parent: old_parent_group) }
let(:new_group_member) { create(:user) } let_it_be(:new_group_member) { create(:user) }
let(:old_group_member) { create(:user) } let_it_be(:old_group_member) { create(:user) }
before do before do
new_parent_group.add_maintainer(new_group_member) new_parent_group.add_maintainer(new_group_member)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment