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
471 changed files with 1277 additions and 1273 deletions

View File

@@ -1,8 +1,8 @@
# frozen_string_literal: true
RSpec.describe BadgeGranter do
fab!(:badge) { Fabricate(:badge) }
fab!(:user) { Fabricate(:user) }
fab!(:badge)
fab!(:user)
before { BadgeGranter.enable_queue }
@@ -309,7 +309,7 @@ RSpec.describe BadgeGranter do
end
describe "revoke" do
fab!(:admin) { Fabricate(:admin) }
fab!(:admin)
let!(:user_badge) { BadgeGranter.grant(badge, user) }
it "revokes the badge and does necessary cleanup" do
@@ -396,7 +396,7 @@ RSpec.describe BadgeGranter do
end
describe "update_badges" do
fab!(:user) { Fabricate(:user) }
fab!(:user)
fab!(:liker) { Fabricate(:user) }
it "grants autobiographer" do

View File

@@ -7,10 +7,10 @@ RSpec.describe CategoryHashtagDataSource do
end
fab!(:category2) { Fabricate(:category, name: "Book Section", slug: "books", topic_count: 566) }
fab!(:category3) { Fabricate(:category, slug: "movies", topic_count: 245) }
fab!(:group) { Fabricate(:group) }
fab!(:group)
fab!(:category4) { Fabricate(:private_category, slug: "secret", group: group, topic_count: 40) }
fab!(:category5) { Fabricate(:category, slug: "casual", topic_count: 99) }
fab!(:user) { Fabricate(:user) }
fab!(:user)
let(:guardian) { Guardian.new(user) }
let(:uncategorized_category) { Category.find(SiteSetting.uncategorized_category_id) }

View File

@@ -1,7 +1,7 @@
# frozen_string_literal: true
RSpec.describe EmailStyleUpdater do
fab!(:admin) { Fabricate(:admin) }
fab!(:admin)
let(:default_html) { File.read("#{Rails.root}/app/views/email/default_template.html") }
let(:updater) { EmailStyleUpdater.new(admin) }

View File

@@ -3,7 +3,7 @@
RSpec.describe ExternalUploadManager do
subject(:manager) { ExternalUploadManager.new(external_upload_stub) }
fab!(:user) { Fabricate(:user) }
fab!(:user)
let!(:logo_file) { file_from_fixtures("logo.png") }
let!(:pdf_file) { file_from_fixtures("large.pdf", "pdf") }

View File

@@ -4,8 +4,8 @@ RSpec.describe GroupActionLogger do
subject(:logger) { described_class.new(group_owner, group) }
fab!(:group_owner) { Fabricate(:user) }
fab!(:group) { Fabricate(:group) }
fab!(:user) { Fabricate(:user) }
fab!(:group)
fab!(:user)
before { group.add_owner(group_owner) }

View File

@@ -1,7 +1,7 @@
# frozen_string_literal: true
RSpec.describe GroupMentionsUpdater do
fab!(:post) { Fabricate(:post) }
fab!(:post)
before { Jobs.run_immediately! }

View File

@@ -3,7 +3,7 @@
RSpec.describe HashtagAutocompleteService do
subject(:service) { described_class.new(guardian) }
fab!(:user) { Fabricate(:user) }
fab!(:user)
fab!(:category1) { Fabricate(:category, name: "The Book Club", slug: "the-book-club") }
fab!(:tag1) do
Fabricate(:tag, name: "great-books", staff_topic_count: 22, public_topic_count: 22)

View File

@@ -4,7 +4,7 @@ RSpec.describe InlineUploads do
describe ".process" do
context "with local uploads" do
fab!(:upload) { Fabricate(:upload) }
fab!(:upload)
fab!(:upload2) { Fabricate(:upload) }
fab!(:upload3) { Fabricate(:upload) }

View File

@@ -6,7 +6,7 @@ RSpec.describe NotificationEmailer do
NotificationEmailer.enable
end
fab!(:topic) { Fabricate(:topic) }
fab!(:topic)
fab!(:post) { Fabricate(:post, topic: topic) }
# something is off with fabricator

View File

@@ -2,7 +2,7 @@
RSpec.describe Notifications::ConsolidateNotifications do
describe "#before_consolidation_callbacks" do
fab!(:user) { Fabricate(:user) }
fab!(:user)
let(:rule) do
described_class.new(
from: Notification.types[:liked],

View File

@@ -5,7 +5,7 @@ RSpec.describe Notifications::ConsolidationPlanner do
describe "#consolidate_or_save!" do
let(:threshold) { 1 }
fab!(:user) { Fabricate(:user) }
fab!(:user)
let(:like_user) { "user1" }
before { SiteSetting.notification_consolidation_threshold = threshold }

View File

@@ -6,8 +6,8 @@ RSpec.describe PostActionNotifier do
Jobs.run_immediately!
end
fab!(:evil_trout) { Fabricate(:evil_trout) }
fab!(:post) { Fabricate(:post) }
fab!(:evil_trout)
fab!(:post)
context "when editing a post" do
it "notifies a user of the revision" do
@@ -205,7 +205,7 @@ RSpec.describe PostActionNotifier do
fab!(:private_message) do
Fabricate(:topic, archetype: Archetype.private_message, category_id: nil)
end
fab!(:user) { Fabricate(:user) }
fab!(:user)
fab!(:mention_post) do
Fabricate(:post, topic: private_message, user: user, raw: "Hello @eviltrout")
end
@@ -228,7 +228,7 @@ RSpec.describe PostActionNotifier do
end
context "with moderator action post" do
fab!(:user) { Fabricate(:user) }
fab!(:user)
fab!(:first_post) { Fabricate(:post, user: user, raw: "A useless post for you.") }
let(:topic) { first_post.topic }

View File

@@ -27,22 +27,22 @@ end
RSpec::Matchers.define_negated_matcher :not_add_notification, :add_notification
RSpec.describe PostAlerter do
fab!(:category) { Fabricate(:category) }
fab!(:category)
fab!(:topic) { Fabricate(:topic) }
fab!(:post) { Fabricate(:post) }
fab!(:topic)
fab!(:post)
fab!(:private_message_topic) { Fabricate(:private_message_topic) }
fab!(:private_message_topic)
fab!(:private_message_topic_post1) { Fabricate(:post, topic: private_message_topic) }
fab!(:private_message_topic_post2) { Fabricate(:post, topic: private_message_topic) }
fab!(:group) { Fabricate(:group) }
fab!(:group)
fab!(:admin) { Fabricate(:admin) }
fab!(:evil_trout) { Fabricate(:evil_trout) }
fab!(:coding_horror) { Fabricate(:coding_horror) }
fab!(:admin)
fab!(:evil_trout)
fab!(:coding_horror)
fab!(:walterwhite) { Fabricate(:walter_white) }
fab!(:user) { Fabricate(:user) }
fab!(:user)
fab!(:tl2_user) { Fabricate(:user, trust_level: TrustLevel[2]) }
fab!(:private_category) do
@@ -542,7 +542,7 @@ RSpec.describe PostAlerter do
end
context "with quotes" do
fab!(:category) { Fabricate(:category) }
fab!(:category)
fab!(:topic) { Fabricate(:topic, category: category) }
it "does not notify for muted users" do
@@ -1447,9 +1447,9 @@ RSpec.describe PostAlerter do
end
describe "watching_first_post" do
fab!(:user) { Fabricate(:user) }
fab!(:category) { Fabricate(:category) }
fab!(:tag) { Fabricate(:tag) }
fab!(:user)
fab!(:category)
fab!(:tag)
fab!(:topic) { Fabricate(:topic, category: category, tags: [tag]) }
fab!(:post) { Fabricate(:post, topic: topic) }
@@ -2051,7 +2051,7 @@ RSpec.describe PostAlerter do
end
context "with on change" do
fab!(:user) { Fabricate(:user) }
fab!(:user)
fab!(:other_tag) { Fabricate(:tag) }
fab!(:watched_tag) { Fabricate(:tag) }
@@ -2120,8 +2120,8 @@ RSpec.describe PostAlerter do
fab!(:other_tag) { Fabricate(:tag) }
fab!(:other_tag2) { Fabricate(:tag) }
fab!(:other_tag3) { Fabricate(:tag) }
fab!(:user) { Fabricate(:user) }
fab!(:staged) { Fabricate(:staged) }
fab!(:user)
fab!(:staged)
before do
SiteSetting.tagging_enabled = true
@@ -2159,8 +2159,8 @@ RSpec.describe PostAlerter do
end
context "with tag groups" do
fab!(:tag) { Fabricate(:tag) }
fab!(:user) { Fabricate(:user) }
fab!(:tag)
fab!(:user)
fab!(:topic) { Fabricate(:topic, tags: [tag]) }
fab!(:post) { Fabricate(:post, topic: topic) }
@@ -2264,8 +2264,8 @@ RSpec.describe PostAlerter do
describe "#notify_post_users" do
fab!(:post) { Fabricate(:post, topic: topic) }
fab!(:last_editor) { Fabricate(:user) }
fab!(:tag) { Fabricate(:tag) }
fab!(:category) { Fabricate(:category) }
fab!(:tag)
fab!(:category)
it "creates single edit notification when post is modified" do
TopicUser.create!(

View File

@@ -5,7 +5,7 @@ require "rails_helper"
RSpec.describe PostBookmarkable do
subject(:registered_bookmarkable) { RegisteredBookmarkable.new(PostBookmarkable) }
fab!(:user) { Fabricate(:user) }
fab!(:user)
fab!(:private_category) { Fabricate(:private_category, group: Fabricate(:group)) }
let(:guardian) { Guardian.new(user) }

View File

@@ -13,7 +13,7 @@ RSpec.describe PushNotificationPusher do
end
context "with user" do
fab!(:user) { Fabricate(:user) }
fab!(:user)
let(:topic_title) { "Topic" }
let(:username) { "system" }

View File

@@ -1,11 +1,11 @@
# frozen_string_literal: true
RSpec.describe SidebarSiteSettingsBackfiller do
fab!(:user) { Fabricate(:user) }
fab!(:user)
fab!(:user2) { Fabricate(:user) }
fab!(:user3) { Fabricate(:user) }
fab!(:staged_user) { Fabricate(:user, staged: true) }
fab!(:category) { Fabricate(:category) }
fab!(:category)
fab!(:category2) { Fabricate(:category) }
fab!(:category3) { Fabricate(:category) }
fab!(:user_category_sidebar_section_link) do
@@ -26,7 +26,7 @@ RSpec.describe SidebarSiteSettingsBackfiller do
]
end
fab!(:tag) { Fabricate(:tag) }
fab!(:tag)
fab!(:tag2) { Fabricate(:tag) }
fab!(:tag3) { Fabricate(:tag) }
fab!(:user_tag_sidebar_section_link) do

View File

@@ -1,7 +1,7 @@
# frozen_string_literal: true
RSpec.describe StaffActionLogger do
fab!(:admin) { Fabricate(:admin) }
fab!(:admin)
let(:logger) { described_class.new(admin) }
describe "new" do
@@ -72,7 +72,7 @@ RSpec.describe StaffActionLogger do
end
describe "log_topic_delete_recover" do
fab!(:topic) { Fabricate(:topic) }
fab!(:topic)
context "when deleting topic" do
subject(:log_topic_delete_recover) do
@@ -120,7 +120,7 @@ RSpec.describe StaffActionLogger do
described_class.new(admin).log_trust_level_change(user, old_trust_level, new_trust_level)
end
fab!(:user) { Fabricate(:user) }
fab!(:user)
let(:old_trust_level) { TrustLevel[0] }
let(:new_trust_level) { TrustLevel[1] }
@@ -355,8 +355,8 @@ RSpec.describe StaffActionLogger do
end
describe "log_badge_revoke" do
fab!(:user) { Fabricate(:user) }
fab!(:badge) { Fabricate(:badge) }
fab!(:user)
fab!(:badge)
let(:user_badge) { BadgeGranter.grant(badge, user) }
it "raises an error when argument is missing" do
@@ -510,7 +510,7 @@ RSpec.describe StaffActionLogger do
end
describe "log_category_creation" do
fab!(:category) { Fabricate(:category) }
fab!(:category)
it "raises an error when category is missing" do
expect { logger.log_category_deletion(nil) }.to raise_error(Discourse::InvalidParameters)
@@ -529,7 +529,7 @@ RSpec.describe StaffActionLogger do
end
describe "log_lock_trust_level" do
fab!(:user) { Fabricate(:user) }
fab!(:user)
it "raises an error when argument is missing" do
expect { logger.log_lock_trust_level(nil) }.to raise_error(Discourse::InvalidParameters)
@@ -549,7 +549,7 @@ RSpec.describe StaffActionLogger do
end
describe "log_user_activate" do
fab!(:user) { Fabricate(:user) }
fab!(:user)
it "raises an error when argument is missing" do
expect { logger.log_user_activate(nil, nil) }.to raise_error(Discourse::InvalidParameters)
@@ -657,7 +657,7 @@ RSpec.describe StaffActionLogger do
end
describe "log_topic_closed" do
fab!(:topic) { Fabricate(:topic) }
fab!(:topic)
it "raises an error when argument is missing" do
expect { logger.log_topic_closed(nil) }.to raise_error(Discourse::InvalidParameters)
@@ -674,7 +674,7 @@ RSpec.describe StaffActionLogger do
end
describe "log_topic_archived" do
fab!(:topic) { Fabricate(:topic) }
fab!(:topic)
it "raises an error when argument is missing" do
expect { logger.log_topic_archived(nil) }.to raise_error(Discourse::InvalidParameters)
@@ -691,7 +691,7 @@ RSpec.describe StaffActionLogger do
end
describe "log_post_staff_note" do
fab!(:post) { Fabricate(:post) }
fab!(:post)
it "raises an error when argument is missing" do
expect { logger.log_topic_archived(nil) }.to raise_error(Discourse::InvalidParameters)
@@ -717,7 +717,7 @@ RSpec.describe StaffActionLogger do
end
describe "log_post_staff_note" do
fab!(:post) { Fabricate(:post) }
fab!(:post)
it "raises an error when argument is missing" do
expect { logger.log_topic_archived(nil) }.to raise_error(Discourse::InvalidParameters)

View File

@@ -6,7 +6,7 @@ RSpec.describe TagHashtagDataSource do
fab!(:tag3) { Fabricate(:tag, name: "factory", public_topic_count: 4) }
fab!(:tag4) { Fabricate(:tag, name: "factorio", public_topic_count: 3) }
fab!(:tag5) { Fabricate(:tag, name: "factz", public_topic_count: 1) }
fab!(:user) { Fabricate(:user) }
fab!(:user)
let(:guardian) { Guardian.new(user) }
describe "#enabled?" do

View File

@@ -1,7 +1,7 @@
# frozen_string_literal: true
describe ThemeSettingsMigrationsRunner do
fab!(:theme) { Fabricate(:theme) }
fab!(:theme)
fab!(:migration_field) { Fabricate(:migration_theme_field, version: 1, theme: theme) }
fab!(:settings_field) { Fabricate(:settings_theme_field, theme: theme, value: <<~YAML) }
integer_setting: 1

View File

@@ -1,7 +1,7 @@
# frozen_string_literal: true
RSpec.describe ThemesInstallTask do
fab!(:admin) { Fabricate(:admin) }
fab!(:admin)
before { Discourse::Application.load_tasks }

View File

@@ -5,7 +5,7 @@ require "rails_helper"
RSpec.describe TopicBookmarkable do
subject(:registered_bookmarkable) { RegisteredBookmarkable.new(TopicBookmarkable) }
fab!(:user) { Fabricate(:user) }
fab!(:user)
fab!(:private_category) { Fabricate(:private_category, group: Fabricate(:group)) }
let(:guardian) { Guardian.new(user) }

View File

@@ -4,8 +4,8 @@
# TODO - test pinning, create_moderator_post
RSpec.describe TopicStatusUpdater do
fab!(:user) { Fabricate(:user) }
fab!(:admin) { Fabricate(:admin) }
fab!(:user)
fab!(:admin)
it "avoids notifying on automatically closed topics" do
# TODO: TopicStatusUpdater should suppress message bus updates from the users it "pretends to read"

View File

@@ -1,7 +1,7 @@
# frozen_string_literal: true
RSpec.describe UserActivator do
fab!(:user) { Fabricate(:user) }
fab!(:user)
let!(:email_token) { Fabricate(:email_token, user: user) }
describe "email_activator" do

View File

@@ -321,7 +321,7 @@ RSpec.describe UserAnonymizer do
let(:old_ip) { "1.2.3.4" }
let(:anon_ip) { "0.0.0.0" }
let(:user) { Fabricate(:user, ip_address: old_ip, registration_ip_address: old_ip) }
fab!(:post) { Fabricate(:post) }
fab!(:post)
let(:topic) { post.topic }
it "doesn't anonymize ips by default" do

View File

@@ -2,7 +2,7 @@
RSpec.describe UserDestroyer do
fab!(:user) { Fabricate(:user_with_secondary_email) }
fab!(:admin) { Fabricate(:admin) }
fab!(:admin)
describe ".new" do
it "raises an error when user is nil" do

View File

@@ -4,7 +4,7 @@ RSpec.describe UserMerger do
fab!(:target_user) { Fabricate(:user, username: "alice", email: "alice@example.com") }
fab!(:source_user) { Fabricate(:user, username: "alice1", email: "alice@work.com") }
fab!(:walter) { Fabricate(:walter_white) }
fab!(:coding_horror) { Fabricate(:coding_horror) }
fab!(:coding_horror)
fab!(:p1) { Fabricate(:post) }
fab!(:p2) { Fabricate(:post) }

View File

@@ -3,7 +3,7 @@
RSpec.describe UserNotificationScheduleProcessor do
include ActiveSupport::Testing::TimeHelpers
fab!(:user) { Fabricate(:user) }
fab!(:user)
let(:standard_schedule) do
schedule =
UserNotificationSchedule.create({ user: user }.merge(UserNotificationSchedule::DEFAULT))

View File

@@ -3,7 +3,7 @@
RSpec.describe UserSilencer do
fab!(:user) { Fabricate(:user, trust_level: 0) }
fab!(:post) { Fabricate(:post, user: user) }
fab!(:admin) { Fabricate(:admin) }
fab!(:admin)
describe "silence" do
subject(:silence_user) { silencer.silence }

View File

@@ -1,9 +1,9 @@
# frozen_string_literal: true
RSpec.describe UserStatCountUpdater do
fab!(:user) { Fabricate(:user) }
fab!(:user)
fab!(:user_stat) { user.user_stat }
fab!(:post) { Fabricate(:post) }
fab!(:post)
fab!(:post_2) { Fabricate(:post, topic: post.topic) }
before do

View File

@@ -1,7 +1,7 @@
# frozen_string_literal: true
RSpec.describe UserUpdater do
fab!(:user) { Fabricate(:user) }
fab!(:user)
fab!(:u1) { Fabricate(:user) }
fab!(:u2) { Fabricate(:user) }
fab!(:u3) { Fabricate(:user) }
@@ -33,8 +33,8 @@ RSpec.describe UserUpdater do
end
describe "#update" do
fab!(:category) { Fabricate(:category) }
fab!(:tag) { Fabricate(:tag) }
fab!(:category)
fab!(:tag)
fab!(:tag2) { Fabricate(:tag) }
it "saves user" do