From dea631545f580d22e63ff09f9d9f194a559d2612 Mon Sep 17 00:00:00 2001 From: Peter Marko Date: Tue, 26 Feb 2019 00:27:16 +0100 Subject: fix group without owner after transfer --- spec/services/groups/transfer_service_spec.rb | 29 +++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'spec/services/groups/transfer_service_spec.rb') diff --git a/spec/services/groups/transfer_service_spec.rb b/spec/services/groups/transfer_service_spec.rb index 6b48c993c57..79d504b9b45 100644 --- a/spec/services/groups/transfer_service_spec.rb +++ b/spec/services/groups/transfer_service_spec.rb @@ -410,5 +410,34 @@ describe Groups::TransferService, :postgresql do end end end + + context 'when transferring a subgroup into root group' do + let(:group) { create(:group, :public, :nested) } + let(:subgroup) { create(:group, :public, parent: group) } + let(:transfer_service) { described_class.new(subgroup, user) } + + it 'ensures there is still an owner for the transferred group' do + expect(subgroup.owners).to be_empty + + transfer_service.execute(nil) + subgroup.reload + + expect(subgroup.owners).to match_array(user) + end + + context 'when group has explicit owner' do + let(:another_owner) { create(:user) } + let!(:another_member) { create(:group_member, :owner, group: subgroup, user: another_owner) } + + it 'does not add additional owner' do + expect(subgroup.owners).to match_array(another_owner) + + transfer_service.execute(nil) + subgroup.reload + + expect(subgroup.owners).to match_array(another_owner) + end + end + end end end -- cgit v1.2.1