138 lines
3 KiB
Ruby
138 lines
3 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
RSpec.shared_examples 'multiple issue boards' do
|
|
context 'authorized user' do
|
|
before do
|
|
parent.add_maintainer(user)
|
|
|
|
login_as(user)
|
|
|
|
visit boards_path
|
|
wait_for_requests
|
|
end
|
|
|
|
it 'shows current board name' do
|
|
page.within('.boards-switcher') do
|
|
expect(page).to have_content(board.name)
|
|
end
|
|
end
|
|
|
|
it 'shows a list of boards' do
|
|
in_boards_switcher_dropdown do
|
|
expect(page).to have_content(board.name)
|
|
expect(page).to have_content(board2.name)
|
|
end
|
|
end
|
|
|
|
it 'switches current board' do
|
|
in_boards_switcher_dropdown do
|
|
click_link board2.name
|
|
end
|
|
|
|
wait_for_requests
|
|
|
|
page.within('.boards-switcher') do
|
|
expect(page).to have_content(board2.name)
|
|
end
|
|
end
|
|
|
|
it 'creates new board without detailed configuration' do
|
|
in_boards_switcher_dropdown do
|
|
click_button 'Create new board'
|
|
end
|
|
|
|
fill_in 'board-new-name', with: 'This is a new board'
|
|
click_button 'Create board'
|
|
wait_for_requests
|
|
|
|
expect(page).to have_button('This is a new board')
|
|
end
|
|
|
|
it 'deletes board' do
|
|
in_boards_switcher_dropdown do
|
|
click_button 'Delete board'
|
|
end
|
|
|
|
expect(page).to have_content('Are you sure you want to delete this board?')
|
|
click_button 'Delete'
|
|
|
|
wait_for_requests
|
|
|
|
in_boards_switcher_dropdown do
|
|
expect(page).not_to have_content(board.name)
|
|
expect(page).to have_content(board2.name)
|
|
end
|
|
end
|
|
|
|
it 'adds a list to the none default board' do
|
|
in_boards_switcher_dropdown do
|
|
click_link board2.name
|
|
end
|
|
|
|
wait_for_requests
|
|
|
|
page.within('.boards-switcher') do
|
|
expect(page).to have_content(board2.name)
|
|
end
|
|
|
|
click_button 'Add list'
|
|
|
|
wait_for_requests
|
|
|
|
page.within '.dropdown-menu-issues-board-new' do
|
|
click_link planning.title
|
|
end
|
|
|
|
wait_for_requests
|
|
|
|
expect(page).to have_selector('.board', count: 5)
|
|
|
|
in_boards_switcher_dropdown do
|
|
click_link board.name
|
|
end
|
|
|
|
wait_for_requests
|
|
|
|
expect(page).to have_selector('.board', count: 4)
|
|
end
|
|
|
|
it 'maintains sidebar state over board switch' do
|
|
assert_boards_nav_active
|
|
|
|
in_boards_switcher_dropdown do
|
|
click_link board2.name
|
|
end
|
|
|
|
assert_boards_nav_active
|
|
end
|
|
end
|
|
|
|
context 'unauthorized user' do
|
|
before do
|
|
visit boards_path
|
|
wait_for_requests
|
|
end
|
|
|
|
it 'does not show action links' do
|
|
in_boards_switcher_dropdown do
|
|
expect(page).not_to have_content('Create new board')
|
|
expect(page).not_to have_content('Delete board')
|
|
end
|
|
end
|
|
end
|
|
|
|
def in_boards_switcher_dropdown
|
|
find('.boards-switcher').click
|
|
|
|
wait_for_requests
|
|
|
|
dropdown_selector = '.js-boards-selector .dropdown-menu'
|
|
page.within(dropdown_selector) do
|
|
yield
|
|
end
|
|
end
|
|
|
|
def assert_boards_nav_active
|
|
expect(find('.nav-sidebar .active .active')).to have_selector('a', text: 'Boards')
|
|
end
|
|
end
|