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:
authorRodolfo Santos <rodolfoasantos@gmail.com>2016-09-16 14:02:42 +0300
committerRémy Coutable <remy@rymai.me>2016-11-04 16:58:40 +0300
commit1db9f826c16053e32a1d234bf40b2ca399779cdf (patch)
tree114a255d1269ed0118fa741f6cbbeb113f0de838 /spec/models/merge_request_spec.rb
parenta3cc2f1e8dfcfb2f3e181fa570ed2ba245f9a069 (diff)
Add setting to only allow merge requests to be merged when all discussions are resolved
Signed-off-by: Rémy Coutable <remy@rymai.me>
Diffstat (limited to 'spec/models/merge_request_spec.rb')
-rw-r--r--spec/models/merge_request_spec.rb58
1 files changed, 57 insertions, 1 deletions
diff --git a/spec/models/merge_request_spec.rb b/spec/models/merge_request_spec.rb
index 1067ff7bb4d..f3d0373e6d7 100644
--- a/spec/models/merge_request_spec.rb
+++ b/spec/models/merge_request_spec.rb
@@ -837,6 +837,17 @@ describe MergeRequest, models: true do
expect(subject.mergeable_state?).to be_falsey
end
end
+
+ context "when project settings restrict to merge only when all the discussions are resolved" do
+ before do
+ project.only_allow_merge_if_all_discussions_are_resolved = true
+ allow(subject).to receive(:mergeable_discussions_state?) { false }
+ end
+
+ it 'returns false' do
+ expect(subject.mergeable_state?).to be_falsey
+ end
+ end
end
end
@@ -887,7 +898,52 @@ describe MergeRequest, models: true do
end
end
- describe '#environments' do
+ describe '#mergeable_discussions_state?' do
+ let!(:user) { create(:user) }
+ let!(:project) { create(:project, only_allow_merge_if_all_discussions_are_resolved: allowed) }
+
+ subject { create(:merge_request_with_diff_notes, source_project: project) }
+
+ context 'when is true' do
+ let(:allowed) { true }
+
+ context 'when discussions are resolved' do
+ before do
+ subject.discussions.each { |d| d.resolve!(user) }
+ end
+
+ it 'returns true' do
+ expect(subject.mergeable_discussions_state?).to be_truthy
+ end
+ end
+
+ context 'when discussions are unresolved' do
+ before do
+ subject.discussions.map(&:unresolve!)
+ end
+
+ it 'returns false' do
+ expect(subject.mergeable_discussions_state?).to be_falsey
+ end
+ end
+ end
+
+ context 'when is false' do
+ let(:allowed) { false }
+
+ context 'when discussions are unresolved' do
+ before do
+ subject.discussions.map(&:unresolve!)
+ end
+
+ it 'returns true' do
+ expect(subject.mergeable_discussions_state?).to be_truthy
+ end
+ end
+ end
+ end
+
+ describe "#environments" do
let(:project) { create(:project) }
let(:merge_request) { create(:merge_request, source_project: project) }