diff options
Diffstat (limited to 'spec/features/boards')
-rw-r--r-- | spec/features/boards/boards_spec.rb | 20 | ||||
-rw-r--r-- | spec/features/boards/sidebar_spec.rb | 30 | ||||
-rw-r--r-- | spec/features/boards/user_adds_lists_to_board_spec.rb | 92 |
3 files changed, 96 insertions, 46 deletions
diff --git a/spec/features/boards/boards_spec.rb b/spec/features/boards/boards_spec.rb index 2d6b669f28b..2392f9d2f8a 100644 --- a/spec/features/boards/boards_spec.rb +++ b/spec/features/boards/boards_spec.rb @@ -13,8 +13,6 @@ RSpec.describe 'Issue Boards', :js do let_it_be(:user2) { create(:user) } before do - stub_feature_flags(board_new_list: false) - project.add_maintainer(user) project.add_maintainer(user2) @@ -68,6 +66,8 @@ RSpec.describe 'Issue Boards', :js do let_it_be(:issue10) { create(:labeled_issue, project: project, title: 'issue +', description: 'A+ great issue', labels: [a_plus]) } before do + stub_feature_flags(board_new_list: false) + visit project_board_path(project, board) wait_for_requests @@ -168,19 +168,6 @@ RSpec.describe 'Issue Boards', :js do expect(page).to have_selector('.board', count: 3) end - it 'removes checkmark in new list dropdown after deleting' do - click_button 'Add list' - wait_for_requests - - find('.js-new-board-list').click - - remove_list - - wait_for_requests - - expect(page).to have_selector('.board', count: 3) - end - it 'infinite scrolls list' do create_list(:labeled_issue, 50, project: project, labels: [planning]) @@ -311,7 +298,7 @@ RSpec.describe 'Issue Boards', :js do it 'shows issue count on the list' do page.within(find(".board:nth-child(2)")) do - expect(page.find('.js-issue-size')).to have_text(total_planning_issues) + expect(page.find('[data-testid="board-items-count"]')).to have_text(total_planning_issues) expect(page).not_to have_selector('.js-max-issue-size') end end @@ -321,6 +308,7 @@ RSpec.describe 'Issue Boards', :js do context 'new list' do it 'shows all labels in new list dropdown' do click_button 'Add list' + wait_for_requests page.within('.dropdown-menu-issues-board-new') do diff --git a/spec/features/boards/sidebar_spec.rb b/spec/features/boards/sidebar_spec.rb index 08bc70d7116..c79bf2abff1 100644 --- a/spec/features/boards/sidebar_spec.rb +++ b/spec/features/boards/sidebar_spec.rb @@ -72,36 +72,6 @@ RSpec.describe 'Issue Boards', :js do end end - it 'removes card from board when clicking' do - click_card(card) - - page.within('.issue-boards-sidebar') do - click_button 'Remove from board' - end - - wait_for_requests - - page.within(find('.board:nth-child(2)')) do - expect(page).to have_selector('.board-card', count: 1) - end - end - - it 'does not show remove button for backlog or closed issues' do - create(:issue, project: project) - create(:issue, :closed, project: project) - - visit project_board_path(project, board) - wait_for_requests - - click_card(find('.board:nth-child(1)').first('.board-card')) - - expect(find('.issue-boards-sidebar')).not_to have_button 'Remove from board' - - click_card(find('.board:nth-child(3)').first('.board-card')) - - expect(find('.issue-boards-sidebar')).not_to have_button 'Remove from board' - end - context 'assignee' do it 'updates the issues assignee' do click_card(card) diff --git a/spec/features/boards/user_adds_lists_to_board_spec.rb b/spec/features/boards/user_adds_lists_to_board_spec.rb new file mode 100644 index 00000000000..b9945207bb2 --- /dev/null +++ b/spec/features/boards/user_adds_lists_to_board_spec.rb @@ -0,0 +1,92 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe 'User adds lists', :js do + using RSpec::Parameterized::TableSyntax + + let_it_be(:group) { create(:group, :nested) } + let_it_be(:project) { create(:project, :public, namespace: group) } + let_it_be(:group_board) { create(:board, group: group) } + let_it_be(:project_board) { create(:board, project: project) } + let_it_be(:user) { create(:user) } + + let_it_be(:milestone) { create(:milestone, project: project) } + + let_it_be(:group_label) { create(:group_label, group: group) } + let_it_be(:project_label) { create(:label, project: project) } + let_it_be(:group_backlog_list) { create(:backlog_list, board: group_board) } + let_it_be(:project_backlog_list) { create(:backlog_list, board: project_board) } + + let_it_be(:issue) { create(:labeled_issue, project: project, labels: [group_label, project_label]) } + + before_all do + project.add_maintainer(user) + group.add_owner(user) + end + + where(:board_type, :graphql_board_lists_enabled, :board_new_list_enabled) do + :project | true | true + :project | false | true + :project | true | false + :project | false | false + :group | true | true + :group | false | true + :group | true | false + :group | false | false + end + + with_them do + before do + sign_in(user) + + set_cookie('sidebar_collapsed', 'true') + + stub_feature_flags( + graphql_board_lists: graphql_board_lists_enabled, + board_new_list: board_new_list_enabled + ) + + if board_type == :project + visit project_board_path(project, project_board) + elsif board_type == :group + visit group_board_path(group, group_board) + end + + wait_for_all_requests + end + + it 'creates new column for label containing labeled issue' do + click_button button_text(board_new_list_enabled) + wait_for_all_requests + + select_label(board_new_list_enabled, group_label) + + wait_for_all_requests + + expect(page).to have_selector('.board', text: group_label.title) + expect(find('.board:nth-child(2) .board-card')).to have_content(issue.title) + end + end + + def select_label(board_new_list_enabled, label) + if board_new_list_enabled + page.within('.board-add-new-list') do + find('label', text: label.title).click + click_button 'Add' + end + else + page.within('.dropdown-menu-issues-board-new') do + click_link label.title + end + end + end + + def button_text(board_new_list_enabled) + if board_new_list_enabled + 'Create list' + else + 'Add list' + end + end +end |