diff --git a/ee/app/controllers/groups/epic_boards_controller.rb b/ee/app/controllers/groups/epic_boards_controller.rb index e1d46e6943a2a6c871779bf94e9111ea8aee700d..93883bef6c5887d353e3990c66e967ac697b89ee 100644 --- a/ee/app/controllers/groups/epic_boards_controller.rb +++ b/ee/app/controllers/groups/epic_boards_controller.rb @@ -8,6 +8,7 @@ class Groups::EpicBoardsController < Groups::ApplicationController before_action do push_force_frontend_feature_flag(:work_item_epics, group.work_item_epics_enabled?) + push_force_frontend_feature_flag(:work_items_rolledup_dates, group&.work_items_rolledup_dates_feature_flag_enabled?) push_frontend_feature_flag(:epics_list_drawer, group) end diff --git a/ee/app/controllers/groups/epics_controller.rb b/ee/app/controllers/groups/epics_controller.rb index 2b616e98fdbd4bd1d1a039c3cdf24f9823f66b3e..af6fd79a606f5aba76b2dc1b75cbae3aeb43709c 100644 --- a/ee/app/controllers/groups/epics_controller.rb +++ b/ee/app/controllers/groups/epics_controller.rb @@ -26,6 +26,7 @@ class Groups::EpicsController < Groups::ApplicationController push_force_frontend_feature_flag(:work_items_alpha, group.work_items_alpha_feature_flag_enabled?) push_frontend_feature_flag(:epics_list_drawer, @group) push_frontend_feature_flag(:bulk_update_work_items_mutation, @group) + push_force_frontend_feature_flag(:work_items_rolledup_dates, group&.work_items_rolledup_dates_feature_flag_enabled?) end before_action only: :index do @@ -101,8 +102,6 @@ def render_as_work_item @work_item = ::WorkItems::WorkItemsFinder.new(current_user, group_id: group.id).execute.with_work_item_type.find_by_iid(epic.iid) - push_force_frontend_feature_flag(:work_items_rolledup_dates, group&.work_items_rolledup_dates_feature_flag_enabled?) - if Feature.enabled?(:work_item_epics_list, @group) && epic_work_items_enabled? render 'work_items_index' else diff --git a/ee/spec/features/epic_boards/epic_boards_sidebar_spec.rb b/ee/spec/features/epic_boards/epic_boards_sidebar_spec.rb index 752d09c70154ab472fd3e2e5790d8418b42c8e64..cba915c7571e10a319634bd59e43fc71c5290031 100644 --- a/ee/spec/features/epic_boards/epic_boards_sidebar_spec.rb +++ b/ee/spec/features/epic_boards/epic_boards_sidebar_spec.rb @@ -321,76 +321,13 @@ end end - context 'start date' do - it 'edits fixed start date' do - click_card(card) - - wait_for_requests - - within_testid('work-item-start-due-dates') do - click_button 'Edit' - find('#start-date-input').set('2021-01-25') - click_button 'Apply' - - expect(find_by_testid('start-date-value').text).to include('25') - end - end - - it 'removes fixed start date' do - click_card(card) - - wait_for_requests - - within_testid('work-item-start-due-dates') do - click_button 'Edit' - find('#start-date-input').set('2021-01-25') - click_button 'Apply' - - expect(find_by_testid('start-date-value').text).to include('25') - - click_button 'Edit' - find_by_testid('clear-button').click - click_button 'Apply' - - expect(find_by_testid('start-date-value').text).to include('None') - end - end - end - - context 'due date' do - it 'edits fixed due date' do + context 'dates' do + before do click_card(card) - wait_for_requests - - within_testid('work-item-start-due-dates') do - click_button 'Edit' - find('#due-date-input').set('2021-01-25') - click_button 'Apply' - - expect(find_by_testid('due-date-value').text).to include('25') - end end - it 'removes fixed due date' do - click_card(card) - - wait_for_requests - - within_testid('work-item-start-due-dates') do - click_button 'Edit' - find('#due-date-input').set('2021-01-25') - click_button 'Apply' - - expect(find_by_testid('due-date-value').text).to include('25') - - click_button 'Edit' - find_by_testid('clear-button').click - click_button 'Apply' - - expect(find_by_testid('due-date-value').text).to include('None') - end - end + it_behaves_like 'work items rolled up dates in drawer' end context 'confidentiality' do diff --git a/spec/support/shared_examples/features/work_items/rolled_up_dates_drawer_shared_examples.rb b/spec/support/shared_examples/features/work_items/rolled_up_dates_drawer_shared_examples.rb new file mode 100644 index 0000000000000000000000000000000000000000..4e736be4f124ac8c30cb620509fbcf52a87fcbf2 --- /dev/null +++ b/spec/support/shared_examples/features/work_items/rolled_up_dates_drawer_shared_examples.rb @@ -0,0 +1,70 @@ +# frozen_string_literal: true + +RSpec.shared_examples 'work items rolled up dates in drawer' do + include WorkItemFeedbackHelpers + + let(:work_item_rolledup_dates_selector) { '[data-testid="work-item-rolledup-dates"]' } + let(:work_item_start_due_dates_selector) { '[data-testid="work-item-start-due-dates"]' } + let(:work_item_milestone_selector) { '[data-testid="work-item-milestone"]' } + + context 'when feature flag is disabled' do + before do + stub_feature_flags(work_items_rolledup_dates: false) + + page.refresh + wait_for_all_requests + end + + it 'does not show rolled up dates' do + expect(page).not_to have_selector(work_item_rolledup_dates_selector) + end + end + + context 'when feature flag is enabled' do + before do + stub_feature_flags(work_items_rolledup_dates: true) + stub_licensed_features(epics: true, subepics: true, epic_colors: true) + + page.refresh + wait_for_all_requests + + close_work_item_feedback_popover_if_present + end + + it 'passes axe automated accessibility testing in closed state' do + expect(page).to have_selector(work_item_rolledup_dates_selector) + expect(page).to be_axe_clean.within(work_item_rolledup_dates_selector) + end + + it 'passes axe automated accessibility testing in open state' do + within(work_item_rolledup_dates_selector) do + click_button _('Edit') + wait_for_requests + + expect(page).to be_axe_clean.within(work_item_rolledup_dates_selector) + end + end + + context 'when edit is clicked' do + it 'selects and updates the dates to fixed once selected', :aggregate_failures do + expect(find_field('Inherited')).to be_checked + + find_and_click_edit(work_item_rolledup_dates_selector) + + within work_item_rolledup_dates_selector do + fill_in 'Start', with: '2021-01-01' + fill_in 'Due', with: '2021-01-02' + end + + # Click outside to save + find_by_testid("work-item-title").click + + within work_item_rolledup_dates_selector do + expect(find_field('Fixed')).to be_checked + expect(page).to have_text('Start: Jan 1, 2021') + expect(page).to have_text('Due: Jan 2, 2021') + end + end + end + end +end diff --git a/spec/support/shared_examples/features/work_items/rolledup_dates_shared_examples.rb b/spec/support/shared_examples/features/work_items/rolledup_dates_shared_examples.rb index 0dd715047cb6ac615b012ab3763eaa83ab73947b..4af850e58f323852300317a3f981956c06eacbf0 100644 --- a/spec/support/shared_examples/features/work_items/rolledup_dates_shared_examples.rb +++ b/spec/support/shared_examples/features/work_items/rolledup_dates_shared_examples.rb @@ -21,18 +21,7 @@ def expect_sync_to_epic expect(dates_source.due_date_sourcing_work_item_id).to eq(epic.due_date_sourcing_epic&.issue_id) end - context 'when feature flag is disabled' do - before do - stub_feature_flags(work_items_rolledup_dates: false) - - page.refresh - wait_for_all_requests - end - - it 'does not show rolled up dates' do - expect(page).not_to have_selector(work_item_rolledup_dates_selector) - end - end + it_behaves_like 'work items rolled up dates in drawer' context 'when feature flag is enabled' do before do @@ -45,42 +34,6 @@ def expect_sync_to_epic close_work_item_feedback_popover_if_present end - it 'passes axe automated accessibility testing in closed state' do - expect(page).to have_selector(work_item_rolledup_dates_selector) - expect(page).to be_axe_clean.within(work_item_rolledup_dates_selector) - end - - it 'passes axe automated accessibility testing in open state' do - within(work_item_rolledup_dates_selector) do - click_button _('Edit') - wait_for_requests - - expect(page).to be_axe_clean.within(work_item_rolledup_dates_selector) - end - end - - context 'when edit is clicked' do - it 'selects and updates the dates to fixed once selected', :aggregate_failures do - expect(find_field('Inherited')).to be_checked - - find_and_click_edit(work_item_rolledup_dates_selector) - - within work_item_rolledup_dates_selector do - fill_in 'Start', with: '2021-01-01' - fill_in 'Due', with: '2021-01-02' - end - - # Click outside to save - find_by_testid("work-item-title").click - - within work_item_rolledup_dates_selector do - expect(find_field('Fixed')).to be_checked - expect(page).to have_text('Start: Jan 1, 2021') - expect(page).to have_text('Due: Jan 2, 2021') - end - end - end - context 'when using inheritable dates', :sidekiq_inline do def update_child_milestone(title:, milestone:) within_testid('links-child', text: title) do