diff --git a/ee/spec/factories/epics.rb b/ee/spec/factories/epics.rb index da479dafc1adfcca40aa476c40b494d832b313e2..dace8e0c0ee9fd9acc2469d4e807494a1b00a48d 100644 --- a/ee/spec/factories/epics.rb +++ b/ee/spec/factories/epics.rb @@ -37,5 +37,27 @@ epic.update!(labels: evaluator.labels) end end + + trait :with_synced_work_item do + work_item do + association(:work_item, + :epic, + namespace: group, + title: title, + description: description, + created_at: created_at, + updated_at: updated_at, + author: author, + iid: iid, + updated_by: updated_by, + state: state, + confidential: confidential + ) + end + + after(:create) do |epic, _| + epic.work_item.update!(iid: epic.iid, created_at: epic.created_at) + end + end end end diff --git a/ee/spec/services/epics/close_service_spec.rb b/ee/spec/services/epics/close_service_spec.rb index bcb78322ebc3627609cdc4ddb5063550fe559f8b..45f3a16128010c51312f69c2439340d3da027832 100644 --- a/ee/spec/services/epics/close_service_spec.rb +++ b/ee/spec/services/epics/close_service_spec.rb @@ -43,16 +43,8 @@ end context 'with a synced work item' do - let_it_be(:work_item, reload: true) do - create(:work_item, :epic, namespace: group, - title: epic.title, description: epic.description, created_at: epic.created_at, - updated_at: epic.updated_at, author: epic.author, iid: epic.iid, updated_by: epic.updated_by - ) - end - - before do - epic.update!(issue_id: work_item.id) - end + let_it_be(:epic) { create(:epic, :with_synced_work_item, group: group) } + let(:work_item) { epic.work_item } subject { described_class.new(group: group, current_user: user).execute(epic) } diff --git a/ee/spec/services/epics/reopen_service_spec.rb b/ee/spec/services/epics/reopen_service_spec.rb index 6c2540370e0539e9e91b1b18a3013ce70093c725..f748f8282a3a48411828fe494595a12747dfda2e 100644 --- a/ee/spec/services/epics/reopen_service_spec.rb +++ b/ee/spec/services/epics/reopen_service_spec.rb @@ -71,16 +71,8 @@ end context 'with a synced work item' do - let_it_be(:work_item, reload: true) do - create(:work_item, :epic, namespace: group, title: epic.title, description: epic.description, - created_at: epic.created_at, updated_at: epic.updated_at, author: epic.author, iid: epic.iid, - updated_by: epic.updated_by, state: :closed - ) - end - - before do - epic.update!(issue_id: work_item.id) - end + let_it_be(:epic) { create(:epic, :with_synced_work_item, group: group, state: :closed) } + let(:work_item) { epic.work_item } subject { described_class.new(group: group, current_user: user).execute(epic) } diff --git a/ee/spec/services/epics/update_service_spec.rb b/ee/spec/services/epics/update_service_spec.rb index a4d7a0a22a224f9981b7e89c5dcfc181f91debae..947fb295466043c768ab894b777026f5134086d2 100644 --- a/ee/spec/services/epics/update_service_spec.rb +++ b/ee/spec/services/epics/update_service_spec.rb @@ -756,16 +756,11 @@ def update_issuable(update_params) context 'work item sync' do let_it_be(:group) { create(:group) } - let_it_be_with_reload(:epic) { create(:epic, group: group) } let_it_be(:labels) { create_pair(:group_label, group: group) } - let_it_be(:work_item) do - create(:work_item, :epic, namespace: group, iid: epic.iid, author: epic.author, created_at: epic.created_at) - end context 'when epic has a synced work item' do - before do - epic.update!(issue_id: work_item.id) - end + let_it_be_with_reload(:epic) { create(:epic, :with_synced_work_item, group: group) } + let(:work_item) { epic.work_item } context 'multiple values update' do let_it_be(:synced_parent_work_item) { create(:work_item, :epic, namespace: group) } @@ -829,6 +824,8 @@ def update_issuable(update_params) end context 'when epic has no synced work item' do + let_it_be_with_reload(:epic) { create(:epic, group: group) } + it 'does not call WorkItems::UpdateService' do expect(WorkItems::UpdateService).not_to receive(:new)