DEV: Don’t use `change { … }.by(0)` in specs
This commit is contained in:
parent
3bfc254c4e
commit
91b6b5eee7
|
@ -7,7 +7,7 @@ GIT
|
|||
|
||||
GIT
|
||||
remote: https://github.com/discourse/rubocop-discourse.git
|
||||
revision: 0de6d72891fea488cae22332505e4e3f26b4e157
|
||||
revision: e44784b759aef45306b0eaee29ddadd8ca5b40a6
|
||||
specs:
|
||||
rubocop-discourse (2.5.0)
|
||||
rubocop (>= 1.1.0)
|
||||
|
|
|
@ -490,7 +490,7 @@ describe DiscourseNarrativeBot::TrackSelector do
|
|||
post.update!(raw: 'thanks @discobot!')
|
||||
|
||||
expect { described_class.new(:reply, user, post_id: post.id).select }
|
||||
.to change { PostAction.count }.by(0)
|
||||
.not_to change { PostAction.count }
|
||||
|
||||
new_post = Post.last
|
||||
expect(new_post.raw).to eq(random_mention_reply)
|
||||
|
|
|
@ -121,7 +121,7 @@ describe User do
|
|||
expect {
|
||||
user.user_option.save!
|
||||
}.to change { Topic.count }.by(-1)
|
||||
.and change { UserHistory.count }.by(0)
|
||||
.and not_change { UserHistory.count }
|
||||
.and change { user.unread_high_priority_notifications }.by(-1)
|
||||
.and change { user.notifications.count }.by(-1)
|
||||
end
|
||||
|
|
|
@ -26,8 +26,8 @@ describe ImportExport::Importer do
|
|||
|
||||
expect {
|
||||
import(data)
|
||||
}.to change { Category.count }.by(0)
|
||||
.and change { Group.count }.by(0)
|
||||
}.to not_change { Category.count }
|
||||
.and not_change { Group.count }
|
||||
.and change { Topic.count }.by(2)
|
||||
.and change { User.count }.by(2)
|
||||
end
|
||||
|
@ -43,7 +43,7 @@ describe ImportExport::Importer do
|
|||
}.to change { Category.count }.by(6)
|
||||
.and change { Group.count }.by(2)
|
||||
.and change { Topic.count }.by(6)
|
||||
.and change { User.count }.by(0)
|
||||
.and not_change { User.count }
|
||||
end
|
||||
|
||||
it 'works with sub-sub-categories' do
|
||||
|
@ -91,10 +91,10 @@ describe ImportExport::Importer do
|
|||
|
||||
expect {
|
||||
import(data)
|
||||
}.to change { Category.count }.by(0)
|
||||
}.to not_change { Category.count }
|
||||
.and change { Group.count }.by(2)
|
||||
.and change { Topic.count }.by(0)
|
||||
.and change { User.count }.by(0)
|
||||
.and not_change { Topic.count }
|
||||
.and not_change { User.count }
|
||||
end
|
||||
|
||||
it 'all' do
|
||||
|
|
|
@ -69,7 +69,7 @@ describe "Topic Thumbnails" do
|
|||
# Request again
|
||||
expect do
|
||||
topic_json = get_topic
|
||||
end.to change { Jobs::GenerateTopicThumbnails.jobs.size }.by(0)
|
||||
end.not_to change { Jobs::GenerateTopicThumbnails.jobs.size }
|
||||
|
||||
thumbnails = topic_json["thumbnails"]
|
||||
|
||||
|
@ -110,7 +110,7 @@ describe "Topic Thumbnails" do
|
|||
# Request again
|
||||
expect do
|
||||
topic_json = get_topic
|
||||
end.to change { Jobs::GenerateTopicThumbnails.jobs.size }.by(0)
|
||||
end.not_to change { Jobs::GenerateTopicThumbnails.jobs.size }
|
||||
|
||||
thumbnails = topic_json["thumbnails"]
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@ describe Jobs::ActivationReminderEmails do
|
|||
.and change { user.email_tokens.count }.by(1)
|
||||
|
||||
expect(user.custom_fields['activation_reminder']).to eq("t")
|
||||
expect { described_class.new.execute({}) }.to change { ActionMailer::Base.deliveries.size }.by(0)
|
||||
expect { described_class.new.execute({}) }.not_to change { ActionMailer::Base.deliveries.size }
|
||||
|
||||
user.activate
|
||||
expect(user.reload.custom_fields['activation_reminder']).to eq(nil)
|
||||
|
@ -24,15 +24,15 @@ describe Jobs::ActivationReminderEmails do
|
|||
user = Fabricate(:user, active: true, created_at: created_at)
|
||||
|
||||
expect { described_class.new.execute({}) }
|
||||
.to change { ActionMailer::Base.deliveries.size }.by(0)
|
||||
.and change { user.email_tokens.count }.by(0)
|
||||
.to not_change { ActionMailer::Base.deliveries.size }
|
||||
.and not_change { user.email_tokens.count }
|
||||
end
|
||||
|
||||
it 'should not email staged users' do
|
||||
user = Fabricate(:user, active: false, staged: true, created_at: created_at)
|
||||
|
||||
expect { described_class.new.execute({}) }
|
||||
.to change { ActionMailer::Base.deliveries.size }.by(0)
|
||||
.and change { user.email_tokens.count }.by(0)
|
||||
.to not_change { ActionMailer::Base.deliveries.size }
|
||||
.and not_change { user.email_tokens.count }
|
||||
end
|
||||
end
|
||||
|
|
|
@ -11,7 +11,7 @@ RSpec.describe Jobs::CleanUpPostReplyKeys do
|
|||
SiteSetting.disallow_reply_by_email_after_days = 0
|
||||
|
||||
expect { Jobs::CleanUpPostReplyKeys.new.execute({}) }
|
||||
.to change { PostReplyKey.count }.by(0)
|
||||
.not_to change { PostReplyKey.count }
|
||||
|
||||
SiteSetting.disallow_reply_by_email_after_days = 2
|
||||
|
||||
|
|
|
@ -63,7 +63,7 @@ describe Jobs::CleanUpUploads do
|
|||
it 'does not delete uploads skipped by an unused callback' do
|
||||
expect do
|
||||
Jobs::CleanUpUploads.new.execute(nil)
|
||||
end.to change { Upload.count }.by(0)
|
||||
end.not_to change { Upload.count }
|
||||
|
||||
expect(Upload.exists?(id: expired_upload.id)).to eq(true)
|
||||
end
|
||||
|
@ -97,7 +97,7 @@ describe Jobs::CleanUpUploads do
|
|||
it 'does not delete uploads that are in use by callback' do
|
||||
expect do
|
||||
Jobs::CleanUpUploads.new.execute(nil)
|
||||
end.to change { Upload.count }.by(0)
|
||||
end.not_to change { Upload.count }
|
||||
|
||||
expect(Upload.exists?(id: expired_upload.id)).to eq(true)
|
||||
end
|
||||
|
|
|
@ -120,7 +120,7 @@ describe Jobs::EmitWebHookEvent do
|
|||
web_hook_id: post_hook.id,
|
||||
event_type: described_class::PING_EVENT
|
||||
)
|
||||
end.to change { Jobs::EmitWebHookEvent.jobs.size }.by(0)
|
||||
end.not_to change { Jobs::EmitWebHookEvent.jobs.size }
|
||||
end
|
||||
|
||||
it 'properly logs error on rescue' do
|
||||
|
|
|
@ -102,7 +102,7 @@ describe Jobs::ExportUserArchive do
|
|||
Jobs::ExportUserArchive.new.execute(
|
||||
user_id: user.id,
|
||||
)
|
||||
end.to change { Upload.count }.by(0)
|
||||
end.not_to change { Upload.count }
|
||||
|
||||
system_message = user.topics_allowed.last
|
||||
expect(system_message.title).to eq(I18n.t("system_messages.csv_export_failed.subject_template"))
|
||||
|
|
|
@ -220,7 +220,7 @@ describe Jobs::NotifyMailingListSubscribers do
|
|||
Jobs::NotifyMailingListSubscribers.new.execute(
|
||||
post_id: post.id
|
||||
)
|
||||
end.to change { SkippedEmailLog.count }.by(0)
|
||||
end.not_to change { SkippedEmailLog.count }
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -56,10 +56,10 @@ describe Jobs::OldKeysReminder do
|
|||
end
|
||||
|
||||
it 'does not send message when send_old_credential_reminder_days is set to 0 or no old keys' do
|
||||
expect { described_class.new.execute({}) }.to change { Post.count }.by(0)
|
||||
expect { described_class.new.execute({}) }.not_to change { Post.count }
|
||||
SiteSetting.send_old_credential_reminder_days = '0'
|
||||
freeze_time 2.years.from_now
|
||||
expect { described_class.new.execute({}) }.to change { Post.count }.by(0)
|
||||
expect { described_class.new.execute({}) }.not_to change { Post.count }
|
||||
end
|
||||
|
||||
it 'does not send a message if already exists' do
|
||||
|
@ -67,9 +67,9 @@ describe Jobs::OldKeysReminder do
|
|||
freeze_time 2.years.from_now
|
||||
expect { described_class.new.execute({}) }.to change { Post.count }.by(1)
|
||||
Topic.last.trash!
|
||||
expect { described_class.new.execute({}) }.to change { Post.count }.by(0)
|
||||
expect { described_class.new.execute({}) }.not_to change { Post.count }
|
||||
freeze_time 1.years.from_now
|
||||
expect { described_class.new.execute({}) }.to change { Post.count }.by(0)
|
||||
expect { described_class.new.execute({}) }.not_to change { Post.count }
|
||||
freeze_time 3.days.from_now
|
||||
expect { described_class.new.execute({}) }.to change { Post.count }.by(1)
|
||||
end
|
||||
|
|
|
@ -43,7 +43,7 @@ describe Jobs::PullHotlinkedImages do
|
|||
|
||||
expect do
|
||||
Jobs::PullHotlinkedImages.new.execute(post_id: post.id)
|
||||
end.to change { Upload.count }.by(0)
|
||||
end.not_to change { Upload.count }
|
||||
end
|
||||
|
||||
it 'does nothing if there are no large images to pull' do
|
||||
|
@ -59,10 +59,9 @@ describe Jobs::PullHotlinkedImages do
|
|||
post = Fabricate(:post, raw: "<img src='#{image_url}'>")
|
||||
stub_image_size
|
||||
|
||||
expect do
|
||||
Jobs::PullHotlinkedImages.new.execute(post_id: post.id)
|
||||
end.to change { Upload.count }.by(1) &
|
||||
change { UserHistory.count }.by(0) # Should not add to the staff log
|
||||
expect { Jobs::PullHotlinkedImages.new.execute(post_id: post.id) }
|
||||
.to change { Upload.count }.by(1)
|
||||
.and not_change { UserHistory.count } # Should not add to the staff log
|
||||
|
||||
expect(post.reload.raw).to eq("<img src=\"#{Upload.last.short_url}\">")
|
||||
end
|
||||
|
@ -110,7 +109,7 @@ describe Jobs::PullHotlinkedImages do
|
|||
|
||||
expect do
|
||||
post.rebake!
|
||||
end.to change { Upload.count }.by(0) # We alread have the upload
|
||||
end.not_to change { Upload.count } # We alread have the upload
|
||||
|
||||
expect(post.reload.raw).to eq("<img src=\"#{Upload.last.short_url}\">")
|
||||
end
|
||||
|
@ -278,7 +277,7 @@ describe Jobs::PullHotlinkedImages do
|
|||
.to change { Upload.count }.by(1)
|
||||
|
||||
expect { Jobs::PullHotlinkedImages.new.execute(post_id: post.id) }
|
||||
.to change { Upload.count }.by(0)
|
||||
.not_to change { Upload.count }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -23,7 +23,7 @@ describe Jobs::PullUserProfileHotlinkedImages do
|
|||
end
|
||||
|
||||
it 'handles nil bio' do
|
||||
expect { Jobs::PullUserProfileHotlinkedImages.new.execute(user_id: user.id) }.to change { Upload.count }.by(0)
|
||||
expect { Jobs::PullUserProfileHotlinkedImages.new.execute(user_id: user.id) }.not_to change { Upload.count }
|
||||
expect(user.user_profile.reload.bio_cooked).to eq(nil)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -8,7 +8,7 @@ describe Jobs::RemoveBanner do
|
|||
it 'doesn’t enqueue a future job to remove it' do
|
||||
expect do
|
||||
topic.make_banner!(user)
|
||||
end.to change { Jobs::RemoveBanner.jobs.size }.by(0)
|
||||
end.not_to change { Jobs::RemoveBanner.jobs.size }
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -42,7 +42,7 @@ describe Jobs::RemoveBanner do
|
|||
expect do
|
||||
topic.make_banner!(user, 'xxx')
|
||||
end.to raise_error(Discourse::InvalidParameters)
|
||||
end.to change { Jobs::RemoveBanner.jobs.size }.by(0)
|
||||
end.not_to change { Jobs::RemoveBanner.jobs.size }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -39,7 +39,7 @@ describe Jobs::UpdateGravatar do
|
|||
SiteSetting.automatically_download_gravatars = true
|
||||
|
||||
expect { user.refresh_avatar }
|
||||
.to change { Jobs::UpdateGravatar.jobs.count }.by(0)
|
||||
.not_to change { Jobs::UpdateGravatar.jobs.count }
|
||||
user.reload
|
||||
|
||||
expect(user.uploaded_avatar_id).to eq(nil)
|
||||
|
|
|
@ -607,7 +607,7 @@ describe Jobs::UserEmail do
|
|||
notification_id: notification.id,
|
||||
post_id: post.id
|
||||
)
|
||||
end.to change { SkippedEmailLog.count }.by(0)
|
||||
end.not_to change { SkippedEmailLog.count }
|
||||
end
|
||||
|
||||
it "sends critical email" do
|
||||
|
|
|
@ -182,7 +182,7 @@ describe Auth::ManagedAuthenticator do
|
|||
it "schedules the job upon update correctly" do
|
||||
# No image supplied, do not schedule
|
||||
expect { result = authenticator.after_authenticate(hash) }
|
||||
.to change { Jobs::DownloadAvatarFromUrl.jobs.count }.by(0)
|
||||
.not_to change { Jobs::DownloadAvatarFromUrl.jobs.count }
|
||||
|
||||
# Image supplied, schedule
|
||||
expect { result = authenticator.after_authenticate(hash.deep_merge(info: { image: "https://some.domain/image.jpg" })) }
|
||||
|
@ -192,7 +192,7 @@ describe Auth::ManagedAuthenticator do
|
|||
user.user_avatar = Fabricate(:user_avatar, custom_upload: Fabricate(:upload))
|
||||
user.save!
|
||||
expect { result = authenticator.after_authenticate(hash.deep_merge(info: { image: "https://some.domain/image.jpg" })) }
|
||||
.to change { Jobs::DownloadAvatarFromUrl.jobs.count }.by(0)
|
||||
.not_to change { Jobs::DownloadAvatarFromUrl.jobs.count }
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -226,7 +226,7 @@ describe Auth::ManagedAuthenticator do
|
|||
|
||||
it "doesn't schedule with no image" do
|
||||
expect { result = authenticator.after_create_account(user, create_auth_result(extra_data: create_hash)) }
|
||||
.to change { Jobs::DownloadAvatarFromUrl.jobs.count }.by(0)
|
||||
.not_to change { Jobs::DownloadAvatarFromUrl.jobs.count }
|
||||
end
|
||||
|
||||
it "schedules with image" do
|
||||
|
|
|
@ -29,7 +29,7 @@ describe BackupRestore::Backuper do
|
|||
|
||||
expect { backuper.send(:notify_user) }
|
||||
.to change { Topic.private_messages.count }.by(1)
|
||||
.and change { Upload.count }.by(0)
|
||||
.and not_change { Upload.count }
|
||||
end
|
||||
|
||||
expect(Topic.last.first_post.raw).to include("```text\n[2010-01-01 12:00:00] Notifying 'system' of the end of the backup...\n```")
|
||||
|
@ -63,7 +63,7 @@ describe BackupRestore::Backuper do
|
|||
|
||||
expect { backuper.send(:notify_user) }
|
||||
.to change { Topic.private_messages.count }.by(1)
|
||||
.and change { Upload.count }.by(0)
|
||||
.and not_change { Upload.count }
|
||||
end
|
||||
|
||||
expect(Topic.last.first_post.raw).to include("```text\n...\n[2010-01-01 12:00:00] Line 10\n[2010-01-01 12:00:00] Notifying 'system' of the end of the backup...\n```")
|
||||
|
|
|
@ -172,8 +172,8 @@ describe BackupRestore::UploadsRestorer do
|
|||
store_class.any_instance.expects(:copy_from).with(path).once
|
||||
|
||||
expect { subject.restore(directory) }
|
||||
.to change { OptimizedImage.count }.by(0)
|
||||
.and change { Jobs::CreateAvatarThumbnails.jobs.size }.by(0)
|
||||
.to not_change { OptimizedImage.count }
|
||||
.and not_change { Jobs::CreateAvatarThumbnails.jobs.size }
|
||||
.and change { Post.where(baked_version: nil).count }.by(1)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -84,7 +84,7 @@ describe Email::Processor do
|
|||
|
||||
expect {
|
||||
Email::Processor.process!(mail2)
|
||||
}.to change { EmailLog.count }.by(0)
|
||||
}.not_to change { EmailLog.count }
|
||||
|
||||
freeze_time(Date.today + 1)
|
||||
|
||||
|
@ -148,7 +148,7 @@ describe Email::Processor do
|
|||
|
||||
expect {
|
||||
Email::Processor.process!(mail)
|
||||
}.to change { EmailLog.count }.by(0)
|
||||
}.not_to change { EmailLog.count }
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -1112,7 +1112,7 @@ describe Email::Receiver do
|
|||
end
|
||||
|
||||
it "creates the reply when the sender and referenced messsage id are known" do
|
||||
expect { process(:email_reply_to_group_email_username) }.to change { topic.posts.count }.by(1).and change { Topic.count }.by(0)
|
||||
expect { process(:email_reply_to_group_email_username) }.to change { topic.posts.count }.by(1).and not_change { Topic.count }
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -1266,7 +1266,7 @@ describe Email::Receiver do
|
|||
reply_email.gsub!("MESSAGE_ID_REPLY_TO", email_log.message_id)
|
||||
expect do
|
||||
Email::Receiver.new(reply_email).process!
|
||||
end.to change { Topic.count }.by(0).and change { Post.count }.by(1)
|
||||
end.to not_change { Topic.count }.and change { Post.count }.by(1)
|
||||
|
||||
reply_post = Post.last
|
||||
expect(reply_post.reply_to_user).to eq(user_in_group)
|
||||
|
@ -1294,7 +1294,7 @@ describe Email::Receiver do
|
|||
reply_email.gsub!("MESSAGE_ID_REPLY_TO", email_log.message_id)
|
||||
expect do
|
||||
Email::Receiver.new(reply_email).process!
|
||||
end.to change { Topic.count }.by(0).and change { Post.count }.by(1)
|
||||
end.to not_change { Topic.count }.and change { Post.count }.by(1)
|
||||
|
||||
reply_post = Post.last
|
||||
expect(reply_post.topic_id).to eq(original_inbound_email_topic.id)
|
||||
|
@ -1333,24 +1333,24 @@ describe Email::Receiver do
|
|||
end
|
||||
|
||||
it "creates a reply when the sender and referenced message id are known" do
|
||||
expect { process(:email_reply_2) }.to change { topic.posts.count }.by(1).and change { Topic.count }.by(0)
|
||||
expect { process(:email_reply_2) }.to change { topic.posts.count }.by(1).and not_change { Topic.count }
|
||||
end
|
||||
|
||||
it "creates a new topic when the sender is not known and the group does not allow unknown senders to reply to topics" do
|
||||
IncomingEmail.where(message_id: '34@foo.bar.mail').update(cc_addresses: 'three@foo.com')
|
||||
group.update(allow_unknown_sender_topic_replies: false)
|
||||
expect { process(:email_reply_2) }.to change { topic.posts.count }.by(0).and change { Topic.count }.by(1)
|
||||
expect { process(:email_reply_2) }.to not_change { topic.posts.count }.and change { Topic.count }.by(1)
|
||||
end
|
||||
|
||||
it "creates a new topic when the referenced message id is not known" do
|
||||
IncomingEmail.where(message_id: '34@foo.bar.mail').update(message_id: '99@foo.bar.mail')
|
||||
expect { process(:email_reply_2) }.to change { topic.posts.count }.by(0).and change { Topic.count }.by(1)
|
||||
expect { process(:email_reply_2) }.to not_change { topic.posts.count }.and change { Topic.count }.by(1)
|
||||
end
|
||||
|
||||
it "includes the sender on the topic when the message id is known, the sender is not known, and the group allows unknown senders to reply to topics" do
|
||||
IncomingEmail.where(message_id: '34@foo.bar.mail').update(cc_addresses: 'three@foo.com')
|
||||
group.update(allow_unknown_sender_topic_replies: true)
|
||||
expect { process(:email_reply_2) }.to change { topic.posts.count }.by(1).and change { Topic.count }.by(0)
|
||||
expect { process(:email_reply_2) }.to change { topic.posts.count }.by(1).and not_change { Topic.count }
|
||||
end
|
||||
|
||||
context "when the sender is not in the topic allowed users" do
|
||||
|
@ -1362,7 +1362,7 @@ describe Email::Receiver do
|
|||
it "adds them to the topic at the same time" do
|
||||
IncomingEmail.where(message_id: '34@foo.bar.mail').update(cc_addresses: 'three@foo.com')
|
||||
group.update(allow_unknown_sender_topic_replies: true)
|
||||
expect { process(:email_reply_2) }.to change { topic.posts.count }.by(1).and change { Topic.count }.by(0)
|
||||
expect { process(:email_reply_2) }.to change { topic.posts.count }.by(1).and not_change { Topic.count }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -2097,8 +2097,8 @@ describe Email::Receiver do
|
|||
|
||||
it "makes all posts in same topic" do
|
||||
expect { receive(email_1) }.to change { Topic.count }.by(1).and change { Post.where(post_type: Post.types[:regular]).count }.by(1)
|
||||
expect { post_2 }.to change { Topic.count }.by(0).and change { Post.where(post_type: Post.types[:regular]).count }.by(1)
|
||||
expect { receive(email_3) }.to change { Topic.count }.by(0).and change { Post.where(post_type: Post.types[:regular]).count }.by(1)
|
||||
expect { post_2 }.to not_change { Topic.count }.and change { Post.where(post_type: Post.types[:regular]).count }.by(1)
|
||||
expect { receive(email_3) }.to not_change { Topic.count }.and change { Post.where(post_type: Post.types[:regular]).count }.by(1)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -778,12 +778,12 @@ describe Email::Sender do
|
|||
expect(message.header[header]).to eq(nil)
|
||||
expect(post_reply_key.user_id).to eq(user.id)
|
||||
expect(post_reply_key.post_id).to eq(post.id)
|
||||
expect { email_sender.send }.to change { PostReplyKey.count }.by(0)
|
||||
expect { email_sender.send }.not_to change { PostReplyKey.count }
|
||||
end
|
||||
|
||||
it 'should find existing key' do
|
||||
existing_post_reply_key = PostReplyKey.create(post_id: post.id, user_id: user.id)
|
||||
expect { email_sender.send }.to change { PostReplyKey.count }.by(0)
|
||||
expect { email_sender.send }.not_to change { PostReplyKey.count }
|
||||
post_reply_key = PostReplyKey.last
|
||||
expect(post_reply_key).to eq(existing_post_reply_key)
|
||||
end
|
||||
|
|
|
@ -128,9 +128,9 @@ describe Imap::Sync do
|
|||
.and change { IncomingEmail.count }.by(1)
|
||||
|
||||
expect { sync_handler.process }
|
||||
.to change { Topic.count }.by(0)
|
||||
.and change { Post.where(post_type: Post.types[:regular]).count }.by(0)
|
||||
.and change { IncomingEmail.count }.by(0)
|
||||
.to not_change { Topic.count }
|
||||
.and not_change { Post.where(post_type: Post.types[:regular]).count }
|
||||
.and not_change { IncomingEmail.count }
|
||||
end
|
||||
|
||||
it 'creates a new incoming email if the message ID does not match the receiver post id regex' do
|
||||
|
@ -155,9 +155,9 @@ describe Imap::Sync do
|
|||
incoming_email = Fabricate(:incoming_email, message_id: message_id)
|
||||
|
||||
expect { sync_handler.process }
|
||||
.to change { Topic.count }.by(0)
|
||||
.and change { Post.where(post_type: Post.types[:regular]).count }.by(0)
|
||||
.and change { IncomingEmail.count }.by(0)
|
||||
.to not_change { Topic.count }
|
||||
.and not_change { Post.where(post_type: Post.types[:regular]).count }
|
||||
.and not_change { IncomingEmail.count }
|
||||
|
||||
incoming_email.reload
|
||||
expect(incoming_email.message_id).to eq(message_id)
|
||||
|
@ -248,7 +248,7 @@ describe Imap::Sync do
|
|||
)
|
||||
|
||||
expect { sync_handler.process }
|
||||
.to change { Topic.count }.by(0)
|
||||
.to not_change { Topic.count }
|
||||
.and change { Post.where(post_type: Post.types[:regular]).count }.by(1)
|
||||
.and change { IncomingEmail.count }.by(1)
|
||||
|
||||
|
@ -276,9 +276,9 @@ describe Imap::Sync do
|
|||
)
|
||||
|
||||
expect { sync_handler.process }
|
||||
.to change { Topic.count }.by(0)
|
||||
.and change { Post.where(post_type: Post.types[:regular]).count }.by(0)
|
||||
.and change { IncomingEmail.count }.by(0)
|
||||
.to not_change { Topic.count }
|
||||
.and not_change { Post.where(post_type: Post.types[:regular]).count }
|
||||
.and not_change { IncomingEmail.count }
|
||||
|
||||
topic = Topic.last
|
||||
expect(topic.title).to eq(subject)
|
||||
|
@ -618,9 +618,9 @@ describe Imap::Sync do
|
|||
)
|
||||
|
||||
expect { sync_handler.process }
|
||||
.to change { Topic.count }.by(0)
|
||||
.and change { Post.where(post_type: Post.types[:regular]).count }.by(0)
|
||||
.and change { IncomingEmail.count }.by(0)
|
||||
.to not_change { Topic.count }
|
||||
.and not_change { Post.where(post_type: Post.types[:regular]).count }
|
||||
.and not_change { IncomingEmail.count }
|
||||
|
||||
imap_data = Topic.last.incoming_email.pluck(:imap_uid_validity, :imap_uid, :imap_group_id)
|
||||
expect(imap_data).to contain_exactly([2, 111, group.id], [2, 222, group.id])
|
||||
|
|
|
@ -323,7 +323,7 @@ describe PostCreator do
|
|||
creator = PostCreator.new(user, basic_topic_params.merge(advance_draft: false))
|
||||
Draft.set(user, Draft::NEW_TOPIC, 0, 'test')
|
||||
expect(Draft.where(user: user).size).to eq(1)
|
||||
expect { creator.create }.to change { Draft.count }.by(0)
|
||||
expect { creator.create }.not_to change { Draft.count }
|
||||
end
|
||||
|
||||
it "updates topic stats" do
|
||||
|
@ -487,7 +487,7 @@ describe PostCreator do
|
|||
end
|
||||
|
||||
it "doesn't create tags" do
|
||||
expect { @post = creator_with_tags.create }.to change { Tag.count }.by(0)
|
||||
expect { @post = creator_with_tags.create }.not_to change { Tag.count }
|
||||
expect(@post.topic&.tags&.size).to eq(nil)
|
||||
end
|
||||
end
|
||||
|
@ -524,7 +524,7 @@ describe PostCreator do
|
|||
|
||||
it "only uses existing tags" do
|
||||
existing_tag1 = Fabricate(:tag, name: tag_names[1])
|
||||
expect { @post = creator_with_tags.create }.to change { Tag.count }.by(0)
|
||||
expect { @post = creator_with_tags.create }.not_to change { Tag.count }
|
||||
expect(@post.topic.tags.map(&:name)).to eq([existing_tag1.name])
|
||||
end
|
||||
end
|
||||
|
@ -786,7 +786,7 @@ describe PostCreator do
|
|||
SiteSetting.review_every_post = true
|
||||
GroupMessage.stubs(:create)
|
||||
|
||||
expect { creator.create }.to change(ReviewablePost, :count).by(0)
|
||||
expect { creator.create }.not_to change(ReviewablePost, :count)
|
||||
end
|
||||
|
||||
end
|
||||
|
@ -1478,7 +1478,7 @@ describe PostCreator do
|
|||
|
||||
expect {
|
||||
PostCreator.create!(user, raw: "", topic_id: topic.id, skip_validations: true)
|
||||
}.to change { user2.notifications.count }.by(0)
|
||||
}.not_to change { user2.notifications.count }
|
||||
|
||||
expect {
|
||||
PostCreator.create!(user, raw: "hello world", topic_id: topic.id, skip_validations: true)
|
||||
|
@ -1864,7 +1864,7 @@ describe PostCreator do
|
|||
it 'does not create a reviewable post if the post is not valid' do
|
||||
post_creator = PostCreator.new(user, title: '', raw: '')
|
||||
|
||||
expect { post_creator.create }.to change(ReviewablePost, :count).by(0)
|
||||
expect { post_creator.create }.not_to change(ReviewablePost, :count)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -148,7 +148,7 @@ describe PostRevisor do
|
|||
SiteSetting.disable_tags_edit_notifications = true
|
||||
|
||||
expect { subject.revise!(admin, tags: ['new-tag']) }
|
||||
.to change { Notification.count }.by(0)
|
||||
.not_to change { Notification.count }
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -1278,8 +1278,8 @@ describe PostRevisor do
|
|||
{ title: "updated title for my topic" },
|
||||
keep_existing_draft: true
|
||||
)
|
||||
}.to change { Draft.where(user: user, draft_key: draft_key).first.sequence }.by(0)
|
||||
.and change { DraftSequence.where(user_id: user.id, draft_key: draft_key).first.sequence }.by(0)
|
||||
}.to not_change { Draft.where(user: user, draft_key: draft_key).first.sequence }
|
||||
.and not_change { DraftSequence.where(user_id: user.id, draft_key: draft_key).first.sequence }
|
||||
|
||||
expect {
|
||||
PostRevisor.new(post).revise!(
|
||||
|
@ -1307,7 +1307,7 @@ describe PostRevisor do
|
|||
it 'does nothing when a staff member edits a post' do
|
||||
admin = Fabricate(:admin)
|
||||
|
||||
expect { revisor.revise!(admin, { raw: 'updated body' }) }.to change(ReviewablePost, :count).by(0)
|
||||
expect { revisor.revise!(admin, { raw: 'updated body' }) }.not_to change(ReviewablePost, :count)
|
||||
end
|
||||
|
||||
it 'skips grace period edits' do
|
||||
|
@ -1315,7 +1315,7 @@ describe PostRevisor do
|
|||
|
||||
expect {
|
||||
revisor.revise!(post.user, { raw: 'updated body' }, revised_at: post.updated_at + 10.seconds)
|
||||
}.to change(ReviewablePost, :count).by(0)
|
||||
}.not_to change(ReviewablePost, :count)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -42,8 +42,8 @@ describe SeedData::Categories do
|
|||
|
||||
it "does not create another category" do
|
||||
expect { create_category }
|
||||
.to change { Category.count }.by(0)
|
||||
.and change { Topic.count }.by(0)
|
||||
.to not_change { Category.count }
|
||||
.and not_change { Topic.count }
|
||||
end
|
||||
|
||||
it "creates a missing 'About Category' topic" do
|
||||
|
@ -51,7 +51,7 @@ describe SeedData::Categories do
|
|||
Topic.delete(category.topic_id)
|
||||
|
||||
expect { create_category }
|
||||
.to change { Category.count }.by(0)
|
||||
.to not_change { Category.count }
|
||||
.and change { Topic.count }.by(1)
|
||||
|
||||
category.reload
|
||||
|
@ -103,7 +103,7 @@ describe SeedData::Categories do
|
|||
expect(category.category_groups.first).to have_attributes(permissions(:trust_level_2, :full))
|
||||
|
||||
expect { create_category("lounge_category_id") }
|
||||
.to change { CategoryGroup.count }.by(0)
|
||||
.not_to change { CategoryGroup.count }
|
||||
|
||||
category.reload
|
||||
expect(category.category_groups.first).to have_attributes(permissions(:trust_level_2, :full))
|
||||
|
|
|
@ -49,7 +49,7 @@ describe TopicsBulkAction do
|
|||
Fabricate(:topic_user, user: user, topic: topic3, last_read_post_number: 1)
|
||||
expect do
|
||||
TopicsBulkAction.new(user, [Topic.all.pluck(:id)], type: "dismiss_topics").perform!
|
||||
end.to change { DismissedTopicUser.count }.by(0)
|
||||
end.not_to change { DismissedTopicUser.count }
|
||||
end
|
||||
|
||||
it 'dismisses when topic user without last_read_post_number' do
|
||||
|
|
|
@ -31,7 +31,7 @@ RSpec.describe UploadCreator do
|
|||
|
||||
expect do
|
||||
UploadCreator.new(file, "utf-8\n.txt").create_for(user2.id)
|
||||
end.to change { Upload.count }.by(0)
|
||||
end.not_to change { Upload.count }
|
||||
|
||||
expect(user.user_uploads.count).to eq(1)
|
||||
expect(user2.user_uploads.count).to eq(1)
|
||||
|
|
|
@ -106,7 +106,7 @@ describe Notification do
|
|||
post_args[:topic].notify_muted!(user)
|
||||
expect {
|
||||
Fabricate(:post, user: user2, topic: post.topic, raw: 'hello @' + user.username)
|
||||
}.to change(user.notifications, :count).by(0)
|
||||
}.not_to change(user.notifications, :count)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -340,7 +340,7 @@ describe ScreenedIpAddress do
|
|||
expect(ScreenedIpAddress.pluck(:ip_address)).not_to include("1.1.1.1", "1.1.1.2", "1.1.1.3")
|
||||
|
||||
# expect roll up to be stable
|
||||
expect { ScreenedIpAddress.roll_up }.to change { ScreenedIpAddress.count }.by(0)
|
||||
expect { ScreenedIpAddress.roll_up }.not_to change { ScreenedIpAddress.count }
|
||||
end
|
||||
|
||||
it 'rolls up IPv6 addresses' do
|
||||
|
@ -358,10 +358,10 @@ describe ScreenedIpAddress do
|
|||
expect(ScreenedIpAddress.pluck(:ip_address)).not_to include("2001:db8:3333:4441:5555:6666:7777:8888", "2001:db8:3333:4441:5555:6666:7777:8889", "2001:db8:3333:4441:5555:6666:7777:888a")
|
||||
|
||||
# expect roll up to be stable
|
||||
expect { ScreenedIpAddress.roll_up }.to change { ScreenedIpAddress.count }.by(0)
|
||||
expect { ScreenedIpAddress.roll_up }.not_to change { ScreenedIpAddress.count }
|
||||
|
||||
Fabricate(:screened_ip_address, ip_address: "2001:db8:3333:4442::/64")
|
||||
expect { ScreenedIpAddress.roll_up }.to change { ScreenedIpAddress.count }.by(0)
|
||||
expect { ScreenedIpAddress.roll_up }.not_to change { ScreenedIpAddress.count }
|
||||
|
||||
Fabricate(:screened_ip_address, ip_address: "2001:db8:3333:4443::/64")
|
||||
expect { ScreenedIpAddress.roll_up }.to change { ScreenedIpAddress.count }.by(-2)
|
||||
|
@ -369,7 +369,7 @@ describe ScreenedIpAddress do
|
|||
expect(ScreenedIpAddress.pluck(:ip_address)).not_to include("2001:db8:3333:4441::/64", "2001:db8:3333:4442::/64", "2001:db8:3333:4443::/64")
|
||||
|
||||
# expect roll up to be stable
|
||||
expect { ScreenedIpAddress.roll_up }.to change { ScreenedIpAddress.count }.by(0)
|
||||
expect { ScreenedIpAddress.roll_up }.not_to change { ScreenedIpAddress.count }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -806,7 +806,7 @@ describe Topic do
|
|||
|
||||
expect { topic.invite(user, user1.username) }
|
||||
.to change { Notification.count }.by(1)
|
||||
.and change { Post.where(post_type: Post.types[:small_action]).count }.by(0)
|
||||
.and not_change { Post.where(post_type: Post.types[:small_action]).count }
|
||||
end
|
||||
|
||||
context "from a muted user" do
|
||||
|
@ -1787,7 +1787,7 @@ describe Topic do
|
|||
|
||||
expect do
|
||||
topic.change_category_to_id(new_category.id)
|
||||
end.to change { Notification.count }.by(0)
|
||||
end.not_to change { Notification.count }
|
||||
|
||||
expect(topic.category_id).to eq(new_category.id)
|
||||
end
|
||||
|
@ -1823,7 +1823,7 @@ describe Topic do
|
|||
|
||||
expect do
|
||||
topic.change_category_to_id(new_category.id)
|
||||
end.to change { Notification.count }.by(0)
|
||||
end.not_to change { Notification.count }
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -1856,7 +1856,7 @@ describe Topic do
|
|||
|
||||
it 'should not set a topic timer' do
|
||||
expect { topic.change_category_to_id(new_category.id) }
|
||||
.to change { TopicTimer.with_deleted.count }.by(0)
|
||||
.not_to change { TopicTimer.with_deleted.count }
|
||||
|
||||
expect(topic.closed).to eq(true)
|
||||
expect(topic.reload.category).to eq(new_category)
|
||||
|
|
|
@ -19,7 +19,7 @@ describe TopicTag do
|
|||
|
||||
expect {
|
||||
topic_tag
|
||||
}.to change(tag, :topic_count).by(0)
|
||||
}.not_to change(tag, :topic_count)
|
||||
end
|
||||
|
||||
end
|
||||
|
@ -39,7 +39,7 @@ describe TopicTag do
|
|||
|
||||
expect {
|
||||
topic_tag.destroy
|
||||
}.to change(tag, :topic_count).by(0)
|
||||
}.not_to change(tag, :topic_count)
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
@ -319,7 +319,7 @@ RSpec.describe User do
|
|||
user.update(admin: true)
|
||||
expect {
|
||||
user.grant_admin!
|
||||
}.to change { Jobs::SendSystemMessage.jobs.count }.by 0
|
||||
}.not_to change { Jobs::SendSystemMessage.jobs.count }
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -2681,7 +2681,7 @@ RSpec.describe User do
|
|||
|
||||
expect do
|
||||
user.update_ip_address!('0.0.0.1')
|
||||
end.to change { UserIpAddressHistory.where(user_id: user.id).count }.by(0)
|
||||
end.not_to change { UserIpAddressHistory.where(user_id: user.id).count }
|
||||
|
||||
expect(
|
||||
UserIpAddressHistory.where(user_id: user.id).pluck(:ip_address).map(&:to_s)
|
||||
|
|
|
@ -604,7 +604,7 @@ describe WebHook do
|
|||
it 'shouldn’t trigger when the user is demoted' do
|
||||
expect {
|
||||
another_user.change_trust_level!(another_user.trust_level - 1)
|
||||
}.to change { Jobs::EmitWebHookEvent.jobs.length }.by(0)
|
||||
}.not_to change { Jobs::EmitWebHookEvent.jobs.length }
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -84,7 +84,7 @@ describe Admin::SiteSettingsController do
|
|||
put "/admin/site_settings/default_email_in_reply_to.json", params: {
|
||||
default_email_in_reply_to: false
|
||||
}
|
||||
}.to change { UserOption.where(email_in_reply_to: false).count }.by(0)
|
||||
}.not_to change { UserOption.where(email_in_reply_to: false).count }
|
||||
end
|
||||
|
||||
it 'should update `email_digests` column in existing user options' do
|
||||
|
@ -153,7 +153,7 @@ describe Admin::SiteSettingsController do
|
|||
put "/admin/site_settings/default_categories_watching.json", params: {
|
||||
default_categories_watching: category_ids.last(2).join("|")
|
||||
}
|
||||
}.to change { CategoryUser.where(category_id: category_ids.first, notification_level: watching).count }.by(0)
|
||||
}.not_to change { CategoryUser.where(category_id: category_ids.first, notification_level: watching).count }
|
||||
|
||||
expect(response.status).to eq(200)
|
||||
expect(CategoryUser.where(category_id: category_ids.last, notification_level: watching).count).to eq(0)
|
||||
|
@ -204,7 +204,7 @@ describe Admin::SiteSettingsController do
|
|||
put "/admin/site_settings/default_tags_watching.json", params: {
|
||||
default_tags_watching: tags.last(2).pluck(:name).join("|")
|
||||
}
|
||||
}.to change { TagUser.where(tag_id: tags.first.id, notification_level: watching).count }.by(0)
|
||||
}.not_to change { TagUser.where(tag_id: tags.first.id, notification_level: watching).count }
|
||||
|
||||
expect(TagUser.where(tag_id: tags.last.id, notification_level: watching).count).to eq(0)
|
||||
end
|
||||
|
|
|
@ -154,7 +154,7 @@ RSpec.describe Admin::UsersController do
|
|||
suspend_until: 5.hours.from_now,
|
||||
reason: "because I said so"
|
||||
}
|
||||
end.to change { Jobs::CriticalUserEmail.jobs.size }.by(0)
|
||||
end.not_to change { Jobs::CriticalUserEmail.jobs.size }
|
||||
|
||||
expect(response.status).to eq(200)
|
||||
|
||||
|
|
|
@ -1352,7 +1352,7 @@ describe GroupsController do
|
|||
it "does not notify users when the param is not present" do
|
||||
expect {
|
||||
put "/groups/#{group.id}/members.json", params: { usernames: user2.username }
|
||||
}.to change { Topic.where(archetype: "private_message").count }.by(0)
|
||||
}.not_to change { Topic.where(archetype: "private_message").count }
|
||||
|
||||
expect(response.status).to eq(200)
|
||||
end
|
||||
|
@ -1453,7 +1453,7 @@ describe GroupsController do
|
|||
expect do
|
||||
put "/groups/#{group.id}/members.json",
|
||||
params: { user_emails: [user1.email, user2.email, user3.email].join(",") }
|
||||
end.to change { group.users.count }.by(0)
|
||||
end.not_to change { group.users.count }
|
||||
|
||||
expect(response.status).to eq(422)
|
||||
|
||||
|
@ -1469,7 +1469,7 @@ describe GroupsController do
|
|||
expect do
|
||||
put "/groups/#{group.id}/members.json",
|
||||
params: { user_emails: [user1.email, user2.email].join(",") }
|
||||
end.to change { group.reload.users.count }.by(0)
|
||||
end.not_to change { group.reload.users.count }
|
||||
|
||||
expect(response.status).to eq(422)
|
||||
|
||||
|
|
|
@ -124,7 +124,7 @@ describe InvitesController do
|
|||
user.update!(email: "someguy@discourse.com")
|
||||
invite.update!(email: nil, domain: 'discourse.org')
|
||||
|
||||
expect { get "/invites/#{invite.invite_key}" }.to change { InvitedUser.count }.by(0)
|
||||
expect { get "/invites/#{invite.invite_key}" }.not_to change { InvitedUser.count }
|
||||
|
||||
expect(response).to redirect_to("/")
|
||||
end
|
||||
|
@ -132,7 +132,7 @@ describe InvitesController do
|
|||
it "redirects to root if a tries to view an invite meant for a specific email that is not the user's" do
|
||||
invite.update_columns(email: "notuseremail@discourse.org")
|
||||
|
||||
expect { get "/invites/#{invite.invite_key}" }.to change { InvitedUser.count }.by(0)
|
||||
expect { get "/invites/#{invite.invite_key}" }.not_to change { InvitedUser.count }
|
||||
|
||||
expect(response).to redirect_to("/")
|
||||
end
|
||||
|
@ -773,7 +773,7 @@ describe InvitesController do
|
|||
it 'does not activate user if email token is missing' do
|
||||
expect do
|
||||
put "/invites/show/#{invite.invite_key}.json", params: { password: 'verystrongpassword' }
|
||||
end.to change { UserAuthToken.count }.by(0)
|
||||
end.not_to change { UserAuthToken.count }
|
||||
|
||||
expect(response.status).to eq(200)
|
||||
|
||||
|
|
|
@ -1583,7 +1583,7 @@ RSpec.describe TopicsController do
|
|||
put "/t/#{topic.slug}/#{topic.id}.json", params: {
|
||||
tags: [tag.name]
|
||||
}
|
||||
end.to change { topic.reload.first_post.revisions.count }.by(0)
|
||||
end.not_to change { topic.reload.first_post.revisions.count }
|
||||
|
||||
expect(response.status).to eq(200)
|
||||
end
|
||||
|
|
|
@ -81,7 +81,7 @@ describe TopicViewSerializer do
|
|||
|
||||
expect do
|
||||
json = serialize_topic(topic, user)
|
||||
end.to change { Jobs::GenerateTopicThumbnails.jobs.size }.by(0)
|
||||
end.not_to change { Jobs::GenerateTopicThumbnails.jobs.size }
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -240,7 +240,7 @@ describe PostAlerter do
|
|||
create_post_with_alerts(
|
||||
raw: quote_raw, topic: pm, user: admin, post_type: Post.types[:whisper]
|
||||
)
|
||||
}.to change(user2.notifications, :count).by(0)
|
||||
}.not_to change(user2.notifications, :count)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -353,7 +353,7 @@ describe PostAlerter do
|
|||
|
||||
expect {
|
||||
PostAlerter.post_created(post)
|
||||
}.to change(evil_trout.notifications, :count).by(0)
|
||||
}.not_to change(evil_trout.notifications, :count)
|
||||
end
|
||||
|
||||
it 'does not notify for ignored users' do
|
||||
|
@ -362,7 +362,7 @@ describe PostAlerter do
|
|||
|
||||
expect {
|
||||
PostAlerter.post_created(post)
|
||||
}.to change(evil_trout.notifications, :count).by(0)
|
||||
}.not_to change(evil_trout.notifications, :count)
|
||||
end
|
||||
|
||||
it 'does not notify for users with new reply notification' do
|
||||
|
@ -376,7 +376,7 @@ describe PostAlerter do
|
|||
)
|
||||
expect {
|
||||
PostAlerter.post_edited(post)
|
||||
}.to change(evil_trout.notifications, :count).by(0)
|
||||
}.not_to change(evil_trout.notifications, :count)
|
||||
|
||||
notification.destroy
|
||||
expect {
|
||||
|
@ -463,7 +463,7 @@ describe PostAlerter do
|
|||
)
|
||||
}.to change(evil_trout.notifications, :count).by(1)
|
||||
.and change(walterwhite.notifications, :count).by(1)
|
||||
.and change(user.notifications, :count).by(0)
|
||||
.and not_change(user.notifications, :count)
|
||||
end
|
||||
|
||||
it "sends to correct user when user has a full name that matches another user's username" do
|
||||
|
@ -478,7 +478,7 @@ describe PostAlerter do
|
|||
topic: topic
|
||||
)
|
||||
}.to change(user_with_matching_full_name.notifications, :count).by(1)
|
||||
.and change(evil_trout.notifications, :count).by(0)
|
||||
.and not_change(evil_trout.notifications, :count)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -550,12 +550,12 @@ describe PostAlerter do
|
|||
end
|
||||
|
||||
it 'does not notify unrelated users' do
|
||||
expect { post }.to change(evil_trout.notifications, :count).by(0)
|
||||
expect { post }.not_to change(evil_trout.notifications, :count)
|
||||
end
|
||||
|
||||
it 'does not work if user here exists' do
|
||||
Fabricate(:user, username: SiteSetting.here_mention)
|
||||
expect { post }.to change(other_post.user.notifications, :count).by(0)
|
||||
expect { post }.not_to change(other_post.user.notifications, :count)
|
||||
end
|
||||
|
||||
it 'notifies users who replied' do
|
||||
|
@ -564,7 +564,7 @@ describe PostAlerter do
|
|||
|
||||
expect { post }
|
||||
.to change(other_post.user.notifications, :count).by(1)
|
||||
.and change(post2.user.notifications, :count).by(0)
|
||||
.and not_change(post2.user.notifications, :count)
|
||||
.and change(post3.user.notifications, :count).by(1)
|
||||
end
|
||||
|
||||
|
@ -604,14 +604,14 @@ describe PostAlerter do
|
|||
|
||||
expect {
|
||||
create_post_with_alerts(raw: "Hello, @group-alt should not trigger a notification?")
|
||||
}.to change(evil_trout.notifications, :count).by(0)
|
||||
}.not_to change(evil_trout.notifications, :count)
|
||||
|
||||
expect(GroupMention.count).to eq(2)
|
||||
|
||||
group.update_columns(mentionable_level: Group::ALIAS_LEVELS[:members_mods_and_admins])
|
||||
expect {
|
||||
create_post_with_alerts(raw: "Hello @group you are not mentionable")
|
||||
}.to change(evil_trout.notifications, :count).by(0)
|
||||
}.not_to change(evil_trout.notifications, :count)
|
||||
|
||||
expect(GroupMention.count).to eq(3)
|
||||
|
||||
|
@ -1316,7 +1316,7 @@ describe PostAlerter do
|
|||
reply = Fabricate(:post, topic: topic, reply_to_post_number: 1)
|
||||
|
||||
NotificationEmailer.expects(:process_notification).never
|
||||
expect { PostAlerter.post_created(reply) }.to change(user.notifications, :count).by(0)
|
||||
expect { PostAlerter.post_created(reply) }.not_to change(user.notifications, :count)
|
||||
|
||||
category.mailinglist_mirror = false
|
||||
NotificationEmailer.expects(:process_notification).once
|
||||
|
@ -1479,7 +1479,7 @@ describe PostAlerter do
|
|||
expect { PostRevisor.new(post).revise!(Fabricate(:user), tags: [other_tag.name, watched_tag.name]) }.to change { Notification.where(user_id: user.id).count }.by(1)
|
||||
expect(user.notifications.where(notification_type: Notification.types[:watching_first_post]).count).to eq(1)
|
||||
|
||||
expect { PostRevisor.new(post).revise!(Fabricate(:user), tags: [watched_tag.name, other_tag.name]) }.to change { Notification.count }.by(0)
|
||||
expect { PostRevisor.new(post).revise!(Fabricate(:user), tags: [watched_tag.name, other_tag.name]) }.not_to change { Notification.count }
|
||||
expect(user.notifications.where(notification_type: Notification.types[:watching_first_post]).count).to eq(1)
|
||||
end
|
||||
|
||||
|
@ -1741,7 +1741,7 @@ describe PostAlerter do
|
|||
incoming_email_post = create_post_with_incoming
|
||||
topic = incoming_email_post.topic
|
||||
post = Fabricate(:post, topic: topic)
|
||||
expect { PostAlerter.new.after_save_post(post, true) }.to change { ActionMailer::Base.deliveries.size }.by(0)
|
||||
expect { PostAlerter.new.after_save_post(post, true) }.not_to change { ActionMailer::Base.deliveries.size }
|
||||
end
|
||||
|
||||
it "does not send a group smtp email if SiteSetting.enable_smtp is false" do
|
||||
|
@ -1749,14 +1749,14 @@ describe PostAlerter do
|
|||
incoming_email_post = create_post_with_incoming
|
||||
topic = incoming_email_post.topic
|
||||
post = Fabricate(:post, topic: topic)
|
||||
expect { PostAlerter.new.after_save_post(post, true) }.to change { ActionMailer::Base.deliveries.size }.by(0)
|
||||
expect { PostAlerter.new.after_save_post(post, true) }.not_to change { ActionMailer::Base.deliveries.size }
|
||||
end
|
||||
|
||||
it "does not send group smtp emails for a whisper" do
|
||||
incoming_email_post = create_post_with_incoming
|
||||
topic = incoming_email_post.topic
|
||||
post = Fabricate(:post, topic: topic, post_type: Post.types[:whisper])
|
||||
expect { PostAlerter.new.after_save_post(post, true) }.to change { ActionMailer::Base.deliveries.size }.by(0)
|
||||
expect { PostAlerter.new.after_save_post(post, true) }.not_to change { ActionMailer::Base.deliveries.size }
|
||||
end
|
||||
|
||||
it "sends the group smtp email job with a delay of personal_email_time_window_seconds" do
|
||||
|
@ -1783,7 +1783,7 @@ describe PostAlerter do
|
|||
post = Fabricate(:post, topic: topic)
|
||||
Fabricate(:incoming_email, post: post, topic: topic, is_auto_generated: true)
|
||||
expect_not_enqueued_with(job: :group_smtp_email) do
|
||||
expect { PostAlerter.new.after_save_post(post, true) }.to change { ActionMailer::Base.deliveries.size }.by(0)
|
||||
expect { PostAlerter.new.after_save_post(post, true) }.not_to change { ActionMailer::Base.deliveries.size }
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -1974,12 +1974,12 @@ describe PostAlerter do
|
|||
User.count # the two new cc addresses have users created
|
||||
}.by(2).and change {
|
||||
TopicAllowedUser.where(topic: topic).count # and they are added as topic allowed users
|
||||
}.by(2).and change {
|
||||
}.by(2).and not_change {
|
||||
# but they are not sent emails because they were cc'd on an email.
|
||||
# no group smtp message is sent because the OP is not sent an email,
|
||||
# they made this post.
|
||||
ActionMailer::Base.deliveries.size
|
||||
}.by(0).and change {
|
||||
}.and change {
|
||||
Notification.count # and they are still sent their normal discourse notification
|
||||
}.by(2)
|
||||
|
||||
|
|
|
@ -77,11 +77,11 @@ describe UsernameChanger do
|
|||
|
||||
expect do
|
||||
UsernameChanger.change(myself, "HanSolo", myself)
|
||||
end.to change { UserHistory.count }.by(0) # make sure it does not log a dupe
|
||||
end.not_to change { UserHistory.count } # make sure it does not log a dupe
|
||||
|
||||
expect do
|
||||
UsernameChanger.change(myself, user.username, myself)
|
||||
end.to change { UserHistory.count }.by(0) # does not log if the username already exists
|
||||
end.not_to change { UserHistory.count } # does not log if the username already exists
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
RSpec::Matchers.define_negated_matcher :not_change, :change
|
Loading…
Reference in New Issue