DEV: Allow fab! without block (#24314)

The most common thing that we do with fab! is:

    fab!(:thing) { Fabricate(:thing) }

This commit adds a shorthand for this which is just simply:

    fab!(:thing)

i.e. If you omit the block, then, by default, you'll get a `Fabricate`d object using the fabricator of the same name.
This commit is contained in:
Daniel Waterworth 2023-11-09 16:47:59 -06:00 committed by GitHub
parent d91456fd53
commit 6e161d3e75
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
471 changed files with 1277 additions and 1273 deletions

View File

@ -99,7 +99,7 @@ describe "Automatic user removal from channels" do
context "when a user is removed from a group" do context "when a user is removed from a group" do
context "when the user is no longer in any chat_allowed_groups" do context "when the user is no longer in any chat_allowed_groups" do
fab!(:group) { Fabricate(:group) } fab!(:group)
before do before do
group.add(user_1) group.add(user_1)

View File

@ -8,7 +8,7 @@ describe "API keys scoped to chat#create_message" do
SiteSetting.chat_allowed_groups = Group::AUTO_GROUPS[:everyone] SiteSetting.chat_allowed_groups = Group::AUTO_GROUPS[:everyone]
end end
fab!(:admin) { Fabricate(:admin) } fab!(:admin)
fab!(:chat_channel) { Fabricate(:category_channel) } fab!(:chat_channel) { Fabricate(:category_channel) }
fab!(:chat_channel_2) { Fabricate(:category_channel) } fab!(:chat_channel_2) { Fabricate(:category_channel) }

View File

@ -99,7 +99,7 @@ RSpec.describe "Outgoing chat webhooks" do
end end
context "for a category channel" do context "for a category channel" do
fab!(:category) { Fabricate(:category) } fab!(:category)
fab!(:chat_channel) { Fabricate(:category_channel, chatable: category) } fab!(:chat_channel) { Fabricate(:category_channel, chatable: category) }
fab!(:chat_message) { Fabricate(:chat_message, chat_channel: chat_channel, user: user1) } fab!(:chat_message) { Fabricate(:chat_message, chat_channel: chat_channel, user: user1) }

View File

@ -1,7 +1,7 @@
# frozen_string_literal: true # frozen_string_literal: true
describe "chat bbcode quoting in posts" do describe "chat bbcode quoting in posts" do
fab!(:post) { Fabricate(:post) } fab!(:post)
before { SiteSetting.chat_enabled = true } before { SiteSetting.chat_enabled = true }

View File

@ -3,7 +3,7 @@
RSpec.describe "Chat::Thread replies_count cache accuracy" do RSpec.describe "Chat::Thread replies_count cache accuracy" do
include ActiveSupport::Testing::TimeHelpers include ActiveSupport::Testing::TimeHelpers
fab!(:user) { Fabricate(:user) } fab!(:user)
fab!(:thread) { Fabricate(:chat_thread) } fab!(:thread) { Fabricate(:chat_thread) }
let(:guardian) { user.guardian } let(:guardian) { user.guardian }

View File

@ -5,7 +5,7 @@ require "rails_helper"
describe Jobs::Chat::ChannelArchive do describe Jobs::Chat::ChannelArchive do
fab!(:chat_channel) { Fabricate(:category_channel) } fab!(:chat_channel) { Fabricate(:category_channel) }
fab!(:user) { Fabricate(:user, admin: true) } fab!(:user) { Fabricate(:user, admin: true) }
fab!(:category) { Fabricate(:category) } fab!(:category)
fab!(:chat_archive) do fab!(:chat_archive) do
Chat::ChannelArchive.create!( Chat::ChannelArchive.create!(
chat_channel: chat_channel, chat_channel: chat_channel,

View File

@ -1,7 +1,7 @@
# frozen_string_literal: true # frozen_string_literal: true
describe Jobs::Chat::ChannelDelete do describe Jobs::Chat::ChannelDelete do
fab!(:chat_channel) { Fabricate(:chat_channel) } fab!(:chat_channel)
fab!(:user1) { Fabricate(:user) } fab!(:user1) { Fabricate(:user) }
fab!(:user2) { Fabricate(:user) } fab!(:user2) { Fabricate(:user) }
fab!(:user3) { Fabricate(:user) } fab!(:user3) { Fabricate(:user) }

View File

@ -4,7 +4,7 @@ RSpec.describe Jobs::Chat::NotifyWatching do
fab!(:user1) { Fabricate(:user) } fab!(:user1) { Fabricate(:user) }
fab!(:user2) { Fabricate(:user) } fab!(:user2) { Fabricate(:user) }
fab!(:user3) { Fabricate(:user) } fab!(:user3) { Fabricate(:user) }
fab!(:group) { Fabricate(:group) } fab!(:group)
let(:except_user_ids) { [] } let(:except_user_ids) { [] }
before do before do

View File

@ -14,7 +14,7 @@ RSpec.describe Jobs::Chat::SendMessageNotifications do
end end
context "when there's a message" do context "when there's a message" do
fab!(:chat_message) { Fabricate(:chat_message) } fab!(:chat_message)
it "does nothing when the reason is invalid" do it "does nothing when the reason is invalid" do
Chat::Notifier.expects(:notify_new).never Chat::Notifier.expects(:notify_new).never

View File

@ -8,7 +8,7 @@ describe Chat::ChannelArchiveService do
fab!(:channel) { Fabricate(:category_channel) } fab!(:channel) { Fabricate(:category_channel) }
fab!(:user) { Fabricate(:user, admin: true) } fab!(:user) { Fabricate(:user, admin: true) }
fab!(:category) { Fabricate(:category) } fab!(:category)
let(:topic_params) { { topic_title: "This will be a new topic", category_id: category.id } } let(:topic_params) { { topic_title: "This will be a new topic", category_id: category.id } }
@ -304,7 +304,7 @@ describe Chat::ChannelArchiveService do
end end
context "when archiving to an existing topic" do context "when archiving to an existing topic" do
fab!(:topic) { Fabricate(:topic) } fab!(:topic)
let(:topic_params) { { topic_id: topic.id } } let(:topic_params) { { topic_id: topic.id } }
before { 3.times { Fabricate(:post, topic: topic) } } before { 3.times { Fabricate(:post, topic: topic) } }

View File

@ -149,7 +149,7 @@ describe Chat::ChannelFetcher do
end end
context "when restricted category" do context "when restricted category" do
fab!(:group) { Fabricate(:group) } fab!(:group)
fab!(:group_user) { Fabricate(:group_user, group: group, user: user1) } fab!(:group_user) { Fabricate(:group_user, group: group, user: user1) }
it "does not include the category channel for member of group with readonly access" do it "does not include the category channel for member of group with readonly access" do

View File

@ -1,9 +1,9 @@
# frozen_string_literal: true # frozen_string_literal: true
RSpec.describe Chat::ChannelHashtagDataSource do RSpec.describe Chat::ChannelHashtagDataSource do
fab!(:user) { Fabricate(:user) } fab!(:user)
fab!(:category) { Fabricate(:category) } fab!(:category)
fab!(:group) { Fabricate(:group) } fab!(:group)
fab!(:private_category) { Fabricate(:private_category, group: group) } fab!(:private_category) { Fabricate(:private_category, group: group) }
fab!(:channel1) do fab!(:channel1) do
Fabricate( Fabricate(

View File

@ -1,7 +1,7 @@
# frozen_string_literal: true # frozen_string_literal: true
RSpec.describe Chat::ChannelMembershipManager do RSpec.describe Chat::ChannelMembershipManager do
fab!(:user) { Fabricate(:user) } fab!(:user)
fab!(:channel1) { Fabricate(:category_channel) } fab!(:channel1) { Fabricate(:category_channel) }
fab!(:channel2) { Fabricate(:category_channel) } fab!(:channel2) { Fabricate(:category_channel) }

View File

@ -91,7 +91,7 @@ RSpec.describe Chat::GuardianExtensions do
end end
context "for category channel" do context "for category channel" do
fab!(:group) { Fabricate(:group) } fab!(:group)
fab!(:group_user) { Fabricate(:group_user, group: group, user: user) } fab!(:group_user) { Fabricate(:group_user, group: group, user: user) }
it "returns true if the user can join the category" do it "returns true if the user can join the category" do
@ -207,7 +207,7 @@ RSpec.describe Chat::GuardianExtensions do
end end
context "when user can't post in chatable" do context "when user can't post in chatable" do
fab!(:group) { Fabricate(:group) } fab!(:group)
fab!(:channel) { Fabricate(:private_category_channel, group: group) } fab!(:channel) { Fabricate(:private_category_channel, group: group) }
before do before do

View File

@ -6,7 +6,7 @@ describe Chat::OneboxHandler do
fab!(:private_category) { Fabricate(:private_category, group: Fabricate(:group)) } fab!(:private_category) { Fabricate(:private_category, group: Fabricate(:group)) }
fab!(:private_channel) { Fabricate(:category_channel, chatable: private_category) } fab!(:private_channel) { Fabricate(:category_channel, chatable: private_category) }
fab!(:public_channel) { Fabricate(:category_channel) } fab!(:public_channel) { Fabricate(:category_channel) }
fab!(:user) { Fabricate(:user) } fab!(:user)
fab!(:user_2) { Fabricate(:user, active: false) } fab!(:user_2) { Fabricate(:user, active: false) }
fab!(:user_3) { Fabricate(:user, staged: true) } fab!(:user_3) { Fabricate(:user, staged: true) }
fab!(:user_4) { Fabricate(:user, suspended_till: 3.weeks.from_now) } fab!(:user_4) { Fabricate(:user, suspended_till: 3.weeks.from_now) }

View File

@ -7,7 +7,7 @@ RSpec.describe Chat::ParsedMentions do
fab!(:channel_member_2) { Fabricate(:user) } fab!(:channel_member_2) { Fabricate(:user) }
fab!(:channel_member_3) { Fabricate(:user) } fab!(:channel_member_3) { Fabricate(:user) }
fab!(:not_a_channel_member) { Fabricate(:user) } fab!(:not_a_channel_member) { Fabricate(:user) }
fab!(:chat_channel) { Fabricate(:chat_channel) } fab!(:chat_channel)
before do before do
chat_channel.add(channel_member_1) chat_channel.add(channel_member_1)

View File

@ -9,7 +9,7 @@ describe Chat::ReviewQueue do
fab!(:flagger) { Fabricate(:user) } fab!(:flagger) { Fabricate(:user) }
fab!(:chat_channel) { Fabricate(:category_channel) } fab!(:chat_channel) { Fabricate(:category_channel) }
fab!(:message) { Fabricate(:chat_message, user: message_poster, chat_channel: chat_channel) } fab!(:message) { Fabricate(:chat_message, user: message_poster, chat_channel: chat_channel) }
fab!(:admin) { Fabricate(:admin) } fab!(:admin)
let(:guardian) { Guardian.new(flagger) } let(:guardian) { Guardian.new(flagger) }
let(:admin_guardian) { Guardian.new(admin) } let(:admin_guardian) { Guardian.new(admin) }

View File

@ -496,11 +496,11 @@ describe Chat::Message do
end end
describe "#rebake!" do describe "#rebake!" do
fab!(:chat_message) { Fabricate(:chat_message) } fab!(:chat_message)
describe "hashtags" do describe "hashtags" do
fab!(:category) { Fabricate(:category) } fab!(:category)
fab!(:group) { Fabricate(:group) } fab!(:group)
fab!(:secure_category) { Fabricate(:private_category, group: group) } fab!(:secure_category) { Fabricate(:private_category, group: group) }
before do before do

View File

@ -3,9 +3,9 @@
require "rails_helper" require "rails_helper"
RSpec.describe Chat::ReviewableMessage, type: :model do RSpec.describe Chat::ReviewableMessage, type: :model do
fab!(:moderator) { Fabricate(:moderator) } fab!(:moderator)
fab!(:user) { Fabricate(:user) } fab!(:user)
fab!(:chat_channel) { Fabricate(:chat_channel) } fab!(:chat_channel)
fab!(:chat_message) { Fabricate(:chat_message, chat_channel: chat_channel, user: user) } fab!(:chat_message) { Fabricate(:chat_message, chat_channel: chat_channel, user: user) }
fab!(:reviewable) do fab!(:reviewable) do
Fabricate(:chat_reviewable_message, target: chat_message, created_by: moderator) Fabricate(:chat_reviewable_message, target: chat_message, created_by: moderator)

View File

@ -12,7 +12,7 @@ describe Chat do
describe "register_upload_unused" do describe "register_upload_unused" do
fab!(:chat_channel) { Fabricate(:chat_channel, chatable: Fabricate(:category)) } fab!(:chat_channel) { Fabricate(:chat_channel, chatable: Fabricate(:category)) }
fab!(:user) { Fabricate(:user) } fab!(:user)
fab!(:upload) { Fabricate(:upload, user: user, created_at: 1.month.ago) } fab!(:upload) { Fabricate(:upload, user: user, created_at: 1.month.ago) }
fab!(:unused_upload) { Fabricate(:upload, user: user, created_at: 1.month.ago) } fab!(:unused_upload) { Fabricate(:upload, user: user, created_at: 1.month.ago) }
@ -37,7 +37,7 @@ describe Chat do
describe "register_upload_in_use" do describe "register_upload_in_use" do
fab!(:chat_channel) { Fabricate(:chat_channel, chatable: Fabricate(:category)) } fab!(:chat_channel) { Fabricate(:chat_channel, chatable: Fabricate(:category)) }
fab!(:user) { Fabricate(:user) } fab!(:user)
fab!(:message_upload) { Fabricate(:upload, user: user, created_at: 1.month.ago) } fab!(:message_upload) { Fabricate(:upload, user: user, created_at: 1.month.ago) }
fab!(:draft_upload) { Fabricate(:upload, user: user, created_at: 1.month.ago) } fab!(:draft_upload) { Fabricate(:upload, user: user, created_at: 1.month.ago) }
fab!(:unused_upload) { Fabricate(:upload, user: user, created_at: 1.month.ago) } fab!(:unused_upload) { Fabricate(:upload, user: user, created_at: 1.month.ago) }
@ -75,7 +75,7 @@ describe Chat do
let!(:user) { Fabricate(:user) } let!(:user) { Fabricate(:user) }
let!(:guardian) { Guardian.new(user) } let!(:guardian) { Guardian.new(user) }
let(:serializer) { UserCardSerializer.new(target_user, scope: guardian) } let(:serializer) { UserCardSerializer.new(target_user, scope: guardian) }
fab!(:group) { Fabricate(:group) } fab!(:group)
context "when chat enabled" do context "when chat enabled" do
before { SiteSetting.chat_enabled = true } before { SiteSetting.chat_enabled = true }
@ -127,7 +127,7 @@ describe Chat do
describe "chat oneboxes" do describe "chat oneboxes" do
fab!(:chat_channel) { Fabricate(:category_channel) } fab!(:chat_channel) { Fabricate(:category_channel) }
fab!(:user) { Fabricate(:user) } fab!(:user)
fab!(:chat_message) do fab!(:chat_message) do
Fabricate(:chat_message, chat_channel: chat_channel, user: user, message: "Hello world!") Fabricate(:chat_message, chat_channel: chat_channel, user: user, message: "Hello world!")
@ -184,7 +184,7 @@ describe Chat do
end end
describe "when a user is created" do describe "when a user is created" do
fab!(:category) { Fabricate(:category) } fab!(:category)
let(:user) { Fabricate(:user, last_seen_at: nil, first_seen_at: nil) } let(:user) { Fabricate(:user, last_seen_at: nil, first_seen_at: nil) }
it "queues a job to auto-join the user the first time they log in" do it "queues a job to auto-join the user the first time they log in" do
@ -210,7 +210,7 @@ describe Chat do
end end
describe "when category permissions change" do describe "when category permissions change" do
fab!(:category) { Fabricate(:category) } fab!(:category)
let(:chatters_group_permission) do let(:chatters_group_permission) do
{ chatters_group.name => CategoryGroup.permission_types[:full] } { chatters_group.name => CategoryGroup.permission_types[:full] }
@ -261,7 +261,7 @@ describe Chat do
SiteSetting.chat_allowed_groups = Group::AUTO_GROUPS[:everyone] SiteSetting.chat_allowed_groups = Group::AUTO_GROUPS[:everyone]
end end
fab!(:user) { Fabricate(:user) } fab!(:user)
let(:serializer) { CurrentUserSerializer.new(user, scope: Guardian.new(user)) } let(:serializer) { CurrentUserSerializer.new(user, scope: Guardian.new(user)) }
@ -330,7 +330,7 @@ describe Chat do
SiteSetting.chat_allowed_groups = Group::AUTO_GROUPS[:everyone] SiteSetting.chat_allowed_groups = Group::AUTO_GROUPS[:everyone]
end end
fab!(:user) { Fabricate(:user) } fab!(:user)
let(:serializer) { CurrentUserSerializer.new(user, scope: Guardian.new(user)) } let(:serializer) { CurrentUserSerializer.new(user, scope: Guardian.new(user)) }
context "when no channels exist" do context "when no channels exist" do
@ -370,7 +370,7 @@ describe Chat do
end end
describe "Deleting posts while deleting a user" do describe "Deleting posts while deleting a user" do
fab!(:user) { Fabricate(:user) } fab!(:user)
it "queues a job to also delete chat messages" do it "queues a job to also delete chat messages" do
deletion_opts = { delete_posts: true } deletion_opts = { delete_posts: true }

View File

@ -3,7 +3,7 @@
RSpec.describe Chat::Channel::MessageCreationPolicy do RSpec.describe Chat::Channel::MessageCreationPolicy do
subject(:policy) { described_class.new(context) } subject(:policy) { described_class.new(context) }
fab!(:user) { Fabricate(:user) } fab!(:user)
let(:guardian) { user.guardian } let(:guardian) { user.guardian }
let(:context) { Service::Base::Context.build(channel: channel, guardian: guardian) } let(:context) { Service::Base::Context.build(channel: channel, guardian: guardian) }

View File

@ -295,7 +295,7 @@ describe Chat::ChannelMembershipsQuery do
context "when user is inactive" do context "when user is inactive" do
fab!(:channel_1) { Fabricate(:category_channel) } fab!(:channel_1) { Fabricate(:category_channel) }
fab!(:inactive_user) { Fabricate(:inactive_user) } fab!(:inactive_user)
before do before do
Chat::UserChatChannelMembership.create( Chat::UserChatChannelMembership.create(

View File

@ -4,9 +4,9 @@ require "rails_helper"
RSpec.describe Chat::ChatController do RSpec.describe Chat::ChatController do
describe "#export_messages" do describe "#export_messages" do
fab!(:user) { Fabricate(:user) } fab!(:user)
fab!(:moderator) { Fabricate(:moderator) } fab!(:moderator)
fab!(:admin) { Fabricate(:admin) } fab!(:admin)
it "enqueues the export job and logs into staff actions" do it "enqueues the export job and logs into staff actions" do
sign_in(admin) sign_in(admin)

View File

@ -3,8 +3,8 @@
require "rails_helper" require "rails_helper"
RSpec.describe Chat::Admin::IncomingWebhooksController do RSpec.describe Chat::Admin::IncomingWebhooksController do
fab!(:admin) { Fabricate(:admin) } fab!(:admin)
fab!(:user) { Fabricate(:user) } fab!(:user)
fab!(:chat_channel1) { Fabricate(:category_channel) } fab!(:chat_channel1) { Fabricate(:category_channel) }
fab!(:chat_channel2) { Fabricate(:category_channel) } fab!(:chat_channel2) { Fabricate(:category_channel) }

View File

@ -4,11 +4,11 @@ require "rails_helper"
describe Chat::Api::CategoryChatablesController do describe Chat::Api::CategoryChatablesController do
describe "#access_by_category" do describe "#access_by_category" do
fab!(:group) { Fabricate(:group) } fab!(:group)
fab!(:private_category) { Fabricate(:private_category, group: group) } fab!(:private_category) { Fabricate(:private_category, group: group) }
context "when signed in as an admin" do context "when signed in as an admin" do
fab!(:admin) { Fabricate(:admin) } fab!(:admin)
before { sign_in(admin) } before { sign_in(admin) }
@ -90,7 +90,7 @@ describe Chat::Api::CategoryChatablesController do
end end
context "when signed in as a regular user" do context "when signed in as a regular user" do
fab!(:user) { Fabricate(:user) } fab!(:user)
before { sign_in(user) } before { sign_in(user) }

View File

@ -3,9 +3,9 @@
require "rails_helper" require "rails_helper"
RSpec.describe Chat::Api::ChannelsArchivesController do RSpec.describe Chat::Api::ChannelsArchivesController do
fab!(:user) { Fabricate(:user) } fab!(:user)
fab!(:admin) { Fabricate(:admin) } fab!(:admin)
fab!(:category) { Fabricate(:category) } fab!(:category)
fab!(:channel) { Fabricate(:category_channel, chatable: category) } fab!(:channel) { Fabricate(:category_channel, chatable: category) }
let(:new_topic_params) do let(:new_topic_params) do

View File

@ -230,8 +230,8 @@ RSpec.describe Chat::Api::ChannelsController do
end end
describe "#create" do describe "#create" do
fab!(:admin) { Fabricate(:admin) } fab!(:admin)
fab!(:category) { Fabricate(:category) } fab!(:category)
let(:params) do let(:params) do
{ {

View File

@ -11,7 +11,7 @@ RSpec.describe Chat::Api::HintsController do
end end
context "for logged in users" do context "for logged in users" do
fab!(:user) { Fabricate(:user) } fab!(:user)
fab!(:mentionable_group) do fab!(:mentionable_group) do
Fabricate(:group, mentionable_level: Group::ALIAS_LEVELS[:everyone]) Fabricate(:group, mentionable_level: Group::ALIAS_LEVELS[:everyone])
end end

View File

@ -2,7 +2,7 @@
RSpec.describe Chat::Api::ChannelMessagesController do RSpec.describe Chat::Api::ChannelMessagesController do
fab!(:current_user) { Fabricate(:user) } fab!(:current_user) { Fabricate(:user) }
fab!(:admin) { Fabricate(:admin) } fab!(:admin)
before do before do
SiteSetting.chat_enabled = true SiteSetting.chat_enabled = true
@ -68,7 +68,7 @@ RSpec.describe Chat::Api::ChannelMessagesController do
describe "for category" do describe "for category" do
fab!(:user_2) { Fabricate(:user) } fab!(:user_2) { Fabricate(:user) }
fab!(:chat_channel) { Fabricate(:chat_channel) } fab!(:chat_channel)
fab!(:message) { Fabricate(:chat_message, chat_channel: chat_channel, user: current_user) } fab!(:message) { Fabricate(:chat_message, chat_channel: chat_channel, user: current_user) }
fab!(:user_2_message) { Fabricate(:chat_message, chat_channel: chat_channel, user: user_2) } fab!(:user_2_message) { Fabricate(:chat_message, chat_channel: chat_channel, user: user_2) }
@ -178,11 +178,11 @@ RSpec.describe Chat::Api::ChannelMessagesController do
end end
end end
fab!(:admin) { Fabricate(:admin) } fab!(:admin)
fab!(:another_user) { Fabricate(:user) } fab!(:another_user) { Fabricate(:user) }
describe "for category" do describe "for category" do
fab!(:category) { Fabricate(:category) } fab!(:category)
fab!(:chat_channel) { Fabricate(:category_channel, chatable: category) } fab!(:chat_channel) { Fabricate(:category_channel, chatable: category) }
it_behaves_like "chat_message_restoration" it_behaves_like "chat_message_restoration"
@ -199,8 +199,8 @@ RSpec.describe Chat::Api::ChannelMessagesController do
end end
describe "#create" do describe "#create" do
fab!(:user) { Fabricate(:user) } fab!(:user)
fab!(:category) { Fabricate(:category) } fab!(:category)
let(:message) { "This is a message" } let(:message) { "This is a message" }

View File

@ -11,7 +11,7 @@ RSpec.describe Chat::Api::ReadsController do
describe "#read" do describe "#read" do
describe "marking a single message read" do describe "marking a single message read" do
fab!(:chat_channel) { Fabricate(:chat_channel) } fab!(:chat_channel)
fab!(:other_user) { Fabricate(:user) } fab!(:other_user) { Fabricate(:user) }
fab!(:message_1) { Fabricate(:chat_message, chat_channel: chat_channel, user: other_user) } fab!(:message_1) { Fabricate(:chat_message, chat_channel: chat_channel, user: other_user) }
fab!(:message_2) { Fabricate(:chat_message, chat_channel: chat_channel, user: other_user) } fab!(:message_2) { Fabricate(:chat_message, chat_channel: chat_channel, user: other_user) }

View File

@ -2,7 +2,7 @@
RSpec.describe Chat::Api::SummariesController do RSpec.describe Chat::Api::SummariesController do
fab!(:current_user) { Fabricate(:user) } fab!(:current_user) { Fabricate(:user) }
fab!(:group) { Fabricate(:group) } fab!(:group)
let(:plugin) { Plugin::Instance.new } let(:plugin) { Plugin::Instance.new }
before do before do

View File

@ -3,13 +3,13 @@
require "rails_helper" require "rails_helper"
RSpec.describe Chat::ChatController do RSpec.describe Chat::ChatController do
fab!(:user) { Fabricate(:user) } fab!(:user)
fab!(:other_user) { Fabricate(:user) } fab!(:other_user) { Fabricate(:user) }
fab!(:admin) { Fabricate(:admin) } fab!(:admin)
fab!(:category) { Fabricate(:category) } fab!(:category)
fab!(:chat_channel) { Fabricate(:category_channel, chatable: category) } fab!(:chat_channel) { Fabricate(:category_channel, chatable: category) }
fab!(:dm_chat_channel) { Fabricate(:direct_message_channel, users: [user, other_user, admin]) } fab!(:dm_chat_channel) { Fabricate(:direct_message_channel, users: [user, other_user, admin]) }
fab!(:tag) { Fabricate(:tag) } fab!(:tag)
MESSAGE_COUNT = 70 MESSAGE_COUNT = 70
MESSAGE_COUNT.times do |n| MESSAGE_COUNT.times do |n|

View File

@ -4,9 +4,9 @@ RSpec.describe CategoriesController do
describe "#destroy" do describe "#destroy" do
subject(:destroy_category) { delete "/categories/#{category.slug}.json" } subject(:destroy_category) { delete "/categories/#{category.slug}.json" }
fab!(:admin) { Fabricate(:admin) } fab!(:admin)
fab!(:category) { Fabricate(:category, user: admin) } fab!(:category) { Fabricate(:category, user: admin) }
fab!(:user) { Fabricate(:user) } fab!(:user)
context "when user is staff" do context "when user is staff" do
before { sign_in(admin) } before { sign_in(admin) }

View File

@ -4,7 +4,7 @@ require "rails_helper"
describe EmailController do describe EmailController do
describe "unsubscribing from chat email settings" do describe "unsubscribing from chat email settings" do
fab!(:user) { Fabricate(:user) } fab!(:user)
it "updates an user chat summary frequency" do it "updates an user chat summary frequency" do
SiteSetting.chat_enabled = true SiteSetting.chat_enabled = true

View File

@ -3,7 +3,7 @@
require "rails_helper" require "rails_helper"
RSpec.describe Chat::DirectMessagesController do RSpec.describe Chat::DirectMessagesController do
fab!(:user) { Fabricate(:user) } fab!(:user)
fab!(:user1) { Fabricate(:user) } fab!(:user1) { Fabricate(:user) }
fab!(:user2) { Fabricate(:user) } fab!(:user2) { Fabricate(:user) }
fab!(:user3) { Fabricate(:user) } fab!(:user3) { Fabricate(:user) }

View File

@ -5,9 +5,9 @@ require "rails_helper"
describe Chat::ChannelSerializer do describe Chat::ChannelSerializer do
subject(:serializer) { described_class.new(chat_channel, scope: guardian, root: nil) } subject(:serializer) { described_class.new(chat_channel, scope: guardian, root: nil) }
fab!(:user) { Fabricate(:user) } fab!(:user)
fab!(:admin) { Fabricate(:admin) } fab!(:admin)
fab!(:chat_channel) { Fabricate(:chat_channel) } fab!(:chat_channel)
let(:guardian_user) { user } let(:guardian_user) { user }
let(:guardian) { Guardian.new(guardian_user) } let(:guardian) { Guardian.new(guardian_user) }
@ -52,7 +52,7 @@ describe Chat::ChannelSerializer do
describe "#meta" do describe "#meta" do
context "for category channels" do context "for category channels" do
fab!(:chat_channel) { Fabricate(:chat_channel) } fab!(:chat_channel)
it "has the required message_bus_last_ids keys and calls MessageBus" do it "has the required message_bus_last_ids keys and calls MessageBus" do
MessageBus.expects(:last_id).with(Chat::Publisher.root_message_bus_channel(chat_channel.id)) MessageBus.expects(:last_id).with(Chat::Publisher.root_message_bus_channel(chat_channel.id))

View File

@ -56,7 +56,7 @@ RSpec.describe Chat::MessageUserSerializer do
end end
context "when user has a primary group" do context "when user has a primary group" do
fab!(:group) { Fabricate(:group) } fab!(:group)
before { params[:primary_group_id] = group.id } before { params[:primary_group_id] = group.id }

View File

@ -5,7 +5,7 @@ require "rails_helper"
RSpec.describe Chat::InReplyToSerializer do RSpec.describe Chat::InReplyToSerializer do
subject(:serializer) { described_class.new(message, scope: guardian, root: nil) } subject(:serializer) { described_class.new(message, scope: guardian, root: nil) }
fab!(:chat_channel) { Fabricate(:chat_channel) } fab!(:chat_channel)
let(:guardian) { Guardian.new(Fabricate(:user)) } let(:guardian) { Guardian.new(Fabricate(:user)) }
describe "#user" do describe "#user" do

View File

@ -3,7 +3,7 @@
RSpec.describe Chat::Action::PublishAndFollowDirectMessageChannel do RSpec.describe Chat::Action::PublishAndFollowDirectMessageChannel do
subject(:action) { described_class.call(channel_membership: membership) } subject(:action) { described_class.call(channel_membership: membership) }
fab!(:user) { Fabricate(:user) } fab!(:user)
let(:membership) { user.user_chat_channel_memberships.last } let(:membership) { user.user_chat_channel_memberships.last }

View File

@ -10,7 +10,7 @@ RSpec.describe Chat::CreateCategoryChannel do
subject(:result) { described_class.call(params) } subject(:result) { described_class.call(params) }
fab!(:current_user) { Fabricate(:admin) } fab!(:current_user) { Fabricate(:admin) }
fab!(:category) { Fabricate(:category) } fab!(:category)
let(:category_id) { category.id } let(:category_id) { category.id }
let(:guardian) { Guardian.new(current_user) } let(:guardian) { Guardian.new(current_user) }

View File

@ -22,7 +22,7 @@ RSpec.describe Chat::CreateMessage do
describe ".call" do describe ".call" do
subject(:result) { described_class.call(params) } subject(:result) { described_class.call(params) }
fab!(:user) { Fabricate(:user) } fab!(:user)
fab!(:other_user) { Fabricate(:user) } fab!(:other_user) { Fabricate(:user) }
fab!(:channel) { Fabricate(:chat_channel, threading_enabled: true) } fab!(:channel) { Fabricate(:chat_channel, threading_enabled: true) }
fab!(:thread) { Fabricate(:chat_thread, channel: channel) } fab!(:thread) { Fabricate(:chat_thread, channel: channel) }

View File

@ -3,7 +3,7 @@
RSpec.describe Chat::ListChannelMessages do RSpec.describe Chat::ListChannelMessages do
subject(:result) { described_class.call(params) } subject(:result) { described_class.call(params) }
fab!(:user) { Fabricate(:user) } fab!(:user)
fab!(:channel) { Fabricate(:chat_channel) } fab!(:channel) { Fabricate(:chat_channel) }
let(:guardian) { Guardian.new(user) } let(:guardian) { Guardian.new(user) }

View File

@ -3,7 +3,7 @@
RSpec.describe Chat::ListChannelThreadMessages do RSpec.describe Chat::ListChannelThreadMessages do
subject(:result) { described_class.call(params) } subject(:result) { described_class.call(params) }
fab!(:user) { Fabricate(:user) } fab!(:user)
fab!(:thread) do fab!(:thread) do
Fabricate(:chat_thread, channel: Fabricate(:chat_channel, threading_enabled: true)) Fabricate(:chat_thread, channel: Fabricate(:chat_channel, threading_enabled: true))
end end

View File

@ -63,7 +63,7 @@ describe Chat::Publisher do
describe ".publish_user_tracking_state!" do describe ".publish_user_tracking_state!" do
fab!(:channel) { Fabricate(:category_channel) } fab!(:channel) { Fabricate(:category_channel) }
fab!(:message_1) { Fabricate(:chat_message, chat_channel: channel) } fab!(:message_1) { Fabricate(:chat_message, chat_channel: channel) }
fab!(:user) { Fabricate(:user) } fab!(:user)
let(:data) do let(:data) do
MessageBus MessageBus

View File

@ -652,7 +652,7 @@ RSpec.describe Chat::UpdateMessage do
end end
describe "watched words" do describe "watched words" do
fab!(:watched_word) { Fabricate(:watched_word) } fab!(:watched_word)
it "errors when a blocked word is present" do it "errors when a blocked word is present" do
chat_message = create_chat_message(user1, "something", public_chat_channel) chat_message = create_chat_message(user1, "something", public_chat_channel)

View File

@ -25,7 +25,7 @@ RSpec.shared_examples "channel access example" do |verb, endpoint, params|
context "when channel cant be seen by current user" do context "when channel cant be seen by current user" do
fab!(:chatable) { Fabricate(:private_category, group: Fabricate(:group)) } fab!(:chatable) { Fabricate(:private_category, group: Fabricate(:group)) }
fab!(:chat_channel) { Fabricate(:category_channel, chatable: chatable) } fab!(:chat_channel) { Fabricate(:category_channel, chatable: chatable) }
fab!(:user) { Fabricate(:user) } fab!(:user)
fab!(:membership) do fab!(:membership) do
Fabricate(:user_chat_channel_membership, user: user, chat_channel: chat_channel) Fabricate(:user_chat_channel_membership, user: user, chat_channel: chat_channel)
end end

View File

@ -4,7 +4,7 @@ RSpec.shared_examples "a chat channel model" do
fab!(:user1) { Fabricate(:user) } fab!(:user1) { Fabricate(:user) }
fab!(:user2) { Fabricate(:user) } fab!(:user2) { Fabricate(:user) }
fab!(:staff) { Fabricate(:user, admin: true) } fab!(:staff) { Fabricate(:user, admin: true) }
fab!(:group) { Fabricate(:group) } fab!(:group)
fab!(:private_category) { Fabricate(:private_category, group: group) } fab!(:private_category) { Fabricate(:private_category, group: group) }
fab!(:private_category_channel) { Fabricate(:category_channel, chatable: private_category) } fab!(:private_category_channel) { Fabricate(:category_channel, chatable: private_category) }
fab!(:direct_message_channel) { Fabricate(:direct_message_channel, users: [user1, user2]) } fab!(:direct_message_channel) { Fabricate(:direct_message_channel, users: [user1, user2]) }

View File

@ -1,7 +1,7 @@
# frozen_string_literal: true # frozen_string_literal: true
RSpec.describe "Chat CSV exports", type: :system do RSpec.describe "Chat CSV exports", type: :system do
fab!(:admin) { Fabricate(:admin) } fab!(:admin)
let(:csv_export_pm_page) { PageObjects::Pages::CSVExportPM.new } let(:csv_export_pm_page) { PageObjects::Pages::CSVExportPM.new }
before do before do

View File

@ -1,7 +1,7 @@
# frozen_string_literal: true # frozen_string_literal: true
RSpec.describe "Anonymous", type: :system do RSpec.describe "Anonymous", type: :system do
fab!(:topic) { Fabricate(:topic) } fab!(:topic)
before { chat_system_bootstrap } before { chat_system_bootstrap }

View File

@ -2,7 +2,7 @@
RSpec.describe "Summarize a channel since your last visit", type: :system, js: true do RSpec.describe "Summarize a channel since your last visit", type: :system, js: true do
fab!(:current_user) { Fabricate(:user) } fab!(:current_user) { Fabricate(:user) }
fab!(:group) { Fabricate(:group) } fab!(:group)
let(:plugin) { Plugin::Instance.new } let(:plugin) { Plugin::Instance.new }
fab!(:channel) { Fabricate(:chat_channel) } fab!(:channel) { Fabricate(:chat_channel) }

View File

@ -1,12 +1,12 @@
# frozen_string_literal: true # frozen_string_literal: true
describe "Using #hashtag autocompletion to search for and lookup channels", type: :system do describe "Using #hashtag autocompletion to search for and lookup channels", type: :system do
fab!(:user) { Fabricate(:user) } fab!(:user)
fab!(:channel1) { Fabricate(:chat_channel, name: "Music Lounge", slug: "music") } fab!(:channel1) { Fabricate(:chat_channel, name: "Music Lounge", slug: "music") }
fab!(:channel2) { Fabricate(:chat_channel, name: "Random", slug: "random") } fab!(:channel2) { Fabricate(:chat_channel, name: "Random", slug: "random") }
fab!(:category) { Fabricate(:category, name: "Raspberry", slug: "raspberry-beret") } fab!(:category) { Fabricate(:category, name: "Raspberry", slug: "raspberry-beret") }
fab!(:tag) { Fabricate(:tag, name: "razed") } fab!(:tag) { Fabricate(:tag, name: "razed") }
fab!(:topic) { Fabricate(:topic) } fab!(:topic)
fab!(:post) { Fabricate(:post, topic: topic) } fab!(:post) { Fabricate(:post, topic: topic) }
fab!(:message1) { Fabricate(:chat_message, chat_channel: channel1) } fab!(:message1) { Fabricate(:chat_message, chat_channel: channel1) }
let(:chat_page) { PageObjects::Pages::Chat.new } let(:chat_page) { PageObjects::Pages::Chat.new }
@ -128,7 +128,7 @@ describe "Using #hashtag autocompletion to search for and lookup channels", type
end end
context "when a user cannot access the category for a cooked channel hashtag" do context "when a user cannot access the category for a cooked channel hashtag" do
fab!(:admin) { Fabricate(:admin) } fab!(:admin)
fab!(:manager_group) { Fabricate(:group, name: "Managers") } fab!(:manager_group) { Fabricate(:group, name: "Managers") }
fab!(:private_category) do fab!(:private_category) do
Fabricate(:private_category, name: "Management", slug: "management", group: manager_group) Fabricate(:private_category, name: "Management", slug: "management", group: manager_group)

View File

@ -1,11 +1,11 @@
# frozen_string_literal: true # frozen_string_literal: true
RSpec.describe "Navigation", type: :system do RSpec.describe "Navigation", type: :system do
fab!(:category) { Fabricate(:category) } fab!(:category)
fab!(:topic) { Fabricate(:topic) } fab!(:topic)
fab!(:post) { Fabricate(:post, topic: topic) } fab!(:post) { Fabricate(:post, topic: topic) }
fab!(:current_user) { Fabricate(:admin) } fab!(:current_user) { Fabricate(:admin) }
fab!(:category_channel) { Fabricate(:category_channel) } fab!(:category_channel)
fab!(:category_channel_2) { Fabricate(:category_channel) } fab!(:category_channel_2) { Fabricate(:category_channel) }
fab!(:message) { Fabricate(:chat_message, chat_channel: category_channel) } fab!(:message) { Fabricate(:chat_message, chat_channel: category_channel) }
let(:chat_page) { PageObjects::Pages::Chat.new } let(:chat_page) { PageObjects::Pages::Chat.new }

View File

@ -1,11 +1,11 @@
# frozen_string_literal: true # frozen_string_literal: true
RSpec.describe "Navigation", type: :system do RSpec.describe "Navigation", type: :system do
fab!(:category) { Fabricate(:category) } fab!(:category)
fab!(:topic) { Fabricate(:topic) } fab!(:topic)
fab!(:post) { Fabricate(:post, topic: topic) } fab!(:post) { Fabricate(:post, topic: topic) }
fab!(:user) { Fabricate(:admin) } fab!(:user) { Fabricate(:admin) }
fab!(:category_channel) { Fabricate(:category_channel) } fab!(:category_channel)
fab!(:category_channel_2) { Fabricate(:category_channel) } fab!(:category_channel_2) { Fabricate(:category_channel) }
let(:chat_page) { PageObjects::Pages::Chat.new } let(:chat_page) { PageObjects::Pages::Chat.new }
let(:sidebar_page) { PageObjects::Pages::Sidebar.new } let(:sidebar_page) { PageObjects::Pages::Sidebar.new }

View File

@ -2,7 +2,7 @@
RSpec.describe "Quoting chat message transcripts", type: :system do RSpec.describe "Quoting chat message transcripts", type: :system do
fab!(:current_user) { Fabricate(:user) } fab!(:current_user) { Fabricate(:user) }
fab!(:admin) { Fabricate(:admin) } fab!(:admin)
fab!(:chat_channel_1) { Fabricate(:chat_channel) } fab!(:chat_channel_1) { Fabricate(:chat_channel) }
let(:cdp) { PageObjects::CDP.new } let(:cdp) { PageObjects::CDP.new }

View File

@ -1,8 +1,8 @@
# frozen_string_literal: true # frozen_string_literal: true
RSpec.describe "Visit channel", type: :system do RSpec.describe "Visit channel", type: :system do
fab!(:category) { Fabricate(:category) } fab!(:category)
fab!(:topic) { Fabricate(:topic) } fab!(:topic)
fab!(:post) { Fabricate(:post, topic: topic) } fab!(:post) { Fabricate(:post, topic: topic) }
fab!(:current_user) { Fabricate(:user) } fab!(:current_user) { Fabricate(:user) }
fab!(:category_channel_1) { Fabricate(:category_channel) } fab!(:category_channel_1) { Fabricate(:category_channel) }

View File

@ -1,7 +1,7 @@
# frozen_string_literal: true # frozen_string_literal: true
describe "Local dates", type: :system do describe "Local dates", type: :system do
fab!(:topic) { Fabricate(:topic) } fab!(:topic)
fab!(:current_user) { Fabricate(:user) } fab!(:current_user) { Fabricate(:user) }
let(:year) { Time.zone.now.year + 1 } let(:year) { Time.zone.now.year + 1 }
let(:month) { Time.zone.now.month } let(:month) { Time.zone.now.month }

View File

@ -5,7 +5,7 @@ RSpec.describe DiscourseNarrativeBot::AdvancedUserNarrative do
fab!(:discobot_user) { narrative_bot.discobot_user } fab!(:discobot_user) { narrative_bot.discobot_user }
fab!(:discobot_username) { narrative_bot.discobot_username } fab!(:discobot_username) { narrative_bot.discobot_username }
fab!(:first_post) { Fabricate(:post, user: discobot_user) } fab!(:first_post) { Fabricate(:post, user: discobot_user) }
fab!(:user) { Fabricate(:user) } fab!(:user)
fab!(:topic) do fab!(:topic) do
Fabricate( Fabricate(

View File

@ -6,7 +6,7 @@ RSpec.describe DiscourseNarrativeBot::NewUserNarrative do
fab!(:discobot_user) { narrative_bot.discobot_user } fab!(:discobot_user) { narrative_bot.discobot_user }
fab!(:discobot_username) { narrative_bot.discobot_username } fab!(:discobot_username) { narrative_bot.discobot_username }
fab!(:first_post) { Fabricate(:post, user: discobot_user) } fab!(:first_post) { Fabricate(:post, user: discobot_user) }
fab!(:user) { Fabricate(:user) } fab!(:user)
fab!(:topic) do fab!(:topic) do
Fabricate( Fabricate(

View File

@ -2,9 +2,9 @@
RSpec.describe "discourse-presence" do RSpec.describe "discourse-presence" do
describe "PresenceChannel configuration" do describe "PresenceChannel configuration" do
fab!(:user) { Fabricate(:user) } fab!(:user)
fab!(:user2) { Fabricate(:user) } fab!(:user2) { Fabricate(:user) }
fab!(:admin) { Fabricate(:admin) } fab!(:admin)
fab!(:group) do fab!(:group) do
group = Fabricate(:group) group = Fabricate(:group)

View File

@ -4,7 +4,7 @@ require "rails_helper"
RSpec.describe "DiscoursePoll endpoints" do RSpec.describe "DiscoursePoll endpoints" do
describe "fetch voters for a poll" do describe "fetch voters for a poll" do
fab!(:user) { Fabricate(:user) } fab!(:user)
fab!(:post) { Fabricate(:post, raw: "[poll public=true]\n- A\n- B\n[/poll]") } fab!(:post) { Fabricate(:post, raw: "[poll public=true]\n- A\n- B\n[/poll]") }
fab!(:post_with_multiple_poll) { Fabricate(:post, raw: <<~SQL) } fab!(:post_with_multiple_poll) { Fabricate(:post, raw: <<~SQL) }
@ -222,8 +222,8 @@ RSpec.describe "DiscoursePoll endpoints" do
end end
context "when topic is in a private category" do context "when topic is in a private category" do
fab!(:admin) { Fabricate(:admin) } fab!(:admin)
fab!(:group) { Fabricate(:group) } fab!(:group)
fab!(:private_category) { Fabricate(:private_category, group: group) } fab!(:private_category) { Fabricate(:private_category, group: group) }
fab!(:private_topic) { Fabricate(:topic, category: private_category) } fab!(:private_topic) { Fabricate(:topic, category: private_category) }
fab!(:private_post) { Fabricate(:post, topic: private_topic, raw: <<~SQL) } fab!(:private_post) { Fabricate(:post, topic: private_topic, raw: <<~SQL) }

View File

@ -1,7 +1,7 @@
# frozen_string_literal: true # frozen_string_literal: true
RSpec.describe DiscoursePoll::Poll do RSpec.describe DiscoursePoll::Poll do
fab!(:user) { Fabricate(:user) } fab!(:user)
fab!(:user_2) { Fabricate(:user) } fab!(:user_2) { Fabricate(:user) }
fab!(:post_with_regular_poll) { Fabricate(:post, raw: <<~RAW) } fab!(:post_with_regular_poll) { Fabricate(:post, raw: <<~RAW) }

View File

@ -1,7 +1,7 @@
# frozen_string_literal: true # frozen_string_literal: true
RSpec.describe Search do RSpec.describe Search do
fab!(:topic) { Fabricate(:topic) } fab!(:topic)
fab!(:topic2) { Fabricate(:topic) } fab!(:topic2) { Fabricate(:topic) }
fab!(:regular_post) { Fabricate(:post, topic: topic, raw: <<~RAW) } fab!(:regular_post) { Fabricate(:post, topic: topic, raw: <<~RAW) }
Somewhere over the rainbow but no poll. Somewhere over the rainbow but no poll.

View File

@ -454,7 +454,7 @@ RSpec.describe ApplicationHelper do
end end
describe "#html_classes" do describe "#html_classes" do
fab!(:user) { Fabricate(:user) } fab!(:user)
it "includes 'rtl' when the I18n.locale is rtl" do it "includes 'rtl' when the I18n.locale is rtl" do
I18n.stubs(:locale).returns(:he) I18n.stubs(:locale).returns(:he)
@ -679,7 +679,7 @@ RSpec.describe ApplicationHelper do
end end
describe "discourse_color_scheme_stylesheets" do describe "discourse_color_scheme_stylesheets" do
fab!(:user) { Fabricate(:user) } fab!(:user)
it "returns a stylesheet link tag by default" do it "returns a stylesheet link tag by default" do
cs_stylesheets = helper.discourse_color_scheme_stylesheets cs_stylesheets = helper.discourse_color_scheme_stylesheets
@ -797,7 +797,7 @@ RSpec.describe ApplicationHelper do
end end
describe "html_lang" do describe "html_lang" do
fab!(:user) { Fabricate(:user) } fab!(:user)
before do before do
I18n.locale = :de I18n.locale = :de

View File

@ -3,9 +3,9 @@
require "import_export" require "import_export"
RSpec.describe ImportExport::CategoryExporter do RSpec.describe ImportExport::CategoryExporter do
fab!(:category) { Fabricate(:category) } fab!(:category)
fab!(:group) { Fabricate(:group) } fab!(:group)
fab!(:user) { Fabricate(:user) } fab!(:user)
fab!(:user2) { Fabricate(:user) } fab!(:user2) { Fabricate(:user) }
fab!(:user3) { Fabricate(:user) } fab!(:user3) { Fabricate(:user) }

View File

@ -5,7 +5,7 @@ require "import_export"
RSpec.describe ImportExport::TopicExporter do RSpec.describe ImportExport::TopicExporter do
before { STDOUT.stubs(:write) } before { STDOUT.stubs(:write) }
fab!(:user) { Fabricate(:user) } fab!(:user)
fab!(:topic) { Fabricate(:topic, user: user) } fab!(:topic) { Fabricate(:topic, user: user) }
fab!(:post) { Fabricate(:post, topic: topic, user: user) } fab!(:post) { Fabricate(:post, topic: topic, user: user) }

View File

@ -1,11 +1,11 @@
# frozen_string_literal: true # frozen_string_literal: true
RSpec.describe "Webhook event handlers" do RSpec.describe "Webhook event handlers" do
fab!(:user_badge) { Fabricate(:user_badge) } fab!(:user_badge)
fab!(:web_hook) { Fabricate(:user_badge_web_hook) } fab!(:web_hook) { Fabricate(:user_badge_web_hook) }
fab!(:user) { Fabricate(:user) } fab!(:user)
fab!(:badge) { Fabricate(:badge) } fab!(:badge)
fab!(:post) { Fabricate(:post) } fab!(:post)
describe "user_badge events" do describe "user_badge events" do
it "enqueues user_badge_granted webhook event" do it "enqueues user_badge_granted webhook event" do

View File

@ -12,8 +12,8 @@ RSpec.describe "category tag restrictions" do
fab!(:tag4) { Fabricate(:tag, name: "tag4") } fab!(:tag4) { Fabricate(:tag, name: "tag4") }
let(:tag_with_colon) { Fabricate(:tag, name: "with:colon") } let(:tag_with_colon) { Fabricate(:tag, name: "with:colon") }
fab!(:user) { Fabricate(:user) } fab!(:user)
fab!(:admin) { Fabricate(:admin) } fab!(:admin)
before do before do
SiteSetting.tagging_enabled = true SiteSetting.tagging_enabled = true
@ -275,7 +275,7 @@ RSpec.describe "category tag restrictions" do
context "with tag groups restricted to a category" do context "with tag groups restricted to a category" do
fab!(:tag_group1) { Fabricate(:tag_group) } fab!(:tag_group1) { Fabricate(:tag_group) }
fab!(:category) { Fabricate(:category) } fab!(:category)
fab!(:other_category) { Fabricate(:category) } fab!(:other_category) { Fabricate(:category) }
before do before do
@ -760,8 +760,8 @@ RSpec.describe "category tag restrictions" do
end end
RSpec.describe "tag topic counts per category" do RSpec.describe "tag topic counts per category" do
fab!(:admin) { Fabricate(:admin) } fab!(:admin)
fab!(:category) { Fabricate(:category) } fab!(:category)
fab!(:category2) { Fabricate(:category) } fab!(:category2) { Fabricate(:category) }
fab!(:tag1) { Fabricate(:tag) } fab!(:tag1) { Fabricate(:tag) }
fab!(:tag2) { Fabricate(:tag) } fab!(:tag2) { Fabricate(:tag) }

View File

@ -25,7 +25,7 @@ RSpec.describe EmailStyle do
context "with invite" do context "with invite" do
subject(:mail_html) { Email::Renderer.new(invite_mail).html } subject(:mail_html) { Email::Renderer.new(invite_mail).html }
fab!(:invite) { Fabricate(:invite) } fab!(:invite)
let(:invite_mail) { InviteMailer.send_invite(invite) } let(:invite_mail) { InviteMailer.send_invite(invite) }

View File

@ -1,8 +1,8 @@
# frozen_string_literal: true # frozen_string_literal: true
describe "Secure uploads" do describe "Secure uploads" do
fab!(:user) { Fabricate(:user) } fab!(:user)
fab!(:group) { Fabricate(:group) } fab!(:group)
fab!(:secure_category) { Fabricate(:private_category, group: group) } fab!(:secure_category) { Fabricate(:private_category, group: group) }
before do before do

View File

@ -3,8 +3,8 @@
RSpec.describe "spam rules for users" do RSpec.describe "spam rules for users" do
describe "auto-silence users based on flagging" do describe "auto-silence users based on flagging" do
fab!(:admin) { Fabricate(:admin) } # needed to send a system message fab!(:admin) # needed to send a system message
fab!(:moderator) { Fabricate(:moderator) } fab!(:moderator)
fab!(:user1) { Fabricate(:user) } fab!(:user1) { Fabricate(:user) }
fab!(:user2) { Fabricate(:user) } fab!(:user2) { Fabricate(:user) }

View File

@ -3,7 +3,7 @@
RSpec.describe "Updating tag counts" do RSpec.describe "Updating tag counts" do
fab!(:tag1) { Fabricate(:tag) } fab!(:tag1) { Fabricate(:tag) }
fab!(:tag2) { Fabricate(:tag) } fab!(:tag2) { Fabricate(:tag) }
fab!(:group) { Fabricate(:group) } fab!(:group)
fab!(:public_category) { Fabricate(:category) } fab!(:public_category) { Fabricate(:category) }
fab!(:public_category2) { Fabricate(:category) } fab!(:public_category2) { Fabricate(:category) }
fab!(:private_category) { Fabricate(:private_category, group: group) } fab!(:private_category) { Fabricate(:private_category, group: group) }

View File

@ -7,7 +7,7 @@ RSpec.describe "Topic Thumbnails" do
fab!(:image) { Fabricate(:image_upload, width: 50, height: 50) } fab!(:image) { Fabricate(:image_upload, width: 50, height: 50) }
fab!(:topic) { Fabricate(:topic, image_upload_id: image.id) } fab!(:topic) { Fabricate(:topic, image_upload_id: image.id) }
fab!(:user) { Fabricate(:user) } fab!(:user)
describe "latest" do describe "latest" do
def get_topic def get_topic

View File

@ -2,10 +2,10 @@
RSpec.describe WatchedWord do RSpec.describe WatchedWord do
fab!(:tl2_user) { Fabricate(:user, trust_level: TrustLevel[2]) } fab!(:tl2_user) { Fabricate(:user, trust_level: TrustLevel[2]) }
fab!(:admin) { Fabricate(:admin) } fab!(:admin)
fab!(:moderator) { Fabricate(:moderator) } fab!(:moderator)
fab!(:topic) { Fabricate(:topic) } fab!(:topic)
fab!(:first_post) { Fabricate(:post, topic: topic) } fab!(:first_post) { Fabricate(:post, topic: topic) }
let(:require_approval_word) do let(:require_approval_word) do

View File

@ -1,7 +1,7 @@
# frozen_string_literal: true # frozen_string_literal: true
RSpec.describe ::Jobs::AdminProblems do RSpec.describe ::Jobs::AdminProblems do
fab!(:admin) { Fabricate(:admin) } fab!(:admin)
it "creates notification when problems persist for at least 2 days" do it "creates notification when problems persist for at least 2 days" do
Discourse.redis.setex(AdminDashboardData.problems_started_key, 14.days.to_i, Time.zone.now.to_s) Discourse.redis.setex(AdminDashboardData.problems_started_key, 14.days.to_i, Time.zone.now.to_s)

View File

@ -3,7 +3,7 @@
RSpec.describe Jobs::BookmarkReminderNotifications do RSpec.describe Jobs::BookmarkReminderNotifications do
subject(:job) { described_class.new } subject(:job) { described_class.new }
fab!(:user) { Fabricate(:user) } fab!(:user)
let(:five_minutes_ago) { Time.zone.now - 5.minutes } let(:five_minutes_ago) { Time.zone.now - 5.minutes }
let(:bookmark1) { Fabricate(:bookmark, user: user) } let(:bookmark1) { Fabricate(:bookmark, user: user) }
let(:bookmark2) { Fabricate(:bookmark, user: user) } let(:bookmark2) { Fabricate(:bookmark, user: user) }

View File

@ -2,12 +2,12 @@
RSpec.describe Jobs::BulkInvite do RSpec.describe Jobs::BulkInvite do
describe "#execute" do describe "#execute" do
fab!(:user) { Fabricate(:user) } fab!(:user)
fab!(:admin) { Fabricate(:admin) } fab!(:admin)
fab!(:east_coast_user) { Fabricate(:east_coast_user) } fab!(:east_coast_user)
fab!(:group1) { Fabricate(:group, name: "group1") } fab!(:group1) { Fabricate(:group, name: "group1") }
fab!(:group2) { Fabricate(:group, name: "group2") } fab!(:group2) { Fabricate(:group, name: "group2") }
fab!(:topic) { Fabricate(:topic) } fab!(:topic)
let(:staged_user) { Fabricate(:user, staged: true, active: false) } let(:staged_user) { Fabricate(:user, staged: true, active: false) }
let(:email) { "test@discourse.org" } let(:email) { "test@discourse.org" }
let(:invites) do let(:invites) do

View File

@ -1,8 +1,8 @@
# frozen_string_literal: true # frozen_string_literal: true
RSpec.describe Jobs::BumpTopic do RSpec.describe Jobs::BumpTopic do
fab!(:admin) { Fabricate(:admin) } fab!(:admin)
fab!(:user) { Fabricate(:user) } fab!(:user)
it "can bump a topic" do it "can bump a topic" do
topic = Fabricate(:topic_timer, user: admin).topic topic = Fabricate(:topic_timer, user: admin).topic

View File

@ -1,7 +1,7 @@
# frozen_string_literal: true # frozen_string_literal: true
RSpec.describe Jobs::CleanUpUserExportTopics do RSpec.describe Jobs::CleanUpUserExportTopics do
fab!(:user) { Fabricate(:user) } fab!(:user)
it "should delete ancient user export system messages" do it "should delete ancient user export system messages" do
post_en = post_en =

View File

@ -1,7 +1,7 @@
# frozen_string_literal: true # frozen_string_literal: true
RSpec.describe Jobs::CloseTopic do RSpec.describe Jobs::CloseTopic do
fab!(:admin) { Fabricate(:admin) } fab!(:admin)
fab!(:topic) { Fabricate(:topic_timer, user: admin).topic } fab!(:topic) { Fabricate(:topic_timer, user: admin).topic }
@ -48,7 +48,7 @@ RSpec.describe Jobs::CloseTopic do
end end
describe "when user is no longer authorized to close topics" do describe "when user is no longer authorized to close topics" do
fab!(:user) { Fabricate(:user) } fab!(:user)
fab!(:topic) { Fabricate(:topic_timer, user: user).topic } fab!(:topic) { Fabricate(:topic_timer, user: user).topic }

View File

@ -6,7 +6,7 @@ RSpec.describe Jobs::CreateLinkedTopic do
end end
context "with a post" do context "with a post" do
fab!(:category) { Fabricate(:category) } fab!(:category)
fab!(:topic) { Fabricate(:topic, category: category) } fab!(:topic) { Fabricate(:topic, category: category) }
fab!(:post) { Fabricate(:post, topic: topic) } fab!(:post) { Fabricate(:post, topic: topic) }
fab!(:user_1) { Fabricate(:user) } fab!(:user_1) { Fabricate(:user) }

View File

@ -1,9 +1,9 @@
# frozen_string_literal: true # frozen_string_literal: true
RSpec.describe Jobs::DeleteReplies do RSpec.describe Jobs::DeleteReplies do
fab!(:admin) { Fabricate(:admin) } fab!(:admin)
fab!(:topic) { Fabricate(:topic) } fab!(:topic)
fab!(:topic_timer) do fab!(:topic_timer) do
Fabricate( Fabricate(
:topic_timer, :topic_timer,

View File

@ -1,7 +1,7 @@
# frozen_string_literal: true # frozen_string_literal: true
RSpec.describe Jobs::DeleteTopic do RSpec.describe Jobs::DeleteTopic do
fab!(:admin) { Fabricate(:admin) } fab!(:admin)
fab!(:topic) { Fabricate(:topic_timer, user: admin).topic } fab!(:topic) { Fabricate(:topic_timer, user: admin).topic }

View File

@ -2,7 +2,7 @@
RSpec.describe Jobs::DisableBootstrapMode do RSpec.describe Jobs::DisableBootstrapMode do
describe ".execute" do describe ".execute" do
fab!(:admin) { Fabricate(:admin) } fab!(:admin)
before do before do
SiteSetting.bootstrap_mode_enabled = true SiteSetting.bootstrap_mode_enabled = true

View File

@ -1,7 +1,7 @@
# frozen_string_literal: true # frozen_string_literal: true
RSpec.describe Jobs::DownloadAvatarFromUrl do RSpec.describe Jobs::DownloadAvatarFromUrl do
fab!(:user) { Fabricate(:user) } fab!(:user)
describe "when url is invalid" do describe "when url is invalid" do
it "should not raise any error" do it "should not raise any error" do

View File

@ -1,7 +1,7 @@
# frozen_string_literal: true # frozen_string_literal: true
RSpec.describe Jobs::DownloadProfileBackgroundFromUrl do RSpec.describe Jobs::DownloadProfileBackgroundFromUrl do
fab!(:user) { Fabricate(:user) } fab!(:user)
describe "when url is invalid" do describe "when url is invalid" do
it "should not raise any error" do it "should not raise any error" do

View File

@ -7,8 +7,8 @@ RSpec.describe Jobs::EmitWebHookEvent do
fab!(:post_hook) { Fabricate(:web_hook) } fab!(:post_hook) { Fabricate(:web_hook) }
fab!(:inactive_hook) { Fabricate(:inactive_web_hook) } fab!(:inactive_hook) { Fabricate(:inactive_web_hook) }
fab!(:post) { Fabricate(:post) } fab!(:post)
fab!(:user) { Fabricate(:user) } fab!(:user)
it "raises an error when there is no web hook record" do it "raises an error when there is no web hook record" do
expect { job.execute(event_type: "post", payload: {}) }.to raise_error( expect { job.execute(event_type: "post", payload: {}) }.to raise_error(
@ -175,8 +175,8 @@ RSpec.describe Jobs::EmitWebHookEvent do
end end
context "with category filters" do context "with category filters" do
fab!(:category) { Fabricate(:category) } fab!(:category)
fab!(:topic) { Fabricate(:topic) } fab!(:topic)
fab!(:topic_with_category) { Fabricate(:topic, category_id: category.id) } fab!(:topic_with_category) { Fabricate(:topic, category_id: category.id) }
fab!(:topic_hook) { Fabricate(:topic_web_hook, categories: [category]) } fab!(:topic_hook) { Fabricate(:topic_web_hook, categories: [category]) }
@ -204,7 +204,7 @@ RSpec.describe Jobs::EmitWebHookEvent do
end end
context "with tag filters" do context "with tag filters" do
fab!(:tag) { Fabricate(:tag) } fab!(:tag)
fab!(:topic) { Fabricate(:topic, tags: [tag]) } fab!(:topic) { Fabricate(:topic, tags: [tag]) }
fab!(:topic_hook) { Fabricate(:topic_web_hook, tags: [tag]) } fab!(:topic_hook) { Fabricate(:topic_web_hook, tags: [tag]) }
@ -240,7 +240,7 @@ RSpec.describe Jobs::EmitWebHookEvent do
end end
context "with group filters" do context "with group filters" do
fab!(:group) { Fabricate(:group) } fab!(:group)
fab!(:user) { Fabricate(:user, groups: [group]) } fab!(:user) { Fabricate(:user, groups: [group]) }
fab!(:like_hook) { Fabricate(:like_web_hook, groups: [group]) } fab!(:like_hook) { Fabricate(:like_web_hook, groups: [group]) }

View File

@ -2,7 +2,7 @@
RSpec.describe Jobs::EnableBootstrapMode do RSpec.describe Jobs::EnableBootstrapMode do
describe ".execute" do describe ".execute" do
fab!(:admin) { Fabricate(:admin) } fab!(:admin)
before { SiteSetting.bootstrap_mode_enabled = false } before { SiteSetting.bootstrap_mode_enabled = false }

View File

@ -14,7 +14,7 @@ RSpec.describe Jobs::ExportUserArchive do
end end
let(:component) { raise "component not set" } let(:component) { raise "component not set" }
fab!(:admin) { Fabricate(:admin) } fab!(:admin)
fab!(:category) { Fabricate(:category_with_definition, name: "User Archive Category") } fab!(:category) { Fabricate(:category_with_definition, name: "User Archive Category") }
fab!(:subcategory) { Fabricate(:category_with_definition, parent_category_id: category.id) } fab!(:subcategory) { Fabricate(:category_with_definition, parent_category_id: category.id) }
fab!(:topic) { Fabricate(:topic, category: category) } fab!(:topic) { Fabricate(:topic, category: category) }

View File

@ -12,8 +12,8 @@ RSpec.describe Jobs::FeatureTopicUsers do
context "with a topic" do context "with a topic" do
let!(:post) { create_post } let!(:post) { create_post }
let(:topic) { post.topic } let(:topic) { post.topic }
fab!(:coding_horror) { Fabricate(:coding_horror) } fab!(:coding_horror)
fab!(:evil_trout) { Fabricate(:evil_trout) } fab!(:evil_trout)
let!(:second_post) { create_post(topic: topic, user: coding_horror) } let!(:second_post) { create_post(topic: topic, user: coding_horror) }
let!(:third_post) { create_post(topic: topic, user: evil_trout) } let!(:third_post) { create_post(topic: topic, user: evil_trout) }

View File

@ -10,7 +10,7 @@ RSpec.describe Jobs::InviteEmail do
let (:mailer) { let (:mailer) {
Mail::Message.new(to: "eviltrout@test.domain") Mail::Message.new(to: "eviltrout@test.domain")
} }
fab!(:invite) { Fabricate(:invite) } fab!(:invite)
it "delegates to the test mailer" do it "delegates to the test mailer" do
Email::Sender.any_instance.expects(:send) Email::Sender.any_instance.expects(:send)

View File

@ -2,8 +2,8 @@
RSpec.describe Jobs::MassAwardBadge do RSpec.describe Jobs::MassAwardBadge do
describe "#execute" do describe "#execute" do
fab!(:badge) { Fabricate(:badge) } fab!(:badge)
fab!(:user) { Fabricate(:user) } fab!(:user)
let(:email_mode) { "email" } let(:email_mode) { "email" }
it "creates the badge for an existing user" do it "creates the badge for an existing user" do

View File

@ -1,7 +1,7 @@
# frozen_string_literal: true # frozen_string_literal: true
RSpec.describe ::Jobs::NotifyCategoryChange do RSpec.describe ::Jobs::NotifyCategoryChange do
fab!(:user) { Fabricate(:user) } fab!(:user)
fab!(:regular_user) { Fabricate(:trust_level_4) } fab!(:regular_user) { Fabricate(:trust_level_4) }
fab!(:post) { Fabricate(:post, user: regular_user) } fab!(:post) { Fabricate(:post, user: regular_user) }
fab!(:category) { Fabricate(:category, name: "test") } fab!(:category) { Fabricate(:category, name: "test") }

View File

@ -8,9 +8,9 @@ RSpec.describe Jobs::NotifyMailingListSubscribers do
end end
before { SiteSetting.tagging_enabled = true } before { SiteSetting.tagging_enabled = true }
fab!(:tag) { Fabricate(:tag) } fab!(:tag)
fab!(:topic) { Fabricate(:topic, tags: [tag]) } fab!(:topic) { Fabricate(:topic, tags: [tag]) }
fab!(:user) { Fabricate(:user) } fab!(:user)
fab!(:post) { Fabricate(:post, topic: topic, user: user) } fab!(:post) { Fabricate(:post, topic: topic, user: user) }
shared_examples "no emails" do shared_examples "no emails" do

View File

@ -17,7 +17,7 @@ RSpec.describe Jobs::NotifyMovedPosts do
fab!(:p1) { Fabricate(:post) } fab!(:p1) { Fabricate(:post) }
fab!(:p2) { Fabricate(:post, user: Fabricate(:evil_trout), topic: p1.topic) } fab!(:p2) { Fabricate(:post, user: Fabricate(:evil_trout), topic: p1.topic) }
fab!(:p3) { Fabricate(:post, user: p1.user, topic: p1.topic) } fab!(:p3) { Fabricate(:post, user: p1.user, topic: p1.topic) }
fab!(:admin) { Fabricate(:admin) } fab!(:admin)
let(:moved_post_notifications) do let(:moved_post_notifications) do
Notification.where(notification_type: Notification.types[:moved_post]) Notification.where(notification_type: Notification.types[:moved_post])

View File

@ -3,8 +3,8 @@
RSpec.describe Jobs::NotifyReviewable do RSpec.describe Jobs::NotifyReviewable do
describe "#execute" do describe "#execute" do
fab!(:admin) { Fabricate(:admin, moderator: true) } fab!(:admin) { Fabricate(:admin, moderator: true) }
fab!(:moderator) { Fabricate(:moderator) } fab!(:moderator)
fab!(:group_user) { Fabricate(:group_user) } fab!(:group_user)
fab!(:group) { group_user.group } fab!(:group) { group_user.group }
fab!(:user) { group_user.user } fab!(:user) { group_user.user }

View File

@ -1,7 +1,7 @@
# frozen_string_literal: true # frozen_string_literal: true
RSpec.describe ::Jobs::NotifyTagChange do RSpec.describe ::Jobs::NotifyTagChange do
fab!(:user) { Fabricate(:user) } fab!(:user)
fab!(:regular_user) { Fabricate(:trust_level_4) } fab!(:regular_user) { Fabricate(:trust_level_4) }
fab!(:post) { Fabricate(:post, user: regular_user) } fab!(:post) { Fabricate(:post, user: regular_user) }
fab!(:tag) { Fabricate(:tag, name: "test") } fab!(:tag) { Fabricate(:tag, name: "test") }

View File

@ -1,7 +1,7 @@
# frozen_string_literal: true # frozen_string_literal: true
RSpec.describe Jobs::OpenTopic do RSpec.describe Jobs::OpenTopic do
fab!(:admin) { Fabricate(:admin) } fab!(:admin)
fab!(:topic) { Fabricate(:topic_timer, user: admin).topic } fab!(:topic) { Fabricate(:topic_timer, user: admin).topic }
@ -49,7 +49,7 @@ RSpec.describe Jobs::OpenTopic do
end end
describe "when user is no longer authorized to open topics" do describe "when user is no longer authorized to open topics" do
fab!(:user) { Fabricate(:user) } fab!(:user)
fab!(:topic) { Fabricate(:topic_timer, user: user).topic } fab!(:topic) { Fabricate(:topic_timer, user: user).topic }

View File

@ -3,7 +3,7 @@
RSpec.describe Jobs::PostUpdateTopicTrackingState do RSpec.describe Jobs::PostUpdateTopicTrackingState do
subject(:job) { described_class.new } subject(:job) { described_class.new }
fab!(:post) { Fabricate(:post) } fab!(:post)
it "should publish messages" do it "should publish messages" do
messages = MessageBus.track_publish { job.execute({ post_id: post.id }) } messages = MessageBus.track_publish { job.execute({ post_id: post.id }) }

View File

@ -6,7 +6,7 @@ RSpec.describe Jobs::ProcessPost do
end end
context "with a post" do context "with a post" do
fab!(:post) { Fabricate(:post) } fab!(:post)
it "does not erase posts when CookedPostProcessor malfunctions" do it "does not erase posts when CookedPostProcessor malfunctions" do
# Look kids, an actual reason why you want to use mocks # Look kids, an actual reason why you want to use mocks

View File

@ -3,7 +3,7 @@
RSpec.describe Jobs::ProcessShelvedNotifications do RSpec.describe Jobs::ProcessShelvedNotifications do
subject(:job) { described_class.new } subject(:job) { described_class.new }
fab!(:user) { Fabricate(:user) } fab!(:user)
let(:post) { Fabricate(:post) } let(:post) { Fabricate(:post) }
it "removes all past do not disturb timings" do it "removes all past do not disturb timings" do

Some files were not shown because too many files have changed in this diff Show More