diff options
Diffstat (limited to 'spec/services/groups/import_export/export_service_spec.rb')
-rw-r--r-- | spec/services/groups/import_export/export_service_spec.rb | 40 |
1 files changed, 37 insertions, 3 deletions
diff --git a/spec/services/groups/import_export/export_service_spec.rb b/spec/services/groups/import_export/export_service_spec.rb index 56c7121cc34..7bad68b4e00 100644 --- a/spec/services/groups/import_export/export_service_spec.rb +++ b/spec/services/groups/import_export/export_service_spec.rb @@ -11,7 +11,7 @@ describe Groups::ImportExport::ExportService do let(:export_service) { described_class.new(group: group, user: user) } it 'enqueues an export job' do - expect(GroupExportWorker).to receive(:perform_async).with(user.id, group.id, {}) + allow(GroupExportWorker).to receive(:perform_async).with(user.id, group.id, {}) export_service.async_execute end @@ -49,12 +49,36 @@ describe Groups::ImportExport::ExportService do FileUtils.rm_rf(archive_path) end - it 'saves the models' do + it 'saves the version' do + expect(Gitlab::ImportExport::VersionSaver).to receive(:new).and_call_original + + service.execute + end + + it 'saves the models using ndjson tree saver' do + stub_feature_flags(group_export_ndjson: true) + + expect(Gitlab::ImportExport::Group::TreeSaver).to receive(:new).and_call_original + + service.execute + end + + it 'saves the models using legacy tree saver' do + stub_feature_flags(group_export_ndjson: false) + expect(Gitlab::ImportExport::Group::LegacyTreeSaver).to receive(:new).and_call_original service.execute end + it 'notifies the user' do + expect_next_instance_of(NotificationService) do |instance| + expect(instance).to receive(:group_was_exported) + end + + service.execute + end + context 'when saver succeeds' do it 'saves the group in the file system' do service.execute @@ -98,16 +122,26 @@ describe Groups::ImportExport::ExportService do context 'when export fails' do context 'when file saver fails' do - it 'removes the remaining exported data' do + before do allow_next_instance_of(Gitlab::ImportExport::Saver) do |saver| allow(saver).to receive(:save).and_return(false) end + end + it 'removes the remaining exported data' do expect { service.execute }.to raise_error(Gitlab::ImportExport::Error) expect(group.import_export_upload).to be_nil expect(File.exist?(shared.archive_path)).to eq(false) end + + it 'notifies the user about failed group export' do + expect_next_instance_of(NotificationService) do |instance| + expect(instance).to receive(:group_was_not_exported) + end + + expect { service.execute }.to raise_error(Gitlab::ImportExport::Error) + end end context 'when file compression fails' do |