diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2022-03-14 06:07:26 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2022-03-14 06:07:26 +0300 |
commit | e67cd0407febc97c0676bea1f1e6f7739912d94f (patch) | |
tree | 9efed91b41c647e24f46a96a9d5051a8c8a78b88 /spec/lib/atlassian | |
parent | 2e28214d63c2d287fa14ee8773afb445be528f5f (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/lib/atlassian')
-rw-r--r-- | spec/lib/atlassian/jira_connect/client_spec.rb | 20 | ||||
-rw-r--r-- | spec/lib/atlassian/jira_connect/dev_info_spec.rb | 54 |
2 files changed, 61 insertions, 13 deletions
diff --git a/spec/lib/atlassian/jira_connect/client_spec.rb b/spec/lib/atlassian/jira_connect/client_spec.rb index dd3130c78bf..1857a1431df 100644 --- a/spec/lib/atlassian/jira_connect/client_spec.rb +++ b/spec/lib/atlassian/jira_connect/client_spec.rb @@ -58,12 +58,16 @@ RSpec.describe Atlassian::JiraConnect::Client do deployments: :q ).and_return(:deploys_stored) - expect(subject).to receive(:store_dev_info).with( + expect(Atlassian::JiraConnect::DevInfo).to receive(:new).with( project: project, update_sequence_id: :x, commits: :a, branches: :b, merge_requests: :c + ).and_call_original + + expect(subject).to receive(:store_dev_info).with( + instance_of(Atlassian::JiraConnect::DevInfo) ).and_return(:dev_stored) args = { @@ -83,9 +87,7 @@ RSpec.describe Atlassian::JiraConnect::Client do it 'only calls methods that we need to call' do expect(subject).to receive(:store_dev_info).with( - project: project, - update_sequence_id: :x, - commits: :a + instance_of(Atlassian::JiraConnect::DevInfo) ).and_return(:dev_stored) args = { @@ -402,15 +404,7 @@ RSpec.describe Atlassian::JiraConnect::Client do end it "calls the API with auth headers" do - subject.send(:store_dev_info, project: project) - end - - it 'avoids N+1 database queries' do - control_count = ActiveRecord::QueryRecorder.new { subject.send(:store_dev_info, project: project, merge_requests: merge_requests) }.count - - merge_requests << create(:merge_request, :unique_branches) - - expect { subject.send(:store_dev_info, project: project, merge_requests: merge_requests) }.not_to exceed_query_limit(control_count) + subject.send(:store_dev_info, Atlassian::JiraConnect::DevInfo.new(project: project)) end end end diff --git a/spec/lib/atlassian/jira_connect/dev_info_spec.rb b/spec/lib/atlassian/jira_connect/dev_info_spec.rb new file mode 100644 index 00000000000..357168a94b9 --- /dev/null +++ b/spec/lib/atlassian/jira_connect/dev_info_spec.rb @@ -0,0 +1,54 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Atlassian::JiraConnect::DevInfo do + let_it_be(:project) { create_default(:project, :repository).freeze } + + let(:update_sequence_id) { '123' } + + describe '#url' do + subject { described_class.new(project: project).url } + + it { is_expected.to eq('/rest/devinfo/0.10/bulk') } + end + + describe '#body' do + let_it_be(:merge_request) { create(:merge_request, :unique_branches, title: 'TEST-123') } + let_it_be(:note) { create(:note, noteable: merge_request, project: merge_request.project) } + let_it_be(:branches) do + project.repository.create_branch('TEST-123', project.default_branch_or_main) + [project.repository.find_branch('TEST-123')] + end + + let(:merge_requests) { [merge_request] } + + subject(:body) { described_class.new(project: project, branches: branches, merge_requests: merge_requests, update_sequence_id: update_sequence_id).body.to_json } + + it 'matches the schema' do + expect(body).to match_schema('jira_connect/dev_info') + end + + it 'avoids N+1 database queries' do + control_count = ActiveRecord::QueryRecorder.new { subject }.count + + merge_requests << create(:merge_request, :unique_branches) + + expect { subject }.not_to exceed_query_limit(control_count) + end + end + + describe '#present?' do + let(:arguments) { { commits: nil, branches: nil, merge_requests: nil } } + + subject { described_class.new(**{ project: project, update_sequence_id: update_sequence_id }.merge(arguments)).present? } + + it { is_expected.to eq(false) } + + context 'with commits, branches or merge requests' do + let(:arguments) { { commits: anything, branches: anything, merge_requests: anything } } + + it { is_expected.to eq(true) } + end + end +end |