diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-02-25 18:08:50 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-02-25 18:08:50 +0300 |
commit | e06d0e779673d745972863302858105aad9032e5 (patch) | |
tree | 0ff35b27a949a164f586613004b4abfe33e7d20e /spec/support/shared_examples/services | |
parent | f7dae0cdcb70ecb71c1d65f099e9d96b27a4548c (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/support/shared_examples/services')
-rw-r--r-- | spec/support/shared_examples/services/resource_events/change_milestone_service_shared_examples.rb | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/spec/support/shared_examples/services/resource_events/change_milestone_service_shared_examples.rb b/spec/support/shared_examples/services/resource_events/change_milestone_service_shared_examples.rb new file mode 100644 index 00000000000..77f64e5e8f8 --- /dev/null +++ b/spec/support/shared_examples/services/resource_events/change_milestone_service_shared_examples.rb @@ -0,0 +1,46 @@ +# frozen_string_literal: true + +shared_examples 'a milestone events creator' do + let_it_be(:user) { create(:user) } + + let(:created_at_time) { Time.utc(2019, 12, 30) } + let(:service) { described_class.new(resource, user, created_at: created_at_time) } + + context 'when milestone is present' do + let_it_be(:milestone) { create(:milestone) } + + before do + resource.milestone = milestone + end + + it 'creates the expected event record' do + expect { service.execute }.to change { ResourceMilestoneEvent.count }.by(1) + + expect_event_record(ResourceMilestoneEvent.last, action: 'add', milestone: milestone, state: 'opened') + end + end + + context 'when milestones is not present' do + before do + resource.milestone = nil + end + + it 'creates the expected event records' do + expect { service.execute }.to change { ResourceMilestoneEvent.count }.by(1) + + expect_event_record(ResourceMilestoneEvent.last, action: 'remove', milestone: nil, state: 'opened') + end + end + + def expect_event_record(event, expected_attrs) + expect(event.action).to eq(expected_attrs[:action]) + expect(event.state).to eq(expected_attrs[:state]) + expect(event.user).to eq(user) + expect(event.issue).to eq(resource) if resource.is_a?(Issue) + expect(event.issue).to be_nil unless resource.is_a?(Issue) + expect(event.merge_request).to eq(resource) if resource.is_a?(MergeRequest) + expect(event.merge_request).to be_nil unless resource.is_a?(MergeRequest) + expect(event.milestone).to eq(expected_attrs[:milestone]) + expect(event.created_at).to eq(created_at_time) + end +end |