Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-03-14 06:07:26 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2022-03-14 06:07:26 +0300
commite67cd0407febc97c0676bea1f1e6f7739912d94f (patch)
tree9efed91b41c647e24f46a96a9d5051a8c8a78b88 /spec/lib/atlassian
parent2e28214d63c2d287fa14ee8773afb445be528f5f (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.rb20
-rw-r--r--spec/lib/atlassian/jira_connect/dev_info_spec.rb54
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