48 lines
1.3 KiB
Ruby
48 lines
1.3 KiB
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
require 'spec_helper'
|
||
|
|
||
|
RSpec.describe BulkImports::RelationExportWorker do
|
||
|
let_it_be(:jid) { 'jid' }
|
||
|
let_it_be(:relation) { 'labels' }
|
||
|
let_it_be(:user) { create(:user) }
|
||
|
let_it_be(:group) { create(:group) }
|
||
|
|
||
|
let(:job_args) { [user.id, group.id, group.class.name, relation] }
|
||
|
|
||
|
describe '#perform' do
|
||
|
include_examples 'an idempotent worker' do
|
||
|
context 'when export record does not exist' do
|
||
|
let(:another_group) { create(:group) }
|
||
|
let(:job_args) { [user.id, another_group.id, another_group.class.name, relation] }
|
||
|
|
||
|
it 'creates export record' do
|
||
|
another_group.add_owner(user)
|
||
|
|
||
|
expect { perform_multiple(job_args) }
|
||
|
.to change { another_group.bulk_import_exports.count }
|
||
|
.from(0)
|
||
|
.to(1)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
it 'executes RelationExportService' do
|
||
|
group.add_owner(user)
|
||
|
|
||
|
service = instance_double(BulkImports::RelationExportService)
|
||
|
|
||
|
expect(BulkImports::RelationExportService)
|
||
|
.to receive(:new)
|
||
|
.with(user, group, relation, anything)
|
||
|
.twice
|
||
|
.and_return(service)
|
||
|
expect(service)
|
||
|
.to receive(:execute)
|
||
|
.twice
|
||
|
|
||
|
perform_multiple(job_args)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|