diff options
-rw-r--r-- | app/views/projects/issues/_new_branch.html.haml | 2 | ||||
-rw-r--r-- | spec/features/issues/create_branch_merge_request_spec.rb | 55 | ||||
-rw-r--r-- | spec/features/issues/new_branch_button_spec.rb | 62 |
3 files changed, 47 insertions, 72 deletions
diff --git a/app/views/projects/issues/_new_branch.html.haml b/app/views/projects/issues/_new_branch.html.haml index 56c6f335f3d..0bd930094ef 100644 --- a/app/views/projects/issues/_new_branch.html.haml +++ b/app/views/projects/issues/_new_branch.html.haml @@ -8,7 +8,7 @@ %button.btn.btn-inverted.disabled.dropdown-toggle{ type: 'button', disabled: 'disabled' } = icon('caret-down') .btn-group.available.hide - %input.btn.js-create-merge-request.btn-inverted.btn-success{ type: 'submit', value: 'Create merge request', data: { action: 'create-mr' } } + %input.btn.js-create-merge-request.btn-inverted.btn-success{ type: 'button', value: 'Create merge request', data: { action: 'create-mr' } } %button.btn.btn-inverted.dropdown-toggle.btn-inverted.btn-success.js-dropdown-toggle{ type: 'button', data: { 'dropdown-trigger' => '#create-merge-request-dropdown' } } = icon('caret-down') %ul#create-merge-request-dropdown.dropdown-menu.dropdown-menu-align-right{ data: { dropdown: true } } diff --git a/spec/features/issues/create_branch_merge_request_spec.rb b/spec/features/issues/create_branch_merge_request_spec.rb index 47d9c92c21b..da76e0ffd7e 100644 --- a/spec/features/issues/create_branch_merge_request_spec.rb +++ b/spec/features/issues/create_branch_merge_request_spec.rb @@ -2,17 +2,18 @@ require 'rails_helper' feature 'Create Branch/Merge Request Dropdown on issue page', feature: true, js: true do let(:user) { create(:user) } - let(:project) { create(:project_empty_repo) } + let!(:project) { create(:project) } let(:issue) { create(:issue, project: project, title: 'Cherry-Coloured Funk') } - context 'as an author' do + context 'for team members' do before do project.team << [user, :developer] login_as(user) - visit namespace_project_issue_path(project.namespace, project, issue) end it 'I can create a merge request from issue page' do + visit namespace_project_issue_path(project.namespace, project, issue) + select_dropdown_option('create-mr') wait_for_ajax @@ -27,6 +28,8 @@ feature 'Create Branch/Merge Request Dropdown on issue page', feature: true, js: end it 'I can creates a branch from issue page' do + visit namespace_project_issue_path(project.namespace, project, issue) + select_dropdown_option('create-branch') wait_for_ajax @@ -35,20 +38,54 @@ feature 'Create Branch/Merge Request Dropdown on issue page', feature: true, js: expect(current_path).to eq namespace_project_tree_path(project.namespace, project, '1-cherry-coloured-funk') end - def select_dropdown_option(option) - find('.create-mr-dropdown-wrap .dropdown-toggle').click - find("li[data-value='#{option}']").click - find('.js-create-merge-request').click + context "when there is a referenced merge request" do + let!(:note) do + create(:note, :on_issue, :system, project: project, noteable: issue, + note: "mentioned in #{referenced_mr.to_reference}") + end + + let(:referenced_mr) do + create(:merge_request, :simple, source_project: project, target_project: project, + description: "Fixes #{issue.to_reference}", author: user) + end + + before do + referenced_mr.cache_merge_request_closes_issues!(user) + + visit namespace_project_issue_path(project.namespace, project, issue) + end + + it 'disables the create branch button' do + expect(page).to have_css('.create-mr-dropdown-wrap .unavailable:not(.hide)') + expect(page).to have_css('.create-mr-dropdown-wrap .available.hide', visible: false) + expect(page).to have_content /1 Related Merge Request/ + end + end + + context 'when issue is confidential' do + it 'disables the create branch button' do + issue = create(:issue, :confidential, project: project) + + visit namespace_project_issue_path(project.namespace, project, issue) + + expect(page).not_to have_css('.create-mr-dropdown-wrap') + end end end - context 'logged out' do + context 'for visitors' do before do visit namespace_project_issue_path(project.namespace, project, issue) end - it 'does not have the dropdown' do + it 'shows no buttons' do expect(page).not_to have_selector('.create-mr-dropdown-wrap') end end + + def select_dropdown_option(option) + find('.create-mr-dropdown-wrap .dropdown-toggle').click + find("li[data-value='#{option}']").click + find('.js-create-merge-request').click + end end diff --git a/spec/features/issues/new_branch_button_spec.rb b/spec/features/issues/new_branch_button_spec.rb deleted file mode 100644 index c0ab42c6822..00000000000 --- a/spec/features/issues/new_branch_button_spec.rb +++ /dev/null @@ -1,62 +0,0 @@ -require 'rails_helper' - -feature 'Start new branch from an issue', feature: true, js: true do - let!(:project) { create(:project) } - let!(:issue) { create(:issue, project: project) } - let!(:user) { create(:user)} - - context "for team members" do - before do - project.team << [user, :master] - login_as(user) - end - - it 'shows the new branch button' do - visit namespace_project_issue_path(project.namespace, project, issue) - - expect(page).to have_css('#new-branch .available') - end - - context "when there is a referenced merge request" do - let!(:note) do - create(:note, :on_issue, :system, project: project, noteable: issue, - note: "mentioned in #{referenced_mr.to_reference}") - end - - let(:referenced_mr) do - create(:merge_request, :simple, source_project: project, target_project: project, - description: "Fixes #{issue.to_reference}", author: user) - end - - before do - referenced_mr.cache_merge_request_closes_issues!(user) - - visit namespace_project_issue_path(project.namespace, project, issue) - end - - it "hides the new branch button" do - expect(page).to have_css('#new-branch .unavailable') - expect(page).not_to have_css('#new-branch .available') - expect(page).to have_content /1 Related Merge Request/ - end - end - - context 'when issue is confidential' do - it 'hides the new branch button' do - issue = create(:issue, :confidential, project: project) - - visit namespace_project_issue_path(project.namespace, project, issue) - - expect(page).not_to have_css('#new-branch') - end - end - end - - context 'for visitors' do - it 'shows no buttons' do - visit namespace_project_issue_path(project.namespace, project, issue) - - expect(page).not_to have_css('#new-branch') - end - end -end |