diff options
Diffstat (limited to 'spec/features/projects/issues')
6 files changed, 199 insertions, 67 deletions
diff --git a/spec/features/projects/issues/design_management/user_paginates_designs_spec.rb b/spec/features/projects/issues/design_management/user_paginates_designs_spec.rb index f871ca60596..aff8951d9de 100644 --- a/spec/features/projects/issues/design_management/user_paginates_designs_spec.rb +++ b/spec/features/projects/issues/design_management/user_paginates_designs_spec.rb @@ -8,33 +8,57 @@ RSpec.describe 'User paginates issue designs', :js do let(:project) { create(:project_empty_repo, :public) } let(:issue) { create(:issue, project: project) } - before do - enable_design_management + context 'design_management_moved flag disabled' do + before do + stub_feature_flags(design_management_moved: false) + enable_design_management - create_list(:design, 2, :with_file, issue: issue) + create_list(:design, 2, :with_file, issue: issue) + visit project_issue_path(project, issue) + click_link 'Designs' + wait_for_requests + find('.js-design-list-item', match: :first).click + end - visit project_issue_path(project, issue) + it 'paginates to next design' do + expect(find('.js-previous-design')[:disabled]).to eq('true') - click_link 'Designs' + page.within(find('.js-design-header')) do + expect(page).to have_content('1 of 2') + end - wait_for_requests + find('.js-next-design').click - find('.js-design-list-item', match: :first).click - end + expect(find('.js-previous-design')[:disabled]).not_to eq('true') - it 'paginates to next design' do - expect(find('.js-previous-design')[:disabled]).to eq('true') + page.within(find('.js-design-header')) do + expect(page).to have_content('2 of 2') + end + end + end - page.within(find('.js-design-header')) do - expect(page).to have_content('1 of 2') + context 'design_management_moved flag enabled' do + before do + enable_design_management + create_list(:design, 2, :with_file, issue: issue) + visit project_issue_path(project, issue) + find('.js-design-list-item', match: :first).click end - find('.js-next-design').click + it 'paginates to next design' do + expect(find('.js-previous-design')[:disabled]).to eq('true') + + page.within(find('.js-design-header')) do + expect(page).to have_content('1 of 2') + end + + find('.js-next-design').click - expect(find('.js-previous-design')[:disabled]).not_to eq('true') + expect(find('.js-previous-design')[:disabled]).not_to eq('true') - page.within(find('.js-design-header')) do - expect(page).to have_content('2 of 2') + page.within(find('.js-design-header')) do + expect(page).to have_content('2 of 2') + end end end end diff --git a/spec/features/projects/issues/design_management/user_permissions_upload_spec.rb b/spec/features/projects/issues/design_management/user_permissions_upload_spec.rb index 902a84afc83..4e45312eac3 100644 --- a/spec/features/projects/issues/design_management/user_permissions_upload_spec.rb +++ b/spec/features/projects/issues/design_management/user_permissions_upload_spec.rb @@ -8,17 +8,32 @@ RSpec.describe 'User design permissions', :js do let(:project) { create(:project_empty_repo, :public) } let(:issue) { create(:issue, project: project) } - before do - enable_design_management + context 'design_management_moved flag disabled' do + before do + enable_design_management + stub_feature_flags(design_management_moved: false) - visit project_issue_path(project, issue) + visit project_issue_path(project, issue) - click_link 'Designs' + click_link 'Designs' - wait_for_requests + wait_for_requests + end + + it 'user does not have permissions to upload design' do + expect(page).not_to have_field('design_file') + end end - it 'user does not have permissions to upload design' do - expect(page).not_to have_field('design_file') + context 'design_management_moved flag enabled' do + before do + enable_design_management + + visit project_issue_path(project, issue) + end + + it 'user does not have permissions to upload design' do + expect(page).not_to have_field('design_file') + end end end diff --git a/spec/features/projects/issues/design_management/user_uploads_designs_spec.rb b/spec/features/projects/issues/design_management/user_uploads_designs_spec.rb index 66b449a9de5..2381e00972f 100644 --- a/spec/features/projects/issues/design_management/user_uploads_designs_spec.rb +++ b/spec/features/projects/issues/design_management/user_uploads_designs_spec.rb @@ -13,10 +13,10 @@ RSpec.describe 'User uploads new design', :js do sign_in(user) end - context "when the feature is available" do + context 'design_management_moved flag disabled' do before do - enable_design_management - + enable_design_management(feature_enabled) + stub_feature_flags(design_management_moved: false) visit project_issue_path(project, issue) click_link 'Designs' @@ -24,32 +24,64 @@ RSpec.describe 'User uploads new design', :js do wait_for_requests end - it 'uploads designs' do - attach_file(:design_file, logo_fixture, make_visible: true) + context "when the feature is available" do + let(:feature_enabled) { true } + + it 'uploads designs' do + attach_file(:design_file, logo_fixture, make_visible: true) + + expect(page).to have_selector('.js-design-list-item', count: 1) + + within first('#designs-tab .js-design-list-item') do + expect(page).to have_content('dk.png') + end - expect(page).to have_selector('.js-design-list-item', count: 1) + attach_file(:design_file, gif_fixture, make_visible: true) - within first('#designs-tab .js-design-list-item') do - expect(page).to have_content('dk.png') + expect(page).to have_selector('.js-design-list-item', count: 2) end + end - attach_file(:design_file, gif_fixture, make_visible: true) + context 'when the feature is not available' do + let(:feature_enabled) { false } - expect(page).to have_selector('.js-design-list-item', count: 2) + it 'shows the message about requirements' do + expect(page).to have_content("To enable design management, you'll need to meet the requirements.") + end end end - context 'when the feature is not available' do + context 'design_management_moved flag enabled' do before do + enable_design_management(feature_enabled) + stub_feature_flags(design_management_moved: true) visit project_issue_path(project, issue) + end - click_link 'Designs' + context "when the feature is available" do + let(:feature_enabled) { true } - wait_for_requests + it 'uploads designs', quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/225616' do + attach_file(:design_file, logo_fixture, make_visible: true) + + expect(page).to have_selector('.js-design-list-item', count: 1) + + within first('[data-testid="designs-root"] .js-design-list-item') do + expect(page).to have_content('dk.png') + end + + attach_file(:design_file, gif_fixture, make_visible: true) + + expect(page).to have_selector('.js-design-list-item', count: 2) + end end - it 'shows the message about requirements' do - expect(page).to have_content("To enable design management, you'll need to meet the requirements.") + context 'when the feature is not available' do + let(:feature_enabled) { false } + + it 'shows the message about requirements' do + expect(page).to have_content("To enable design management, you'll need to meet the requirements.") + end end end diff --git a/spec/features/projects/issues/design_management/user_views_design_spec.rb b/spec/features/projects/issues/design_management/user_views_design_spec.rb index 527442d5339..49245218e81 100644 --- a/spec/features/projects/issues/design_management/user_views_design_spec.rb +++ b/spec/features/projects/issues/design_management/user_views_design_spec.rb @@ -9,21 +9,42 @@ RSpec.describe 'User views issue designs', :js do let_it_be(:issue) { create(:issue, project: project) } let_it_be(:design) { create(:design, :with_file, issue: issue) } - before do - enable_design_management + context 'design_management_moved flag disabled' do + before do + enable_design_management + stub_feature_flags(design_management_moved: false) - visit project_issue_path(project, issue) + visit project_issue_path(project, issue) - click_link 'Designs' + click_link 'Designs' + end + + it 'opens design detail' do + click_link design.filename + + page.within(find('.js-design-header')) do + expect(page).to have_content(design.filename) + end + + expect(page).to have_selector('.js-design-image') + end end - it 'opens design detail' do - click_link design.filename + context 'design_management_moved flag enabled' do + before do + enable_design_management - page.within(find('.js-design-header')) do - expect(page).to have_content(design.filename) + visit project_issue_path(project, issue) end - expect(page).to have_selector('.js-design-image') + it 'opens design detail' do + click_link design.filename + + page.within(find('.js-design-header')) do + expect(page).to have_content(design.filename) + end + + expect(page).to have_selector('.js-design-image') + end end end diff --git a/spec/features/projects/issues/design_management/user_views_designs_spec.rb b/spec/features/projects/issues/design_management/user_views_designs_spec.rb index d371ae1aad7..772a9ffbe6f 100644 --- a/spec/features/projects/issues/design_management/user_views_designs_spec.rb +++ b/spec/features/projects/issues/design_management/user_views_designs_spec.rb @@ -9,39 +9,78 @@ RSpec.describe 'User views issue designs', :js do let_it_be(:issue) { create(:issue, project: project) } let_it_be(:design) { create(:design, :with_file, issue: issue) } - before do - enable_design_management - end - - context 'navigates from the issue view' do + context 'design_management_moved flag disabled' do before do - visit project_issue_path(project, issue) - click_link 'Designs' - wait_for_requests + enable_design_management + stub_feature_flags(design_management_moved: false) end - it 'fetches list of designs' do - expect(page).to have_selector('.js-design-list-item', count: 1) + context 'navigates from the issue view' do + before do + visit project_issue_path(project, issue) + click_link 'Designs' + wait_for_requests + end + + it 'fetches list of designs' do + expect(page).to have_selector('.js-design-list-item', count: 1) + end end - end - context 'navigates directly to the design collection view' do - before do - visit designs_project_issue_path(project, issue) + context 'navigates directly to the design collection view' do + before do + visit designs_project_issue_path(project, issue) + end + + it 'expands the sidebar' do + expect(page).to have_selector('.layout-page.right-sidebar-expanded') + end end - it 'expands the sidebar' do - expect(page).to have_selector('.layout-page.right-sidebar-expanded') + context 'navigates directly to the individual design view' do + before do + visit designs_project_issue_path(project, issue, vueroute: design.filename) + end + + it 'sees the design' do + expect(page).to have_selector('.js-design-detail') + end end end - context 'navigates directly to the individual design view' do + context 'design_management_moved flag enabled' do before do - visit designs_project_issue_path(project, issue, vueroute: design.filename) + enable_design_management end - it 'sees the design' do - expect(page).to have_selector('.js-design-detail') + context 'navigates from the issue view' do + before do + visit project_issue_path(project, issue) + end + + it 'fetches list of designs' do + expect(page).to have_selector('.js-design-list-item', count: 1) + end + end + + context 'navigates directly to the design collection view' do + before do + visit designs_project_issue_path(project, issue) + end + + it 'expands the sidebar' do + expect(page).to have_selector('.layout-page.right-sidebar-expanded') + end + end + + context 'navigates directly to the individual design view' do + before do + visit designs_project_issue_path(project, issue, vueroute: design.filename) + end + + it 'sees the design' do + expect(page).to have_selector('.js-design-detail') + end end end end diff --git a/spec/features/projects/issues/design_management/user_views_designs_with_svg_xss_spec.rb b/spec/features/projects/issues/design_management/user_views_designs_with_svg_xss_spec.rb index 5bc1271309c..0fe84ab47ed 100644 --- a/spec/features/projects/issues/design_management/user_views_designs_with_svg_xss_spec.rb +++ b/spec/features/projects/issues/design_management/user_views_designs_with_svg_xss_spec.rb @@ -29,6 +29,7 @@ RSpec.describe 'User views an SVG design that contains XSS', :js do end it 'displays the SVG' do + find("[data-testid='close-design']").click expect(page).to have_selector("img.design-img[alt='xss.svg']", count: 1, visible: false) end |