summaryrefslogtreecommitdiff
path: root/spec/lib/gitlab/checks/single_change_access_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/lib/gitlab/checks/single_change_access_spec.rb')
-rw-r--r--spec/lib/gitlab/checks/single_change_access_spec.rb47
1 files changed, 47 insertions, 0 deletions
diff --git a/spec/lib/gitlab/checks/single_change_access_spec.rb b/spec/lib/gitlab/checks/single_change_access_spec.rb
index 8b235005b3e..e81e4951539 100644
--- a/spec/lib/gitlab/checks/single_change_access_spec.rb
+++ b/spec/lib/gitlab/checks/single_change_access_spec.rb
@@ -58,5 +58,52 @@ RSpec.describe Gitlab::Checks::SingleChangeAccess do
expect { access.validate! }.to raise_error(Gitlab::Checks::TimedLogger::TimeoutError)
end
end
+
+ describe '#commits' do
+ let(:expected_commits) { [Gitlab::Git::Commit.new(project.repository, { id: "1234" })] }
+
+ let(:access) do
+ described_class.new(changes,
+ project: project,
+ user_access: user_access,
+ protocol: protocol,
+ logger: logger,
+ commits: provided_commits)
+ end
+
+ shared_examples '#commits' do
+ it 'returns expected commits' do
+ expect(access.commits).to eq(expected_commits)
+ end
+
+ it 'returns expected commits on repeated calls' do
+ expect(access.commits).to eq(expected_commits)
+ expect(access.commits).to eq(expected_commits)
+ end
+ end
+
+ context 'with provided commits' do
+ let(:provided_commits) { expected_commits }
+
+ before do
+ expect(project.repository).not_to receive(:new_commits)
+ end
+
+ it_behaves_like '#commits'
+ end
+
+ context 'without provided commits' do
+ let(:provided_commits) { nil }
+
+ before do
+ expect(project.repository)
+ .to receive(:new_commits)
+ .once
+ .and_return(expected_commits)
+ end
+
+ it_behaves_like '#commits'
+ end
+ end
end
end