summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2016-07-25 18:42:57 +0300
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2016-08-02 13:31:19 +0300
commit94ca25c9b8c62f9995fbd571c33954754950e1da (patch)
treead29f5adc66fd51164a203d00d393a9f9415e87e
parentceff8106433187613eb97d13952fc96c4806b847 (diff)
downloadgitlab-ce-94ca25c9b8c62f9995fbd571c33954754950e1da.tar.gz
Improve merge request diff creation and update tests
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
-rw-r--r--app/models/merge_request.rb6
-rw-r--r--spec/models/merge_request_spec.rb28
2 files changed, 17 insertions, 17 deletions
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb
index 88c5987d485..cc1d0c18437 100644
--- a/app/models/merge_request.rb
+++ b/app/models/merge_request.rb
@@ -299,12 +299,8 @@ class MergeRequest < ActiveRecord::Base
def reload_diff
return unless open?
- merge_request_diff = merge_request_diffs.create
-
old_diff_refs = self.diff_refs
-
- merge_request_diff.reload_content
-
+ create_merge_request_diff
new_diff_refs = self.diff_refs
update_diff_notes_positions(
diff --git a/spec/models/merge_request_spec.rb b/spec/models/merge_request_spec.rb
index a0e3c26e542..03e4ae574ef 100644
--- a/spec/models/merge_request_spec.rb
+++ b/spec/models/merge_request_spec.rb
@@ -9,7 +9,7 @@ describe MergeRequest, models: true do
it { is_expected.to belong_to(:target_project).with_foreign_key(:target_project_id).class_name('Project') }
it { is_expected.to belong_to(:source_project).with_foreign_key(:source_project_id).class_name('Project') }
it { is_expected.to belong_to(:merge_user).class_name("User") }
- it { is_expected.to have_one(:merge_request_diff).dependent(:destroy) }
+ it { is_expected.to have_many(:merge_request_diffs).dependent(:destroy) }
end
describe 'modules' do
@@ -134,7 +134,7 @@ describe MergeRequest, models: true do
context 'when there are MR diffs' do
it 'delegates to the MR diffs' do
- merge_request.merge_request_diff = MergeRequestDiff.new
+ merge_request.merge_request_diffs.build
expect(merge_request.merge_request_diff).to receive(:diffs).with(options)
@@ -654,22 +654,26 @@ describe MergeRequest, models: true do
let(:commit) { subject.project.commit(sample_commit.id) }
- it "reloads the diff content" do
- expect(subject.merge_request_diff).to receive(:reload_content)
-
+ it "does not change existing merge request diff" do
+ expect(subject.merge_request_diff).not_to receive(:reload_content)
subject.reload_diff
end
+ it "creates new merge request diff" do
+ expect { subject.reload_diff }.to change { subject.merge_request_diffs.count }.by(1)
+ end
+
it "updates diff note positions" do
old_diff_refs = subject.diff_refs
- merge_request_diff = subject.merge_request_diff
-
# Update merge_request_diff so that #diff_refs will return commit.diff_refs
- allow(merge_request_diff).to receive(:reload_content) do
- merge_request_diff.base_commit_sha = commit.parent_id
- merge_request_diff.start_commit_sha = commit.parent_id
- merge_request_diff.head_commit_sha = commit.sha
+ allow(subject).to receive(:create_merge_request_diff) do
+ subject.merge_request_diffs.create(
+ importing: true,
+ base_commit_sha: commit.parent_id,
+ start_commit_sha: commit.parent_id,
+ head_commit_sha: commit.sha
+ )
end
expect(Notes::DiffPositionUpdateService).to receive(:new).with(
@@ -679,8 +683,8 @@ describe MergeRequest, models: true do
new_diff_refs: commit.diff_refs,
paths: note.position.paths
).and_call_original
- expect_any_instance_of(Notes::DiffPositionUpdateService).to receive(:execute).with(note)
+ expect_any_instance_of(Notes::DiffPositionUpdateService).to receive(:execute).with(note)
expect_any_instance_of(DiffNote).to receive(:save).once
subject.reload_diff