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 |