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 70 @merge_request.reload_code
71 71 redirect_to [@merge_request.target_project, @merge_request], notice: 'Merge request was successfully created.'
72 72 else
73   - render "new"
  73 + @source_project = @merge_request.source_project
  74 + @target_project = @merge_request.target_project
  75 + render action: "new"
74 76 end
75 77 end
76 78  
... ... @@ -118,7 +120,7 @@ class Projects::MergeRequestsController < Projects::ApplicationController
118 120  
119 121 def update_branches
120 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 124 @target_branches
123 125 end
124 126  
... ...
app/views/projects/merge_requests/_form.html.haml
... ... @@ -64,21 +64,19 @@
64 64 :javascript
65 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 83 \ No newline at end of file
... ...
features/project/forked_merge_requests.feature
... ... @@ -41,3 +41,10 @@ Feature: Project Forked Merge Requests
41 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 51 \ No newline at end of file
... ...
features/steps/project/project_forked_merge_requests.rb
... ... @@ -152,6 +152,23 @@ class ProjectForkedMergeRequests < Spinach::FeatureSteps
152 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 172 def project
156 173 @project ||= Project.find_by_name!("Shop")
157 174 end
... ...