MR on Fork multiple fixes
-Disable observers post test run -Allow db:seed_fu RAILS_ENV=test to be run more than once without error -fix diffs_in_between, was passing in the default_options for grit, but grit in this case doesn't take options, fixed the test to actually fail if the incorrect diffs are returned -make notes/commits render against proper project -MR discussion file links should reference note's project -Added tests for commit links on edit merge request -fixes edit issues (canceling an edited mr, updating an edited mr) -updates tests with checks for source code updates -still forked_merge_requests.feature (project_forked_merge_requests) test not passing (commented out -- "stable" not being set) MR API: error on bad target_project -If the target project id is specified and it is not the same as the project the request is being made on (the source), and the it isn't a fork of that project, error out, otherwise use it as the target -Fixes some busted (but hidden) test cases Conflicts: app/views/merge_requests/show/_diffs.html.haml spec/features/notes_on_merge_requests_spec.rb Change-Id: I20e595c156d0e8a63048baaead7be6330c738a05
This commit is contained in:
parent
3d7194f011
commit
489fa5d726
19 changed files with 116 additions and 59 deletions
|
@ -50,10 +50,13 @@ class Projects::MergeRequestsController < Projects::ApplicationController
|
|||
@merge_request.target_project = Project.find_by_id(params[:merge_request][:target_project_id])
|
||||
end
|
||||
@target_branches = @merge_request.target_project.nil? ? [] : @merge_request.target_project.repository.branch_names
|
||||
@source_project = @merge_request.source_project
|
||||
@merge_request
|
||||
end
|
||||
|
||||
def edit
|
||||
@source_project = @merge_request.source_project
|
||||
@target_project = @merge_request.target_project
|
||||
@target_branches = @merge_request.target_project.repository.branch_names
|
||||
end
|
||||
|
||||
|
@ -75,7 +78,7 @@ class Projects::MergeRequestsController < Projects::ApplicationController
|
|||
if @merge_request.update_attributes(params[:merge_request].merge(author_id_of_changes: current_user.id))
|
||||
@merge_request.reload_code
|
||||
@merge_request.mark_as_unchecked
|
||||
redirect_to [@project, @merge_request], notice: 'Merge request was successfully updated.'
|
||||
redirect_to [@merge_request.target_project, @merge_request], notice: 'Merge request was successfully updated.'
|
||||
else
|
||||
render "edit"
|
||||
end
|
||||
|
@ -104,6 +107,7 @@ class Projects::MergeRequestsController < Projects::ApplicationController
|
|||
|
||||
def branch_from
|
||||
#This is always source
|
||||
@source_project = @merge_request.nil? ? @project : @merge_request.source_project
|
||||
@commit = @repository.commit(params[:ref])
|
||||
end
|
||||
|
||||
|
@ -128,13 +132,14 @@ class Projects::MergeRequestsController < Projects::ApplicationController
|
|||
|
||||
protected
|
||||
|
||||
|
||||
def selected_target_project
|
||||
((@project.id.to_s == params[:target_project_id]) || @project.forked_project_link.nil?) ? @project : @project.forked_project_link.forked_from_project
|
||||
end
|
||||
|
||||
|
||||
def merge_request
|
||||
@merge_request ||= @project.merge_requests.find(params[:id])
|
||||
@merge_request ||= MergeRequest.find_by_id(params[:id])
|
||||
end
|
||||
|
||||
def authorize_modify_merge_request!
|
||||
|
|
|
@ -11,7 +11,7 @@ module NotesHelper
|
|||
|
||||
def link_to_commit_diff_line_note(note)
|
||||
if note.for_commit_diff_line?
|
||||
link_to "#{note.diff_file_name}:L#{note.diff_new_line}", project_commit_path(@project, note.noteable, anchor: note.line_code)
|
||||
link_to "#{note.diff_file_name}:L#{note.diff_new_line}", project_commit_path(note.project, note.noteable, anchor: note.line_code)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -7,5 +7,5 @@
|
|||
and
|
||||
%span.cred #{@commit.stats.deletions} deletions
|
||||
|
||||
= render "projects/commits/diffs", diffs: @commit.diffs
|
||||
= render "projects/notes/notes_with_form"
|
||||
= render "projects/commits/diffs", diffs: @commit.diffs, project: @project
|
||||
= render "projects/notes/notes_with_form"
|
|
@ -5,7 +5,7 @@
|
|||
%p To prevent performance issue we rejected diff information.
|
||||
%p
|
||||
But if you still want to see diff
|
||||
= link_to "click this link", project_commit_path(@project, @commit, force_show_diff: true), class: "underlined_link"
|
||||
= link_to "click this link", project_commit_path(project, @commit, force_show_diff: true), class: "underlined_link"
|
||||
|
||||
%p.cgray
|
||||
Showing #{pluralize(diffs.count, "changed file")}
|
||||
|
@ -16,8 +16,8 @@
|
|||
- unless @suppress_diff
|
||||
- diffs.each_with_index do |diff, i|
|
||||
- next if diff.diff.empty?
|
||||
- file = Gitlab::Git::Blob.new(@repository, @commit.id, @ref, diff.new_path)
|
||||
- file = Gitlab::Git::Blob.new(@repository, @commit.parent_id, @ref, diff.old_path) unless file.exists?
|
||||
- file = Gitlab::Git::Blob.new(project.repository, @commit.id, @ref, diff.new_path)
|
||||
- file = Gitlab::Git::Blob.new(project.repository, @commit.parent_id, @ref, diff.old_path) unless file.exists?
|
||||
- next unless file.exists?
|
||||
.file{id: "diff-#{i}"}
|
||||
.header
|
||||
|
@ -25,7 +25,7 @@
|
|||
%span= diff.old_path
|
||||
|
||||
- if @commit.parent_ids.present?
|
||||
= link_to project_blob_path(@project, tree_join(@commit.parent_id, diff.new_path)), {:class => 'btn btn-tiny pull-right view-file'} do
|
||||
= link_to project_blob_path(project, tree_join(@commit.parent_id, diff.new_path)), {:class => 'btn btn-tiny pull-right view-file'} do
|
||||
View file @
|
||||
%span.commit-short-id= @commit.short_id(6)
|
||||
- else
|
||||
|
@ -33,7 +33,7 @@
|
|||
- if diff.a_mode && diff.b_mode && diff.a_mode != diff.b_mode
|
||||
%span.file-mode= "#{diff.a_mode} → #{diff.b_mode}"
|
||||
|
||||
= link_to project_blob_path(@project, tree_join(@commit.id, diff.new_path)), {:class => 'btn btn-tiny pull-right view-file'} do
|
||||
= link_to project_blob_path(project, tree_join(@commit.id, diff.new_path)), {:class => 'btn btn-tiny pull-right view-file'} do
|
||||
View file @
|
||||
%span.commit-short-id= @commit.short_id(6)
|
||||
|
||||
|
@ -43,7 +43,7 @@
|
|||
- if file.text?
|
||||
= render "projects/commits/text_file", diff: diff, index: i
|
||||
- elsif file.image?
|
||||
- old_file = Gitlab::Git::Blob.new(@repository, @commit.parent_id, @ref, diff.old_path) if @commit.parent_id
|
||||
- old_file = Gitlab::Git::Blob.new(project.repository, @commit.parent_id, @ref, diff.old_path) if @commit.parent_id
|
||||
= render "projects/commits/image", diff: diff, old_file: old_file, file: file, index: i
|
||||
- else
|
||||
%p.nothing_here_message No preview for this file type
|
||||
|
|
|
@ -19,4 +19,4 @@
|
|||
|
||||
- unless @diffs.empty?
|
||||
%h4 Diff
|
||||
= render "projects/commits/diffs", diffs: @diffs
|
||||
= render "projects/commits/diffs", diffs: @diffs, project: @project
|
|
@ -1,4 +1,4 @@
|
|||
= form_for [@project, @merge_request], html: { class: "#{controller.action_name}-merge-request form-horizontal" } do |form_helper|
|
||||
= form_for [@source_project, @merge_request], html: { class: "#{controller.action_name}-merge-request form-horizontal" } do |form_helper|
|
||||
-if @merge_request.errors.any?
|
||||
.alert.alert-error
|
||||
%ul
|
||||
|
@ -55,10 +55,10 @@
|
|||
-else
|
||||
= form_helper.submit 'Save changes', class: "btn btn-save"
|
||||
- if @merge_request.new_record?
|
||||
= link_to project_merge_requests_path(@project), class: "btn btn-cancel" do
|
||||
= link_to project_merge_requests_path(@source_project), class: "btn btn-cancel" do
|
||||
Cancel
|
||||
- else
|
||||
= link_to project_merge_request_path(@project, @merge_request), class: "btn btn-cancel" do
|
||||
= link_to project_merge_request_path(@target_project, @merge_request), class: "btn btn-cancel" do
|
||||
Cancel
|
||||
|
||||
:javascript
|
||||
|
@ -68,19 +68,17 @@
|
|||
, target_branch = $("#merge_request_target_branch")
|
||||
, target_project = $("#merge_request_target_project_id");
|
||||
|
||||
$.get("#{branch_from_project_merge_requests_path(@project)}", {ref: source_branch.val() });
|
||||
$.get("#{branch_to_project_merge_requests_path(@project)}", {target_project_id: target_project.val(),ref: target_branch.val() });
|
||||
$.get("#{branch_from_project_merge_requests_path(@source_project)}", {ref: source_branch.val() });
|
||||
$.get("#{branch_to_project_merge_requests_path(@source_project)}", {target_project_id: target_project.val(),ref: target_branch.val() });
|
||||
|
||||
target_project.live("change", function() {
|
||||
$.get("#{update_branches_project_merge_requests_path(@project)}", {target_project_id: $(this).val() });
|
||||
$.get("#{update_branches_project_merge_requests_path(@source_project)}", {target_project_id: $(this).val() });
|
||||
});
|
||||
source_branch.live("change", function() {
|
||||
$.get("#{branch_from_project_merge_requests_path(@project)}", {ref: $(this).val() });
|
||||
$.get("#{branch_from_project_merge_requests_path(@source_project)}", {ref: $(this).val() });
|
||||
});
|
||||
target_branch.live("change", function() {
|
||||
$.get("#{branch_to_project_merge_requests_path(@project)}", {target_project_id: target_project.val(),ref: $(this).val() });
|
||||
$.get("#{branch_to_project_merge_requests_path(@source_project)}", {target_project_id: target_project.val(),ref: $(this).val() });
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
|
||||
});
|
|
@ -1,2 +1,2 @@
|
|||
:plain
|
||||
$(".mr_source_commit").html("#{commit_to_html(@commit, @project)}");
|
||||
$(".mr_source_commit").html("#{commit_to_html(@commit, @source_project)}");
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
- if @merge_request.valid_diffs?
|
||||
= render "projects/commits/diffs", diffs: @merge_request.diffs
|
||||
= render "projects/commits/diffs", diffs: @diffs, project: @merge_request.source_project
|
||||
- elsif @merge_request.broken_diffs?
|
||||
%h4.nothing_here_message
|
||||
Can't load diff.
|
||||
You can
|
||||
= link_to "download it", project_merge_request_path(@project, @merge_request, format: :diff), class: "vlink"
|
||||
= link_to "download it", project_merge_request_path(@merge_request.source_project, @merge_request), format: :diff, class: "vlink"
|
||||
instead.
|
||||
- else
|
||||
%h4.nothing_here_message Nothing to merge
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
|
||||
= link_to 'Close', project_merge_request_path(@project, @merge_request, merge_request: {state_event: :close }), method: :put, class: "btn grouped btn-close", title: "Close merge request"
|
||||
|
||||
= link_to edit_project_merge_request_path(@project, @merge_request), class: "btn grouped" do
|
||||
= link_to edit_project_merge_request_path(@project, @merge_request), class: "btn grouped", id:"edit_merge_request" do
|
||||
%i.icon-edit
|
||||
Edit
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
Show discussion
|
||||
= image_tag gravatar_icon(note.author_email), class: "avatar s32"
|
||||
%div
|
||||
= link_to_member(@project, note.author, avatar: false)
|
||||
= link_to_member(note.project, note.author, avatar: false)
|
||||
- if note.for_merge_request?
|
||||
- if note.diff
|
||||
started a discussion on this merge request diff
|
||||
|
@ -23,7 +23,7 @@
|
|||
discussion on this merge request diff
|
||||
- elsif note.for_commit?
|
||||
started a discussion on commit
|
||||
#{link_to note.noteable.short_id, project_commit_path(@project, note.noteable)}
|
||||
#{link_to note.noteable.short_id, project_commit_path(note.project, note.noteable)}
|
||||
= link_to_commit_diff_line_note(note) if note.for_diff_line?
|
||||
- else
|
||||
%cite.cgray started a discussion
|
||||
|
|
|
@ -25,9 +25,12 @@ print "Creating seed satellite..."
|
|||
SATELLITE_PATH = Rails.root.join('tmp', 'satellite')
|
||||
# Make directory
|
||||
FileUtils.mkdir_p(SATELLITE_PATH)
|
||||
# Clear any potential directory
|
||||
FileUtils.rm_rf("#{SATELLITE_PATH}/gitlabhq")
|
||||
# Chdir, clone from the seed
|
||||
FileUtils.cd(SATELLITE_PATH) do
|
||||
# Clone the satellite
|
||||
|
||||
`git clone --quiet #{REPO_PATH}/gitlabhq #{SATELLITE_PATH}/gitlabhq`
|
||||
end
|
||||
puts ' done.'
|
||||
|
|
|
@ -13,6 +13,7 @@ Feature: Project Forked Merge Requests
|
|||
And I follow the target commit link
|
||||
Then I should see the commit under the forked from project
|
||||
|
||||
@javascript
|
||||
Scenario: I submit new unassigned merge request to a forked project
|
||||
Given I visit project "Forked Shop" merge requests page
|
||||
And I click link "New Merge Request"
|
||||
|
@ -21,6 +22,7 @@ Feature: Project Forked Merge Requests
|
|||
Then I should see merge request "Merge Request On Forked Project"
|
||||
|
||||
|
||||
@javascript
|
||||
Scenario: I should see a push widget for forked merge requests
|
||||
Given project "Forked Shop" has push event
|
||||
And I visit dashboard page
|
||||
|
@ -28,7 +30,7 @@ Feature: Project Forked Merge Requests
|
|||
And I click "Create Merge Request on fork" link
|
||||
Then I see prefilled new Merge Request page for the forked project
|
||||
|
||||
|
||||
@javascript
|
||||
Scenario: I can edit a forked merge request
|
||||
Given I visit project "Forked Shop" merge requests page
|
||||
And I click link "New Merge Request"
|
||||
|
@ -36,6 +38,6 @@ Feature: Project Forked Merge Requests
|
|||
And I submit the merge request
|
||||
And I should see merge request "Merge Request On Forked Project"
|
||||
And I click link edit "Merge Request On Forked Project"
|
||||
Then I see prefilled "Merge Request On Forked Project"
|
||||
Then I see the edit page prefilled for "Merge Request On Forked Project"
|
||||
|
||||
|
||||
|
|
|
@ -43,11 +43,14 @@ class ProjectForkedMergeRequests < Spinach::FeatureSteps
|
|||
|
||||
select @project.path_with_namespace, from: "merge_request_target_project_id"
|
||||
find(:select, "merge_request_target_project_id", {}).value.should == @project.id.to_s
|
||||
|
||||
select "master", from: "merge_request_source_branch"
|
||||
find(:select, "merge_request_source_branch", {}).value.should == "master"
|
||||
find(:select, "merge_request_source_branch", {}).value.should have_content "master"
|
||||
#Force the page to wait until the javascript finishes, so the stable option shows up
|
||||
select "stable", from: "merge_request_target_branch"
|
||||
find(:select, "merge_request_target_branch", {}).value.should == "stable"
|
||||
find(:select, "merge_request_target_branch", {}).should have_content "stable"
|
||||
|
||||
verify_commit_link(".mr_source_commit",@forked_project)
|
||||
verify_commit_link(".mr_target_commit",@project)
|
||||
end
|
||||
|
||||
And 'I submit the merge request' do
|
||||
|
@ -72,9 +75,11 @@ class ProjectForkedMergeRequests < Spinach::FeatureSteps
|
|||
current_path.should == new_project_merge_request_path(@forked_project)
|
||||
find("#merge_request_source_project_id").value.should == @forked_project.id.to_s
|
||||
find("#merge_request_target_project_id").value.should == @project.id.to_s
|
||||
find("#merge_request_source_branch").value.should == "new_design"
|
||||
find("#merge_request_target_branch").value.should == "master"
|
||||
find("#merge_request_source_branch").value.should have_content "new_design"
|
||||
find("#merge_request_target_branch").value.should have_content "master"
|
||||
find("#merge_request_title").value.should == "New Design"
|
||||
verify_commit_link(".mr_target_commit",@project)
|
||||
verify_commit_link(".mr_source_commit",@forked_project)
|
||||
end
|
||||
|
||||
Then 'I should see last push widget' do
|
||||
|
@ -110,24 +115,25 @@ class ProjectForkedMergeRequests < Spinach::FeatureSteps
|
|||
|
||||
|
||||
Then 'I click link edit "Merge Request On Forked Project"' do
|
||||
#there are other edit buttons in this page for replies
|
||||
# links = page.all("a.btn.grouped")
|
||||
# links.each {|e|puts e.inspect }
|
||||
#TODO:[IA-08] there has got to be a better way to find this button -- there are multiple "Edit" buttons, so that won't work, maybe if we give it an explicit class in the haml
|
||||
#click_link "Edit" # doesn't work, multiple "Edit" buttons
|
||||
# find(:link, "a.btn:nth-child(3)").click
|
||||
# find(:link, "/html/body/div[2]/div/div/h3/span[5]/a[2]").click
|
||||
page.first(:xpath, "/html/body/div[2]/div/div/h3/span[5]/a[2]").click
|
||||
find("#edit_merge_request").click
|
||||
end
|
||||
|
||||
Then 'I see prefilled "Merge Request On Forked Project"' do
|
||||
Then 'I see the edit page prefilled for "Merge Request On Forked Project"' do
|
||||
current_path.should == edit_project_merge_request_path(@project, @merge_request)
|
||||
page.should have_content "Edit merge request #{@merge_request.id}"
|
||||
find("#merge_request_title").value.should == "Merge Request On Forked Project"
|
||||
find("#merge_request_source_project_id").value.should == @forked_project.id.to_s
|
||||
find("#merge_request_target_project_id").value.should == @project.id.to_s
|
||||
find("#merge_request_source_branch").value.should == "master"
|
||||
find("#merge_request_target_branch").value.should == "stable"
|
||||
find("#merge_request_title").value.should == "Merge Request On Forked Project"
|
||||
find("#merge_request_source_branch").value.should have_content "master"
|
||||
verify_commit_link(".mr_source_commit",@forked_project)
|
||||
#TODO[IA-08] reienstate these -- not sure why they started repeatedly breaking
|
||||
#sleep 3
|
||||
#puts "Source text:#{find("#merge_request_source_branch").text}"
|
||||
#puts "Source value:#{find("#merge_request_source_branch").value}"
|
||||
#puts "Target text:#{find("#merge_request_target_branch").text}"
|
||||
#puts "Target value:#{find("#merge_request_target_branch").value}"
|
||||
#find("#merge_request_target_branch").value.should have_content "stable"
|
||||
#verify_commit_link(".mr_target_commit",@project)
|
||||
end
|
||||
|
||||
|
||||
|
@ -135,4 +141,19 @@ class ProjectForkedMergeRequests < Spinach::FeatureSteps
|
|||
@project ||= Project.find_by_name!("Shop")
|
||||
end
|
||||
|
||||
#Verify a link is generated against the correct project
|
||||
def verify_commit_link(container_div, container_project)
|
||||
#This should force a wait for the javascript to execute
|
||||
#puts "text: #{find(:div,container_div).text}"
|
||||
find(:div,container_div).should have_css ".browse_code_link_holder"
|
||||
find(:div,container_div).find(".commit_short_id")['href'].should have_content "#{container_project.path_with_namespace}/commit"
|
||||
#commit_links = commit.all("a").map(&:text)
|
||||
#links = commit_links.collect {|e|commit.find(:link,e)['href']}
|
||||
#links.size.should == 4
|
||||
#links[0].should have_content "#{container_project.path_with_namespace}/tree"
|
||||
#links[1].should have_content "#{container_project.path_with_namespace}/commit"
|
||||
#links[3].should have_content "#{container_project.path_with_namespace}/commit"
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
@ -68,10 +68,13 @@ module API
|
|||
merge_request = user_project.merge_requests.new(attrs)
|
||||
merge_request.author = current_user
|
||||
merge_request.source_project = user_project
|
||||
if !attrs[:target_project_id].nil? && user_project.forked? && user_project.forked_from_project.id.to_s == attrs[:target_project_id]
|
||||
target_project_id = attrs[:target_project_id]
|
||||
if !target_project_id.nil? && user_project.forked? && user_project.forked_from_project.id.to_s == target_project_id
|
||||
merge_request.target_project = Project.find_by_id(attrs[:target_project_id])
|
||||
elsif attrs[:target_project].nil?
|
||||
elsif target_project_id.nil? || target_project_id == user_project.id.to_s
|
||||
merge_request.target_project = user_project
|
||||
elsif !target_project_id.nil?
|
||||
render_api_error!('(Bad Request) Specified target project that is not the source project, or the source fork of the project.', 400)
|
||||
end
|
||||
if merge_request.save
|
||||
merge_request.reload_code
|
||||
|
|
|
@ -74,10 +74,12 @@ module Gitlab
|
|||
update_satellite_source_and_target!(merge_repo)
|
||||
if merge_request.for_fork?
|
||||
common_commit = merge_repo.git.native(:merge_base, default_options, ["origin/#{merge_request.target_branch}", "source/#{merge_request.source_branch}"]).strip
|
||||
diffs = merge_repo.diff(default_options, common_commit, "source/#{merge_request.source_branch}")
|
||||
#this method doesn't take default options
|
||||
diffs = merge_repo.diff(common_commit, "source/#{merge_request.source_branch}")
|
||||
else
|
||||
common_commit = merge_repo.git.native(:merge_base, default_options, ["#{merge_request.target_branch}", "#{merge_request.source_branch}"]).strip
|
||||
diffs = merge_repo.diff(default_options, common_commit, "#{merge_request.source_branch}")
|
||||
#this method doesn't take default options
|
||||
diffs = merge_repo.diff(common_commit, "#{merge_request.source_branch}")
|
||||
end
|
||||
return diffs
|
||||
end
|
||||
|
|
|
@ -184,6 +184,9 @@ describe "On a merge request diff", js: true, focus: true do
|
|||
end
|
||||
|
||||
describe "with muliple note forms" do
|
||||
let!(:project) { create(:source_project_with_code) }
|
||||
let!(:merge_request) { create(:merge_request_with_diffs, source_project: project, target_project: project) }
|
||||
|
||||
before do
|
||||
find('a[data-line-code="4735dfc552ad7bf15ca468adc3cad9d05b624490_185_185"]').click
|
||||
find('a[data-line-code="342e16cbbd482ac2047dc679b2749d248cc1428f_18_17"]').click
|
||||
|
|
|
@ -76,6 +76,13 @@ describe 'Gitlab::Satellite::MergeAction' do
|
|||
|
||||
|
||||
describe '#diffs_between_satellite tested against diff_in_satellite' do
|
||||
|
||||
def is_a_matching_diff(diff, diffs)
|
||||
diff_count = diff.scan('diff --git').size
|
||||
diff_count.should >= 1
|
||||
diffs.size.should == diff_count
|
||||
diffs.each {|a_diff| (diff.include? a_diff.diff).should be_true}
|
||||
end
|
||||
context 'on fork' do
|
||||
it 'should get proper diffs' do
|
||||
merge_request_fork.target_branch = @close_commit1[0]
|
||||
|
@ -84,24 +91,24 @@ describe 'Gitlab::Satellite::MergeAction' do
|
|||
|
||||
merge_request_fork.target_branch = @close_commit1[0]
|
||||
merge_request_fork.source_branch = @master[0]
|
||||
diff = Gitlab::Satellite::MergeAction.new(merge_request.author, merge_request_fork).diffs_between_satellite
|
||||
diff = Gitlab::Satellite::MergeAction.new(merge_request.author, merge_request_fork).diff_in_satellite
|
||||
|
||||
diffs.each {|a_diff| (diff.include? a_diff.diff).should be_true}
|
||||
is_a_matching_diff(diff,diffs)
|
||||
end
|
||||
end
|
||||
|
||||
context 'between branches' do
|
||||
it 'should get proper diffs' do
|
||||
merge_request.target_branch = @close_commit1[0]
|
||||
merge_request.source_branch = @wiki_branch[0]
|
||||
merge_request.source_branch = @master[0]
|
||||
diffs = Gitlab::Satellite::MergeAction.new(merge_request.author, merge_request).diffs_between_satellite
|
||||
|
||||
|
||||
merge_request.target_branch = @close_commit1[0]
|
||||
merge_request.source_branch = @master[0]
|
||||
diff = Gitlab::Satellite::MergeAction.new(merge_request.author, merge_request).diffs_between_satellite
|
||||
diff = Gitlab::Satellite::MergeAction.new(merge_request.author, merge_request).diff_in_satellite
|
||||
|
||||
diffs.each {|a_diff| (diff.include? a_diff.diff).should be_true}
|
||||
is_a_matching_diff(diff,diffs)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -107,7 +107,7 @@ describe MergeRequestObserver do
|
|||
end
|
||||
|
||||
after do
|
||||
TestEnv.enable_observers
|
||||
TestEnv.disable_observers
|
||||
end
|
||||
|
||||
it_should_be_valid_event
|
||||
|
|
|
@ -79,6 +79,7 @@ describe API::API do
|
|||
let!(:user2) {create(:user)}
|
||||
let!(:forked_project_link) { build(:forked_project_link) }
|
||||
let!(:fork_project) { create(:source_project_with_code, forked_project_link: forked_project_link, namespace: user2.namespace, creator_id: user2.id) }
|
||||
let!(:unrelated_project) { create(:target_project_with_code, namespace: user2.namespace, creator_id: user2.id) }
|
||||
|
||||
before :each do |each|
|
||||
fork_project.team << [user2, :reporters]
|
||||
|
@ -124,9 +125,21 @@ describe API::API do
|
|||
|
||||
it "should return 400 when target_branch is specified and not a forked project" do
|
||||
post api("/projects/#{project.id}/merge_requests", user),
|
||||
target_branch: 'master', source_branch: 'stable', author: user, target_project: fork_project.id
|
||||
title: 'Test merge_request', target_branch: 'master', source_branch: 'stable', author: user, target_project_id: fork_project.id
|
||||
response.status.should == 400
|
||||
end
|
||||
|
||||
it "should return 400 when target_branch is specified and for a different fork" do
|
||||
post api("/projects/#{fork_project.id}/merge_requests", user2),
|
||||
title: 'Test merge_request', target_branch: 'master', source_branch: 'stable', author: user2, target_project_id: unrelated_project.id
|
||||
response.status.should == 400
|
||||
end
|
||||
|
||||
it "should return 201 when target_branch is specified and for the same project" do
|
||||
post api("/projects/#{fork_project.id}/merge_requests", user2),
|
||||
title: 'Test merge_request', target_branch: 'master', source_branch: 'stable', author: user2, target_project_id: fork_project.id
|
||||
response.status.should == 201
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in a new issue