diff options
Diffstat (limited to 'spec/features/issues')
7 files changed, 80 insertions, 29 deletions
diff --git a/spec/features/issues/gfm_autocomplete_spec.rb b/spec/features/issues/gfm_autocomplete_spec.rb index 9b2a11c4b0e..e2087868035 100644 --- a/spec/features/issues/gfm_autocomplete_spec.rb +++ b/spec/features/issues/gfm_autocomplete_spec.rb @@ -183,6 +183,16 @@ RSpec.describe 'GFM autocomplete', :js do expect(find('#at-view-users')).to have_content(user.name) end + it 'searches across full name for assignees' do + page.within '.timeline-content-form' do + find('#note-body').native.send_keys('@speciÄ…lsome') + end + + wait_for_requests + + expect(find('.atwho-view li', visible: true)).to have_content(user.name) + end + it 'selects the first item for non-assignee dropdowns if a query is entered' do page.within '.timeline-content-form' do find('#note-body').native.send_keys(':1') diff --git a/spec/features/issues/issue_sidebar_spec.rb b/spec/features/issues/issue_sidebar_spec.rb index 59fba5f65e0..ca44978d223 100644 --- a/spec/features/issues/issue_sidebar_spec.rb +++ b/spec/features/issues/issue_sidebar_spec.rb @@ -11,6 +11,11 @@ RSpec.describe 'Issue Sidebar' do let!(:label) { create(:label, project: project, title: 'bug') } let(:issue) { create(:labeled_issue, project: project, labels: [label]) } let!(:xss_label) { create(:label, project: project, title: '<script>alert("xss");</script>') } + let!(:milestone_expired) { create(:milestone, project: project, due_date: 5.days.ago) } + let!(:milestone_no_duedate) { create(:milestone, project: project, title: 'Foo - No due date') } + let!(:milestone1) { create(:milestone, project: project, title: 'Milestone-1', due_date: 20.days.from_now) } + let!(:milestone2) { create(:milestone, project: project, title: 'Milestone-2', due_date: 15.days.from_now) } + let!(:milestone3) { create(:milestone, project: project, title: 'Milestone-3', due_date: 10.days.from_now) } before do stub_incoming_email_setting(enabled: true, address: "p+%{key}@gl.ab") @@ -134,6 +139,36 @@ RSpec.describe 'Issue Sidebar' do end end + context 'editing issue milestone', :js do + before do + page.within('.block.milestone > .title') do + click_on 'Edit' + end + end + + it 'shows milestons list in the dropdown' do + page.within('.block.milestone .dropdown-content') do + # 5 milestones + "No milestone" = 6 items + expect(page.find('ul')).to have_selector('li[data-milestone-id]', count: 6) + end + end + + it 'shows expired milestone at the bottom of the list' do + page.within('.block.milestone .dropdown-content ul') do + expect(page.find('li:last-child')).to have_content milestone_expired.title + end + end + + it 'shows milestone due earliest at the top of the list' do + page.within('.block.milestone .dropdown-content ul') do + expect(page.all('li[data-milestone-id]')[1]).to have_content milestone3.title + expect(page.all('li[data-milestone-id]')[2]).to have_content milestone2.title + expect(page.all('li[data-milestone-id]')[3]).to have_content milestone1.title + expect(page.all('li[data-milestone-id]')[4]).to have_content milestone_no_duedate.title + end + end + end + context 'editing issue labels', :js do before do issue.update(labels: [label]) diff --git a/spec/features/issues/issue_state_spec.rb b/spec/features/issues/issue_state_spec.rb index d5a115433aa..409f498798b 100644 --- a/spec/features/issues/issue_state_spec.rb +++ b/spec/features/issues/issue_state_spec.rb @@ -42,9 +42,15 @@ RSpec.describe 'issue state', :js do end describe 'when open', quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/297348' do - context 'when clicking the top `Close issue` button', :aggregate_failures do - let(:open_issue) { create(:issue, project: project) } + let(:open_issue) { create(:issue, project: project) } + it_behaves_like 'page with comment and close button', 'Close issue' do + def setup + visit project_issue_path(project, open_issue) + end + end + + context 'when clicking the top `Close issue` button', :aggregate_failures do before do visit project_issue_path(project, open_issue) end @@ -53,9 +59,8 @@ RSpec.describe 'issue state', :js do end context 'when clicking the bottom `Close issue` button', :aggregate_failures do - let(:open_issue) { create(:issue, project: project) } - before do + stub_feature_flags(remove_comment_close_reopen: false) visit project_issue_path(project, open_issue) end @@ -64,9 +69,15 @@ RSpec.describe 'issue state', :js do end describe 'when closed', quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/297201' do - context 'when clicking the top `Reopen issue` button', :aggregate_failures do - let(:closed_issue) { create(:issue, project: project, state: 'closed') } + let(:closed_issue) { create(:issue, project: project, state: 'closed') } + it_behaves_like 'page with comment and close button', 'Reopen issue' do + def setup + visit project_issue_path(project, closed_issue) + end + end + + context 'when clicking the top `Reopen issue` button', :aggregate_failures do before do visit project_issue_path(project, closed_issue) end @@ -75,9 +86,8 @@ RSpec.describe 'issue state', :js do end context 'when clicking the bottom `Reopen issue` button', :aggregate_failures do - let(:closed_issue) { create(:issue, project: project, state: 'closed') } - before do + stub_feature_flags(remove_comment_close_reopen: false) visit project_issue_path(project, closed_issue) end diff --git a/spec/features/issues/user_comments_on_issue_spec.rb b/spec/features/issues/user_comments_on_issue_spec.rb index 24a261f592b..004488f2f64 100644 --- a/spec/features/issues/user_comments_on_issue_spec.rb +++ b/spec/features/issues/user_comments_on_issue_spec.rb @@ -39,8 +39,6 @@ RSpec.describe "User comments on issue", :js do add_note(comment) - wait_for_requests - expect(page.find('pre code').text).to eq code_block_content end @@ -51,8 +49,6 @@ RSpec.describe "User comments on issue", :js do add_note(comment) - wait_for_requests - expect(page.find('svg.mermaid')).to have_content html_content within('svg.mermaid') { expect(page).not_to have_selector('img') } end diff --git a/spec/features/issues/user_creates_issue_by_email_spec.rb b/spec/features/issues/user_creates_issue_by_email_spec.rb index 5a0036170ab..c47f24ab836 100644 --- a/spec/features/issues/user_creates_issue_by_email_spec.rb +++ b/spec/features/issues/user_creates_issue_by_email_spec.rb @@ -12,7 +12,7 @@ RSpec.describe 'Issues > User creates issue by email' do project.add_developer(user) end - describe 'new issue by email' do + describe 'new issue by email', :js do shared_examples 'show the email in the modal' do let(:issue) { create(:issue, project: project) } @@ -28,7 +28,7 @@ RSpec.describe 'Issues > User creates issue by email' do page.within '#issuable-email-modal' do email = project.new_issuable_address(user, 'issue') - expect(page).to have_selector("input[value='#{email}']") + expect(page.find('input[type="text"]').value).to eq email end end end diff --git a/spec/features/issues/user_resets_their_incoming_email_token_spec.rb b/spec/features/issues/user_resets_their_incoming_email_token_spec.rb index a20f65abebf..2b1c25174c2 100644 --- a/spec/features/issues/user_resets_their_incoming_email_token_spec.rb +++ b/spec/features/issues/user_resets_their_incoming_email_token_spec.rb @@ -16,17 +16,17 @@ RSpec.describe 'Issues > User resets their incoming email token' do end it 'changes incoming email address token', :js do - find('.issuable-email-modal-btn').click - previous_token = find('input#issuable_email').value - find('.incoming-email-token-reset').click - - wait_for_requests - - expect(page).to have_no_field('issuable_email', with: previous_token) - new_token = project.new_issuable_address(user.reload, 'issue') - expect(page).to have_field( - 'issuable_email', - with: new_token - ) + page.find('[data-testid="issuable-email-modal-btn"]').click + + page.within '#issuable-email-modal' do + previous_token = page.find('input[type="text"]').value + page.find('[data-testid="incoming-email-token-reset"]').click + + wait_for_requests + + expect(page.find('input[type="text"]').value).not_to eq previous_token + new_token = project.new_issuable_address(user.reload, 'issue') + expect(page.find('input[type="text"]').value).to eq new_token + end end end diff --git a/spec/features/issues/user_toggles_subscription_spec.rb b/spec/features/issues/user_toggles_subscription_spec.rb index 971c8a3b431..d91c187c840 100644 --- a/spec/features/issues/user_toggles_subscription_spec.rb +++ b/spec/features/issues/user_toggles_subscription_spec.rb @@ -15,13 +15,13 @@ RSpec.describe "User toggles subscription", :js do end it "unsubscribes from issue" do - subscription_button = find(".js-issuable-subscribe-button") + subscription_button = find('[data-testid="subscription-toggle"]') # Check we're subscribed. expect(subscription_button).to have_css("button.is-checked") # Toggle subscription. - find(".js-issuable-subscribe-button button").click + find('[data-testid="subscription-toggle"]').click wait_for_requests # Check we're unsubscribed. @@ -33,7 +33,7 @@ RSpec.describe "User toggles subscription", :js do it 'is disabled' do expect(page).to have_content('Notifications have been disabled by the project or group owner') - expect(page).not_to have_selector('.js-issuable-subscribe-button') + expect(page).not_to have_selector('[data-testid="subscription-toggle"]') end end end |