Commit bbef8bb5896d8858bf91692bdd5aa9236472a885

Authored by Izaak Alpert
1 parent 216d5e2c

MR on fork validation error

Wasn't setting fields so validations would fail

Change-Id: I0363c57bf6c8b9937cc1b4140d09071d7c5168c2
app/controllers/projects/merge_requests_controller.rb
@@ -70,7 +70,9 @@ class Projects::MergeRequestsController < Projects::ApplicationController @@ -70,7 +70,9 @@ class Projects::MergeRequestsController < Projects::ApplicationController
70 @merge_request.reload_code 70 @merge_request.reload_code
71 redirect_to [@merge_request.target_project, @merge_request], notice: 'Merge request was successfully created.' 71 redirect_to [@merge_request.target_project, @merge_request], notice: 'Merge request was successfully created.'
72 else 72 else
73 - render "new" 73 + @source_project = @merge_request.source_project
  74 + @target_project = @merge_request.target_project
  75 + render action: "new"
74 end 76 end
75 end 77 end
76 78
@@ -118,7 +120,7 @@ class Projects::MergeRequestsController < Projects::ApplicationController @@ -118,7 +120,7 @@ class Projects::MergeRequestsController < Projects::ApplicationController
118 120
119 def update_branches 121 def update_branches
120 @target_project = selected_target_project 122 @target_project = selected_target_project
121 - @target_branches = (@target_project.repository.branch_names).unshift("Select branch") 123 + @target_branches = @target_project.repository.branch_names
122 @target_branches 124 @target_branches
123 end 125 end
124 126
app/views/projects/merge_requests/_form.html.haml
@@ -64,21 +64,19 @@ @@ -64,21 +64,19 @@
64 :javascript 64 :javascript
65 disableButtonIfEmptyField("#merge_request_title", ".btn-save"); 65 disableButtonIfEmptyField("#merge_request_title", ".btn-save");
66 66
67 - var source_branch = $("#merge_request_source_branch")  
68 - , target_branch = $("#merge_request_target_branch")  
69 - , target_project = $("#merge_request_target_project_id"); 67 + var source_branch = $("#merge_request_source_branch")
  68 + , target_branch = $("#merge_request_target_branch")
  69 + , target_project = $("#merge_request_target_project_id");
70 70
71 - $.get("#{branch_from_project_merge_requests_path(@source_project)}", {ref: source_branch.val() });  
72 - $.get("#{branch_to_project_merge_requests_path(@source_project)}", {target_project_id: target_project.val(),ref: target_branch.val() });  
73 -  
74 - target_project.live("change", function() {  
75 - $.get("#{update_branches_project_merge_requests_path(@source_project)}", {target_project_id: $(this).val() });  
76 - });  
77 - source_branch.live("change", function() {  
78 - $.get("#{branch_from_project_merge_requests_path(@source_project)}", {ref: $(this).val() });  
79 - });  
80 - target_branch.live("change", function() {  
81 - $.get("#{branch_to_project_merge_requests_path(@source_project)}", {target_project_id: target_project.val(),ref: $(this).val() });  
82 - }); 71 + $.get("#{branch_from_project_merge_requests_path(@source_project)}", {ref: source_branch.val() });
  72 + $.get("#{branch_to_project_merge_requests_path(@source_project)}", {target_project_id: target_project.val(),ref: target_branch.val() });
83 73
  74 + target_project.live("change", function() {
  75 + $.get("#{update_branches_project_merge_requests_path(@source_project)}", {target_project_id: $(this).val() });
  76 + });
  77 + source_branch.live("change", function() {
  78 + $.get("#{branch_from_project_merge_requests_path(@source_project)}", {ref: $(this).val() });
  79 + });
  80 + target_branch.live("change", function() {
  81 + $.get("#{branch_to_project_merge_requests_path(@source_project)}", {target_project_id: target_project.val(),ref: $(this).val() });
84 }); 82 });
85 \ No newline at end of file 83 \ No newline at end of file
features/project/forked_merge_requests.feature
@@ -41,3 +41,10 @@ Feature: Project Forked Merge Requests @@ -41,3 +41,10 @@ Feature: Project Forked Merge Requests
41 Then I see the edit page prefilled for "Merge Request On Forked Project" 41 Then I see the edit page prefilled for "Merge Request On Forked Project"
42 42
43 43
  44 + @javascript
  45 + Scenario: I cannot submit an invalid merge request
  46 + Given I visit project "Forked Shop" merge requests page
  47 + And I click link "New Merge Request"
  48 + And I fill out an invalid "Merge Request On Forked Project" merge request
  49 + And I submit the merge request
  50 + Then I should see validation errors
44 \ No newline at end of file 51 \ No newline at end of file
features/steps/project/project_forked_merge_requests.rb
@@ -152,6 +152,23 @@ class ProjectForkedMergeRequests < Spinach::FeatureSteps @@ -152,6 +152,23 @@ class ProjectForkedMergeRequests < Spinach::FeatureSteps
152 end 152 end
153 153
154 154
  155 + And 'I fill out an invalid "Merge Request On Forked Project" merge request' do
  156 + #If this isn't filled in the rest of the validations won't be triggered
  157 + fill_in "merge_request_title", with: "Merge Request On Forked Project"
  158 + find(:select, "merge_request_source_project_id", {}).value.should == @forked_project.id.to_s
  159 + find(:select, "merge_request_target_project_id", {}).value.should == @forked_project.id.to_s
  160 + find(:select, "merge_request_source_branch", {}).value.should == ""
  161 + find(:select, "merge_request_target_branch", {}).value.should == ""
  162 + end
  163 +
  164 +
  165 + Then 'I should see validation errors' do
  166 + page.should have_content "Source branch can't be blank"
  167 + page.should have_content "Target branch can't be blank"
  168 + page.should have_content "Branch conflict You can not use same project/branch for source and target"
  169 + end
  170 +
  171 +
155 def project 172 def project
156 @project ||= Project.find_by_name!("Shop") 173 @project ||= Project.find_by_name!("Shop")
157 end 174 end