diff options
Diffstat (limited to 'spec/services/bulk_update_integration_service_spec.rb')
-rw-r--r-- | spec/services/bulk_update_integration_service_spec.rb | 74 |
1 files changed, 48 insertions, 26 deletions
diff --git a/spec/services/bulk_update_integration_service_spec.rb b/spec/services/bulk_update_integration_service_spec.rb index 2f0bfd31600..e7944f07bb7 100644 --- a/spec/services/bulk_update_integration_service_spec.rb +++ b/spec/services/bulk_update_integration_service_spec.rb @@ -5,52 +5,74 @@ require 'spec_helper' RSpec.describe BulkUpdateIntegrationService do include JiraServiceHelper - before do + before_all do stub_jira_service_test end let(:excluded_attributes) { %w[id project_id group_id inherit_from_id instance template created_at updated_at] } - let!(:instance_integration) do + let(:batch) do + Service.inherited_descendants_from_self_or_ancestors_from(subgroup_integration).where(id: group_integration.id..integration.id) + end + + let_it_be(:group) { create(:group) } + let_it_be(:subgroup) { create(:group, parent: group) } + let_it_be(:group_integration) do + JiraService.create!( + group: group, + url: 'http://group.jira.com' + ) + end + + let_it_be(:subgroup_integration) do JiraService.create!( - instance: true, - active: true, - push_events: true, - url: 'http://update-jira.instance.com', - username: 'user', - password: 'secret' + inherit_from_id: group_integration.id, + group: subgroup, + url: 'http://subgroup.jira.com', + push_events: true ) end - let!(:integration) do + let_it_be(:excluded_integration) do JiraService.create!( - project: create(:project), - inherit_from_id: instance_integration.id, - instance: false, - active: true, - push_events: false, - url: 'http://jira.instance.com', - username: 'user', - password: 'secret' + group: create(:group), + url: 'http://another.jira.com', + push_events: false + ) + end + + let_it_be(:integration) do + JiraService.create!( + project: create(:project, group: subgroup), + inherit_from_id: subgroup_integration.id, + url: 'http://project.jira.com', + push_events: false ) end context 'with inherited integration' do - it 'updates the integration' do - described_class.new(instance_integration, Service.inherit_from_id(instance_integration.id)).execute + it 'updates the integration', :aggregate_failures do + described_class.new(subgroup_integration, batch).execute + + expect(integration.reload.inherit_from_id).to eq(group_integration.id) + expect(integration.reload.attributes.except(*excluded_attributes)) + .to eq(subgroup_integration.attributes.except(*excluded_attributes)) - expect(integration.reload.inherit_from_id).to eq(instance_integration.id) - expect(integration.attributes.except(*excluded_attributes)) - .to eq(instance_integration.attributes.except(*excluded_attributes)) + expect(excluded_integration.reload.inherit_from_id).not_to eq(group_integration.id) + expect(excluded_integration.reload.attributes.except(*excluded_attributes)) + .not_to eq(subgroup_integration.attributes.except(*excluded_attributes)) end context 'with integration with data fields' do let(:excluded_attributes) { %w[id service_id created_at updated_at] } - it 'updates the data fields from the integration' do - described_class.new(instance_integration, Service.inherit_from_id(instance_integration.id)).execute + it 'updates the data fields from the integration', :aggregate_failures do + described_class.new(subgroup_integration, batch).execute + + expect(integration.data_fields.attributes.except(*excluded_attributes)) + .to eq(subgroup_integration.data_fields.attributes.except(*excluded_attributes)) - expect(integration.reload.data_fields.attributes.except(*excluded_attributes)) - .to eq(instance_integration.data_fields.attributes.except(*excluded_attributes)) + expect(integration.data_fields.attributes.except(*excluded_attributes)) + .not_to eq(excluded_integration.data_fields.attributes.except(*excluded_attributes)) end end end |