Commit f49e9e8f authored by Robert Speicher's avatar Robert Speicher

Merge branch 'update-issues-tests' into 'master'

Multi-update issues tests

There were no tests for updating multiple issues at a time - this fixes
that 👍 

See merge request !3357
parents 00246d3f 23bfa7a3
...@@ -31,17 +31,17 @@ ...@@ -31,17 +31,17 @@
.issues_bulk_update.hide .issues_bulk_update.hide
= form_tag bulk_update_namespace_project_issues_path(@project.namespace, @project), method: :post do = form_tag bulk_update_namespace_project_issues_path(@project.namespace, @project), method: :post do
.filter-item.inline .filter-item.inline
= dropdown_tag("Status", options: { toggle_class: "js-issue-status", title: "Change status", dropdown_class: "dropdown-menu-selectable", data: { field_name: "update[state_event]" } } ) do = dropdown_tag("Status", options: { toggle_class: "js-issue-status", title: "Change status", dropdown_class: "dropdown-menu-status dropdown-menu-selectable", data: { field_name: "update[state_event]" } } ) do
%ul %ul
%li %li
%a{href: "#", data: {id: "reopen"}} Open %a{href: "#", data: {id: "reopen"}} Open
%li %li
%a{href: "#", data: {id: "close"}} Closed %a{href: "#", data: {id: "close"}} Closed
.filter-item.inline .filter-item.inline
= dropdown_tag("Assignee", options: { toggle_class: "js-user-search", title: "Assign to", filter: true, dropdown_class: "dropdown-menu-user dropdown-menu-selectable", = dropdown_tag("Assignee", options: { toggle_class: "js-user-search js-update-assignee", title: "Assign to", filter: true, dropdown_class: "dropdown-menu-user dropdown-menu-selectable",
placeholder: "Search authors", data: { first_user: (current_user.username if current_user), null_user: true, current_user: true, project_id: @project.id, field_name: "update[assignee_id]" } }) placeholder: "Search authors", data: { first_user: (current_user.username if current_user), null_user: true, current_user: true, project_id: @project.id, field_name: "update[assignee_id]" } })
.filter-item.inline .filter-item.inline
= dropdown_tag("Milestone", options: { title: "Assign milestone", toggle_class: 'js-milestone-select', filter: true, dropdown_class: "dropdown-menu-selectable", = dropdown_tag("Milestone", options: { title: "Assign milestone", toggle_class: 'js-milestone-select', filter: true, dropdown_class: "dropdown-menu-selectable dropdown-menu-milestone",
placeholder: "Search milestones", data: { show_no: true, field_name: "update[milestone_id]", project_id: @project.id, milestones: namespace_project_milestones_path(@project.namespace, @project, :json), use_id: true } }) placeholder: "Search milestones", data: { show_no: true, field_name: "update[milestone_id]", project_id: @project.id, milestones: namespace_project_milestones_path(@project.namespace, @project, :json), use_id: true } })
= hidden_field_tag 'update[issues_ids]', [] = hidden_field_tag 'update[issues_ids]', []
= hidden_field_tag :state_event, params[:state_event] = hidden_field_tag :state_event, params[:state_event]
......
require 'rails_helper'
feature 'Multiple issue updating from issues#index', feature: true do
let!(:project) { create(:project) }
let!(:issue) { create(:issue, project: project) }
let!(:user) { create(:user)}
before do
project.team << [user, :master]
login_as(user)
end
context 'status', js: true do
it 'should be set to closed' do
visit namespace_project_issues_path(project.namespace, project)
find('#check_all_issues').click
find('.js-issue-status').click
find('.dropdown-menu-status a', text: 'Closed').click
click_update_issues_button
expect(page).to have_selector('.issue', count: 0)
end
it 'should be set to open' do
create_closed
visit namespace_project_issues_path(project.namespace, project)
find('.issues-state-filters a', text: 'Closed').click
find('#check_all_issues').click
find('.js-issue-status').click
find('.dropdown-menu-status a', text: 'Open').click
click_update_issues_button
expect(page).to have_selector('.issue', count: 0)
end
end
context 'assignee', js: true do
it 'should update to current user' do
visit namespace_project_issues_path(project.namespace, project)
find('#check_all_issues').click
find('.js-update-assignee').click
find('.dropdown-menu-user-link', text: user.username).click
click_update_issues_button
page.within('.issue .controls') do
expect(find('.author_link')["data-original-title"]).to have_content(user.name)
end
end
it 'should update to unassigned' do
create_assigned
visit namespace_project_issues_path(project.namespace, project)
find('#check_all_issues').click
find('.js-update-assignee').click
find('.dropdown-menu-user-link', text: "Unassigned").click
click_update_issues_button
within first('.issue .controls') do
expect(page).to have_no_selector('.author_link')
end
end
end
context 'milestone', js: true do
let(:milestone) { create(:milestone, project: project) }
it 'should update milestone' do
visit namespace_project_issues_path(project.namespace, project)
find('#check_all_issues').click
find('.issues_bulk_update .js-milestone-select').click
find('.dropdown-menu-milestone a', text: milestone.title).click
click_update_issues_button
expect(find('.issue')).to have_content milestone.title
end
it 'should set to no milestone' do
create_with_milestone
visit namespace_project_issues_path(project.namespace, project)
expect(first('.issue')).to have_content milestone.title
find('#check_all_issues').click
find('.issues_bulk_update .js-milestone-select').click
find('.dropdown-menu-milestone a', text: "No Milestone").click
click_update_issues_button
expect(first('.issue')).to_not have_content milestone.title
end
end
def create_closed
create(:issue, project: project, state: :closed)
end
def create_assigned
create(:issue, project: project, assignee: user)
end
def create_with_milestone
create(:issue, project: project, milestone: milestone)
end
def click_update_issues_button
find('.update_selected_issues').click
end
end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment