debian-mirror-gitlab/spec/features/projects/issues/email_participants_spec.rb
2023-04-23 21:23:45 +05:30

82 lines
2.3 KiB
Ruby

# frozen_string_literal: true
require 'spec_helper'
RSpec.describe 'viewing an issue', :js, feature_category: :service_desk do
let_it_be(:user) { create(:user) }
let_it_be(:non_member) { create(:user) }
let_it_be(:project) { create(:project, :public) }
let_it_be_with_refind(:issue) { create(:issue, project: project) }
let_it_be(:note) { create(:note_on_issue, project: project, noteable: issue) }
let_it_be(:participants) { create_list(:issue_email_participant, 4, issue: issue) }
before do
project.add_reporter(user)
end
shared_examples 'email participants warning' do |selector|
it 'shows the correct message' do
expect(find(selector)).to have_content(", and 1 more will be notified of your comment")
end
end
shared_examples 'email participants warning in all editors' do
context 'for a new note' do
it_behaves_like 'email participants warning', '.new-note'
end
context 'for a reply form' do
before do
find('.js-reply-button').click
end
it_behaves_like 'email participants warning', '.note-edit-form'
end
end
context 'when issue is confidential' do
before do
issue.update!(confidential: true)
sign_in(user)
visit project_issue_path(project, issue)
end
it_behaves_like 'email participants warning in all editors'
end
context 'when issue is not confidential' do
context 'with signed in user' do
context 'when user has no role in project' do
before do
sign_in(non_member)
visit project_issue_path(project, issue)
end
it_behaves_like 'email participants warning in all editors'
end
context 'when user has (at least) reporter role in project' do
before do
sign_in(user)
visit project_issue_path(project, issue)
end
it_behaves_like 'email participants warning in all editors'
end
end
end
context 'for feature flags' do
before do
sign_in(user)
end
it 'pushes service_desk_new_note_email_native_attachments feature flag to frontend' do
stub_feature_flags(service_desk_new_note_email_native_attachments: true)
visit project_issue_path(project, issue)
expect(page).to have_pushed_frontend_feature_flags(serviceDeskNewNoteEmailNativeAttachments: true)
end
end
end