From 7a7ce701692d4048a7f5ab2767aa30a8f5eb05c8 Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Tue, 19 May 2015 20:46:48 -0700 Subject: Use the user list from the target project in a merge request Closes #1535 --- CHANGELOG | 1 + app/helpers/selects_helper.rb | 5 +++-- app/views/projects/_issuable_form.html.haml | 4 ++-- app/views/projects/merge_requests/show/_context.html.haml | 2 +- features/project/forked_merge_requests.feature | 12 ++++++++++++ features/steps/project/forked_merge_requests.rb | 15 +++++++++++++++ 6 files changed, 34 insertions(+), 5 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index d8474968179..24f4215fee9 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -5,6 +5,7 @@ v 7.12.0 (unreleased) - Disabled expansion of top/bottom blobs for new file diffs - Update Asciidoctor gem to version 1.5.2. (Jakub Jirutka) - Fix resolving of relative links to repository files in AsciiDoc documents. (Jakub Jirutka) + - Use the user list from the target project in a merge request (Stan Hu) v 7.11.0 (unreleased) - Fall back to Plaintext when Syntaxhighlighting doesn't work. Fixes some buggy lexers (Hannes Rosenögger) diff --git a/app/helpers/selects_helper.rb b/app/helpers/selects_helper.rb index bec8f2f1aa7..2b99a398049 100644 --- a/app/helpers/selects_helper.rb +++ b/app/helpers/selects_helper.rb @@ -10,6 +10,7 @@ module SelectsHelper any_user = opts[:any_user] || false email_user = opts[:email_user] || false first_user = opts[:first_user] && current_user ? current_user.username : false + project = opts[:project] || @project html = { class: css_class, @@ -21,8 +22,8 @@ module SelectsHelper } unless opts[:scope] == :all - if @project - html['data-project-id'] = @project.id + if project + html['data-project-id'] = project.id elsif @group html['data-group-id'] = @group.id end diff --git a/app/views/projects/_issuable_form.html.haml b/app/views/projects/_issuable_form.html.haml index 5a19e980b64..2292aaaa214 100644 --- a/app/views/projects/_issuable_form.html.haml +++ b/app/views/projects/_issuable_form.html.haml @@ -18,7 +18,7 @@ This merge request is marked a Work In Progress. When it's ready, remove the WIP prefix from the title to allow it to be accepted. - else - To prevent this merge request from being accepted before it's ready, + To prevent this merge request from being accepted before it's ready, mark it a Work In Progress by starting the title with [WIP] or WIP:. .form-group.issuable-description = f.label :description, 'Description', class: 'control-label' @@ -46,7 +46,7 @@ .col-sm-10 = users_select_tag("#{issuable.class.model_name.param_key}[assignee_id]", placeholder: 'Select a user', class: 'custom-form-control', null_user: true, - selected: issuable.assignee_id) + selected: issuable.assignee_id, project: @target_project || @project)   = link_to 'Assign to me', '#', class: 'btn assign-to-me-link' .form-group diff --git a/app/views/projects/merge_requests/show/_context.html.haml b/app/views/projects/merge_requests/show/_context.html.haml index a5a821c1847..1d0e2e350b0 100644 --- a/app/views/projects/merge_requests/show/_context.html.haml +++ b/app/views/projects/merge_requests/show/_context.html.haml @@ -9,7 +9,7 @@ none .issuable-context-selectbox - if can?(current_user, :modify_merge_request, @merge_request) - = users_select_tag('merge_request[assignee_id]', placeholder: 'Select assignee', class: 'custom-form-control js-select2 js-assignee', selected: @merge_request.assignee_id, null_user: true) + = users_select_tag('merge_request[assignee_id]', placeholder: 'Select assignee', class: 'custom-form-control js-select2 js-assignee', selected: @merge_request.assignee_id, project: @target_project, null_user: true) %div.prepend-top-20.clearfix .issuable-context-title diff --git a/features/project/forked_merge_requests.feature b/features/project/forked_merge_requests.feature index d9fbb875c28..ad1160e3343 100644 --- a/features/project/forked_merge_requests.feature +++ b/features/project/forked_merge_requests.feature @@ -38,3 +38,15 @@ Feature: Project Forked Merge Requests Given I visit project "Forked Shop" merge requests page And I click link "New Merge Request" Then the target repository should be the original repository + + @javascript + Scenario: I see the users in the target project for a new merge request + Given I logout + And I sign in as an admin + And I have a project forked off of "Shop" called "Forked Shop" + Then I visit project "Forked Shop" merge requests page + And I click link "New Merge Request" + And I fill out a "Merge Request On Forked Project" merge request + When I click "Assign to" dropdown" + Then I should see the target project ID in the input selector + And I should see the users from the target project ID diff --git a/features/steps/project/forked_merge_requests.rb b/features/steps/project/forked_merge_requests.rb index 94d21d28a0c..ebfa102cee5 100644 --- a/features/steps/project/forked_merge_requests.rb +++ b/features/steps/project/forked_merge_requests.rb @@ -128,6 +128,21 @@ class Spinach::Features::ProjectForkedMergeRequests < Spinach::FeatureSteps page.should have_select("merge_request_target_project_id", selected: @project.path_with_namespace) end + step 'I click "Assign to" dropdown"' do + first('.ajax-users-select').click + end + + step 'I should see the target project ID in the input selector' do + expect(page).to have_selector("input[data-project-id=\"#{@project.id}\"]") + end + + step 'I should see the users from the target project ID' do + expect(page).to have_selector('.user-result', visible: true, count: 2) + users = page.all('.user-name') + users[0].text.should == 'Unassigned' + users[1].text.should == @project.users.first.name + 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 -- cgit v1.2.1