Commit 274fa333 authored by Felipe Artur's avatar Felipe Artur Committed by Jan Provaznik

Add feature specs for multiple group issue boards

Add feature specs for multiple issue boards for groups
parent 5c8807f7
# frozen_string_literal: true
require 'rails_helper'
describe 'Multiple Issue Boards', :js do
set(:user) { create(:user) }
set(:group) { create(:group, :public) }
set(:planning) { create(:group_label, group: group, name: 'Planning') }
set(:board) { create(:board, group: group) }
let(:parent) { group }
let(:boards_path) { group_boards_path(group) }
context 'with multiple group issue boards disabled' do
before do
stub_licensed_features(multiple_group_issue_boards: false)
parent.add_maintainer(user)
login_as(user)
end
it 'hides the link to create a new board' do
visit boards_path
wait_for_requests
click_button board.name
page.within('.js-boards-selector .dropdown-menu') do
expect(page).not_to have_content('Create new board')
expect(page).not_to have_content('Delete board')
end
end
it 'does not show license warning when there is one board created' do
visit boards_path
wait_for_requests
click_button board.name
expect(page).not_to have_content('Some of your boards are hidden, activate a license to see them again.')
end
it 'shows a license warning when group has more than one board' do
create(:board, parent: parent)
visit boards_path
wait_for_requests
click_button board.name
expect(page).to have_content('Some of your boards are hidden, activate a license to see them again.')
end
end
context 'with multiple group issue boards enabled' do
let!(:board2) { create(:board, group: group) }
before do
stub_licensed_features(multiple_group_issue_boards: true)
end
it_behaves_like 'multiple issue boards'
end
end
require 'rails_helper'
describe 'Multiple Issue Boards', :js do
let(:user) { create(:user) }
let(:project) { create(:project, :public) }
let!(:planning) { create(:label, project: project, name: 'Planning') }
let!(:board) { create(:board, project: project) }
let!(:board2) { create(:board, project: project) }
dropdown_selector = '.js-boards-selector .dropdown-menu'
context 'with multiple issue boards enabled' do
context 'authorized user' do
before do
project.add_maintainer(user)
login_as(user)
visit project_boards_path(project)
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
click_button board.name
page.within(dropdown_selector) do
expect(page).to have_content(board.name)
expect(page).to have_content(board2.name)
end
end
it 'switches current board' do
click_button board.name
page.within(dropdown_selector) 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
click_button board.name
page.within(dropdown_selector) 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
click_button board.name
wait_for_requests
page.within(dropdown_selector) do
click_button 'Delete board'
end
expect(page).to have_content('Are you sure you want to delete this board?')
click_button 'Delete'
click_button board2.name
page.within(dropdown_selector) 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
click_button board.name
page.within(dropdown_selector) 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: 3)
click_button board2.name
page.within(dropdown_selector) do
click_link board.name
end
wait_for_requests
expect(page).to have_selector('.board', count: 2)
end
it 'maintains sidebar state over board switch' do
assert_boards_nav_active
find('.boards-switcher').click
wait_for_requests
click_link board2.name
assert_boards_nav_active
end
end
context 'unauthorized user' do
before do
visit project_boards_path(project)
wait_for_requests
end
it 'does not show action links' do
click_button board.name
page.within(dropdown_selector) do
expect(page).not_to have_content('Create new board')
expect(page).not_to have_content('Delete board')
end
end
end
end
# todo: remove these when frontend part is done
context 'with multiple issue boards disabled' do
before do
project.add_maintainer(user)
login_as(user)
end
it 'hides the link to create a new board' do
visit project_boards_path(project)
wait_for_requests
click_button board.name
page.within(dropdown_selector) do
expect(page).to have_content('Create new board')
expect(page).to have_content('Delete board')
end
expect(page).to have_content('Edit board')
end
it 'shows a mention that boards are hidden when multiple boards are created' do
create(:board, project: project)
visit project_boards_path(project)
wait_for_requests
click_button board.name
expect(page).not_to have_content('Some of your boards are hidden, activate a license to see them again.')
end
end
def assert_boards_nav_active
expect(find('.nav-sidebar .active .active')).to have_selector('a', text: 'Boards')
end
end
# frozen_string_literal: true
require 'rails_helper'
describe 'Multiple Issue Boards', :js do
set(:user) { create(:user) }
set(:project) { create(:project, :public) }
set(:planning) { create(:label, project: project, name: 'Planning') }
set(:board) { create(:board, name: 'board1', project: project) }
set(:board2) { create(:board, name: 'board2', project: project) }
let(:parent) { project }
let(:boards_path) { project_boards_path(project) }
it_behaves_like 'multiple issue boards'
end
# frozen_string_literal: true
shared_examples_for 'multiple issue boards' do
dropdown_selector = '.js-boards-selector .dropdown-menu'
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
click_button board.name
page.within(dropdown_selector) do
expect(page).to have_content(board.name)
expect(page).to have_content(board2.name)
end
end
it 'switches current board' do
click_button board.name
page.within(dropdown_selector) 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
click_button board.name
page.within(dropdown_selector) 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
click_button board.name
wait_for_requests
page.within(dropdown_selector) do
click_button 'Delete board'
end
expect(page).to have_content('Are you sure you want to delete this board?')
click_button 'Delete'
click_button board2.name
page.within(dropdown_selector) 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
click_button board.name
page.within(dropdown_selector) 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: 3)
click_button board2.name
page.within(dropdown_selector) do
click_link board.name
end
wait_for_requests
expect(page).to have_selector('.board', count: 2)
end
it 'maintains sidebar state over board switch' do
assert_boards_nav_active
find('.boards-switcher').click
wait_for_requests
click_link board2.name
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
click_button board.name
page.within(dropdown_selector) do
expect(page).not_to have_content('Create new board')
expect(page).not_to have_content('Delete board')
end
end
end
def assert_boards_nav_active
expect(find('.nav-sidebar .active .active')).to have_selector('a', text: 'Boards')
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