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:
Diffstat (limited to 'spec/models')
-rw-r--r--spec/models/hooks/web_hook_spec.rb4
-rw-r--r--spec/models/merge_request_spec.rb53
2 files changed, 55 insertions, 2 deletions
diff --git a/spec/models/hooks/web_hook_spec.rb b/spec/models/hooks/web_hook_spec.rb
index dd954e08156..290cf500852 100644
--- a/spec/models/hooks/web_hook_spec.rb
+++ b/spec/models/hooks/web_hook_spec.rb
@@ -130,11 +130,11 @@ RSpec.describe WebHook do
end
describe '#destroy' do
- it 'cascades to web_hook_logs' do
+ it 'does not cascade to web_hook_logs' do
web_hook = create(:project_hook)
create_list(:web_hook_log, 3, web_hook: web_hook)
- expect { web_hook.destroy! }.to change(web_hook.web_hook_logs, :count).by(-3)
+ expect { web_hook.destroy! }.not_to change(web_hook.web_hook_logs, :count)
end
end
diff --git a/spec/models/merge_request_spec.rb b/spec/models/merge_request_spec.rb
index d40c78b5b60..32639b3e7d2 100644
--- a/spec/models/merge_request_spec.rb
+++ b/spec/models/merge_request_spec.rb
@@ -5077,4 +5077,57 @@ RSpec.describe MergeRequest, factory_default: :keep do
expect(assignees).to match_array([subject.merge_request_assignees[0]])
end
end
+
+ describe '#recent_diff_head_shas' do
+ let_it_be(:merge_request_with_diffs) do
+ params = {
+ target_project: project,
+ source_project: project,
+ target_branch: 'master',
+ source_branch: 'feature'
+ }
+
+ create(:merge_request, params).tap do |mr|
+ 4.times { mr.merge_request_diffs.create! }
+ mr.create_merge_head_diff
+ end
+ end
+
+ let(:shas) do
+ # re-find to avoid caching the association
+ described_class.find(merge_request_with_diffs.id).merge_request_diffs.order(id: :desc).pluck(:head_commit_sha)
+ end
+
+ shared_examples 'correctly sorted and limited diff_head_shas' do
+ it 'has up to MAX_RECENT_DIFF_HEAD_SHAS, ordered most recent first' do
+ stub_const('MergeRequest::MAX_RECENT_DIFF_HEAD_SHAS', 3)
+
+ expect(subject.recent_diff_head_shas).to eq(shas.first(3))
+ end
+
+ it 'supports limits' do
+ expect(subject.recent_diff_head_shas(2)).to eq(shas.first(2))
+ end
+ end
+
+ context 'when the association is not loaded' do
+ subject(:mr) { merge_request_with_diffs }
+
+ include_examples 'correctly sorted and limited diff_head_shas'
+ end
+
+ context 'when the association is loaded' do
+ subject(:mr) do
+ described_class.where(id: merge_request_with_diffs.id).preload(:merge_request_diffs).first
+ end
+
+ include_examples 'correctly sorted and limited diff_head_shas'
+
+ it 'does not issue any queries' do
+ expect(subject).to be_a(described_class) # preload here
+
+ expect { subject.recent_diff_head_shas }.not_to exceed_query_limit(0)
+ end
+ end
+ end
end