Commit bbef8bb5896d8858bf91692bdd5aa9236472a885
1 parent
216d5e2c
Exists in
master
and in
4 other branches
MR on fork validation error
Wasn't setting fields so validations would fail Change-Id: I0363c57bf6c8b9937cc1b4140d09071d7c5168c2
Showing
4 changed files
with
41 additions
and
17 deletions
Show diff stats
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 |