diff options
Diffstat (limited to 'spec/support/services/issuable_update_service_shared_examples.rb')
-rw-r--r-- | spec/support/services/issuable_update_service_shared_examples.rb | 40 |
1 files changed, 35 insertions, 5 deletions
diff --git a/spec/support/services/issuable_update_service_shared_examples.rb b/spec/support/services/issuable_update_service_shared_examples.rb index 94061b140f4..b85c3904127 100644 --- a/spec/support/services/issuable_update_service_shared_examples.rb +++ b/spec/support/services/issuable_update_service_shared_examples.rb @@ -6,18 +6,48 @@ RSpec.shared_examples 'issuable update service' do end context 'changing state' do - before do - expect(project).to receive(:execute_hooks).once - end + let(:hook_event) { :"#{closed_issuable.class.name.underscore.to_sym}_hooks" } context 'to reopened' do - it 'executes hooks only once' do + let(:expected_payload) do + include( + changes: include( + state_id: { current: 1, previous: 2 }, + updated_at: { current: kind_of(Time), previous: kind_of(Time) } + ), + object_attributes: include( + state: 'opened', + action: 'reopen' + ) + ) + end + + it 'executes hooks' do + expect(project).to receive(:execute_hooks).with(expected_payload, hook_event) + expect(project).to receive(:execute_integrations).with(expected_payload, hook_event) + described_class.new(project: project, current_user: user, params: { state_event: 'reopen' }).execute(closed_issuable) end end context 'to closed' do - it 'executes hooks only once' do + let(:expected_payload) do + include( + changes: include( + state_id: { current: 2, previous: 1 }, + updated_at: { current: kind_of(Time), previous: kind_of(Time) } + ), + object_attributes: include( + state: 'closed', + action: 'close' + ) + ) + end + + it 'executes hooks' do + expect(project).to receive(:execute_hooks).with(expected_payload, hook_event) + expect(project).to receive(:execute_integrations).with(expected_payload, hook_event) + described_class.new(project: project, current_user: user, params: { state_event: 'close' }).execute(open_issuable) end end |