From cd99fa8cebc6efa059b4fca743d517c88f8d9686 Mon Sep 17 00:00:00 2001
From: Matt Jankowski <matt@jankowski.online>
Date: Sat, 4 Mar 2023 11:12:09 -0500
Subject: [PATCH] Fabricator specs (#23925)

---
 spec/fabricators/account_alias_fabricator.rb        |  7 -------
 .../account_deletion_request_fabricator.rb          |  5 -----
 spec/fabricators/account_migration_fabricator.rb    |  1 +
 .../account_moderation_note_fabricator.rb           |  3 ++-
 spec/fabricators/account_pin_fabricator.rb          |  5 +++--
 spec/fabricators/account_stat_fabricator.rb         |  8 ++++----
 spec/fabricators/account_tag_stat_fabricator.rb     |  5 -----
 .../account_warning_preset_fabricator.rb            |  5 -----
 spec/fabricators/admin_action_log_fabricator.rb     |  2 +-
 spec/fabricators/announcement_mute_fabricator.rb    |  6 ------
 .../fabricators/announcement_reaction_fabricator.rb |  7 -------
 spec/fabricators/conversation_account_fabricator.rb |  8 --------
 spec/fabricators/conversation_mute_fabricator.rb    |  4 ----
 .../fabricators/custom_emoji_category_fabricator.rb |  5 -----
 spec/fabricators/encrypted_message_fabricator.rb    | 10 ----------
 spec/fabricators/featured_tag_fabricator.rb         |  8 --------
 .../follow_recommendation_suppression_fabricator.rb |  5 -----
 spec/fabricators/identity_fabricator.rb             |  2 +-
 spec/fabricators/import_fabricator.rb               |  4 ----
 spec/fabricators/ip_block_fabricator.rb             |  8 --------
 spec/fabricators/list_account_fabricator.rb         |  7 -------
 spec/fabricators/one_time_key_fabricator.rb         | 13 -------------
 spec/fabricators/setting_fabricator.rb              |  1 +
 spec/fabricators/site_upload_fabricator.rb          |  1 +
 spec/fabricators/status_edit_fabricator.rb          |  9 ---------
 spec/fabricators/status_stat_fabricator.rb          |  8 --------
 spec/fabricators/unavailable_domain_fabricator.rb   |  2 +-
 spec/fabricators/user_invite_request_fabricator.rb  |  6 ------
 spec/fabricators/web_setting_fabricator.rb          |  4 ----
 spec/fabricators_spec.rb                            | 12 ++++++++++++
 spec/models/account_spec.rb                         |  6 ------
 spec/models/block_spec.rb                           |  5 -----
 spec/models/domain_block_spec.rb                    |  5 -----
 spec/models/email_domain_block_spec.rb              |  7 -------
 spec/models/follow_spec.rb                          |  5 -----
 spec/models/mention_spec.rb                         |  5 -----
 spec/models/report_spec.rb                          |  6 ------
 37 files changed, 27 insertions(+), 183 deletions(-)
 delete mode 100644 spec/fabricators/account_alias_fabricator.rb
 delete mode 100644 spec/fabricators/account_deletion_request_fabricator.rb
 delete mode 100644 spec/fabricators/account_tag_stat_fabricator.rb
 delete mode 100644 spec/fabricators/account_warning_preset_fabricator.rb
 delete mode 100644 spec/fabricators/announcement_mute_fabricator.rb
 delete mode 100644 spec/fabricators/announcement_reaction_fabricator.rb
 delete mode 100644 spec/fabricators/conversation_account_fabricator.rb
 delete mode 100644 spec/fabricators/conversation_mute_fabricator.rb
 delete mode 100644 spec/fabricators/custom_emoji_category_fabricator.rb
 delete mode 100644 spec/fabricators/encrypted_message_fabricator.rb
 delete mode 100644 spec/fabricators/featured_tag_fabricator.rb
 delete mode 100644 spec/fabricators/follow_recommendation_suppression_fabricator.rb
 delete mode 100644 spec/fabricators/import_fabricator.rb
 delete mode 100644 spec/fabricators/ip_block_fabricator.rb
 delete mode 100644 spec/fabricators/list_account_fabricator.rb
 delete mode 100644 spec/fabricators/one_time_key_fabricator.rb
 delete mode 100644 spec/fabricators/status_edit_fabricator.rb
 delete mode 100644 spec/fabricators/status_stat_fabricator.rb
 delete mode 100644 spec/fabricators/user_invite_request_fabricator.rb
 delete mode 100644 spec/fabricators/web_setting_fabricator.rb
 create mode 100644 spec/fabricators_spec.rb

diff --git a/spec/fabricators/account_alias_fabricator.rb b/spec/fabricators/account_alias_fabricator.rb
deleted file mode 100644
index 4f434c078a..0000000000
--- a/spec/fabricators/account_alias_fabricator.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-# frozen_string_literal: true
-
-Fabricator(:account_alias) do
-  account
-  acct 'test@example.com'
-  uri 'https://example.com/users/test'
-end
diff --git a/spec/fabricators/account_deletion_request_fabricator.rb b/spec/fabricators/account_deletion_request_fabricator.rb
deleted file mode 100644
index 3d3d373988..0000000000
--- a/spec/fabricators/account_deletion_request_fabricator.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-# frozen_string_literal: true
-
-Fabricator(:account_deletion_request) do
-  account
-end
diff --git a/spec/fabricators/account_migration_fabricator.rb b/spec/fabricators/account_migration_fabricator.rb
index fd453f6d2a..ae6143a65c 100644
--- a/spec/fabricators/account_migration_fabricator.rb
+++ b/spec/fabricators/account_migration_fabricator.rb
@@ -5,4 +5,5 @@ Fabricator(:account_migration) do
   target_account { |attrs| Fabricate(:account, also_known_as: [ActivityPub::TagManager.instance.uri_for(attrs[:account])]) }
   acct           { |attrs| attrs[:target_account].acct }
   followers_count 1234
+  created_at { 60.days.ago }
 end
diff --git a/spec/fabricators/account_moderation_note_fabricator.rb b/spec/fabricators/account_moderation_note_fabricator.rb
index 403870db6d..341a24dea0 100644
--- a/spec/fabricators/account_moderation_note_fabricator.rb
+++ b/spec/fabricators/account_moderation_note_fabricator.rb
@@ -2,5 +2,6 @@
 
 Fabricator(:account_moderation_note) do
   content 'MyText'
-  account nil
+  account
+  target_account { Fabricate(:account) }
 end
diff --git a/spec/fabricators/account_pin_fabricator.rb b/spec/fabricators/account_pin_fabricator.rb
index 7d8a77bb54..32a5f3bdb8 100644
--- a/spec/fabricators/account_pin_fabricator.rb
+++ b/spec/fabricators/account_pin_fabricator.rb
@@ -1,6 +1,7 @@
 # frozen_string_literal: true
 
 Fabricator(:account_pin) do
-  account        nil
-  target_account nil
+  account
+  target_account(fabricator: :account)
+  before_create { |account_pin, _| account_pin.account.follow!(account_pin.target_account) }
 end
diff --git a/spec/fabricators/account_stat_fabricator.rb b/spec/fabricators/account_stat_fabricator.rb
index 45b1524ef3..e6085c5f2b 100644
--- a/spec/fabricators/account_stat_fabricator.rb
+++ b/spec/fabricators/account_stat_fabricator.rb
@@ -1,8 +1,8 @@
 # frozen_string_literal: true
 
 Fabricator(:account_stat) do
-  account         nil
-  statuses_count  ''
-  following_count ''
-  followers_count ''
+  account
+  statuses_count  '123'
+  following_count '456'
+  followers_count '789'
 end
diff --git a/spec/fabricators/account_tag_stat_fabricator.rb b/spec/fabricators/account_tag_stat_fabricator.rb
deleted file mode 100644
index 769015bd02..0000000000
--- a/spec/fabricators/account_tag_stat_fabricator.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-# frozen_string_literal: true
-
-Fabricator(:account_tag_stat) do
-  accounts_count ''
-end
diff --git a/spec/fabricators/account_warning_preset_fabricator.rb b/spec/fabricators/account_warning_preset_fabricator.rb
deleted file mode 100644
index 7588e7f9cf..0000000000
--- a/spec/fabricators/account_warning_preset_fabricator.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-# frozen_string_literal: true
-
-Fabricator(:account_warning_preset) do
-  text 'MyText'
-end
diff --git a/spec/fabricators/admin_action_log_fabricator.rb b/spec/fabricators/admin_action_log_fabricator.rb
index eb738c01c0..a259644bdc 100644
--- a/spec/fabricators/admin_action_log_fabricator.rb
+++ b/spec/fabricators/admin_action_log_fabricator.rb
@@ -1,7 +1,7 @@
 # frozen_string_literal: true
 
 Fabricator('Admin::ActionLog') do
-  account nil
+  account
   action  'MyString'
   target  nil
 end
diff --git a/spec/fabricators/announcement_mute_fabricator.rb b/spec/fabricators/announcement_mute_fabricator.rb
deleted file mode 100644
index 109fec0412..0000000000
--- a/spec/fabricators/announcement_mute_fabricator.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-# frozen_string_literal: true
-
-Fabricator(:announcement_mute) do
-  account
-  announcement
-end
diff --git a/spec/fabricators/announcement_reaction_fabricator.rb b/spec/fabricators/announcement_reaction_fabricator.rb
deleted file mode 100644
index 5da51caaa3..0000000000
--- a/spec/fabricators/announcement_reaction_fabricator.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-# frozen_string_literal: true
-
-Fabricator(:announcement_reaction) do
-  account
-  announcement
-  name '🌿'
-end
diff --git a/spec/fabricators/conversation_account_fabricator.rb b/spec/fabricators/conversation_account_fabricator.rb
deleted file mode 100644
index f69d36855e..0000000000
--- a/spec/fabricators/conversation_account_fabricator.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-# frozen_string_literal: true
-
-Fabricator(:conversation_account) do
-  account                 nil
-  conversation            nil
-  participant_account_ids ''
-  last_status             nil
-end
diff --git a/spec/fabricators/conversation_mute_fabricator.rb b/spec/fabricators/conversation_mute_fabricator.rb
deleted file mode 100644
index 5cf4dd3d59..0000000000
--- a/spec/fabricators/conversation_mute_fabricator.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-# frozen_string_literal: true
-
-Fabricator(:conversation_mute) do
-end
diff --git a/spec/fabricators/custom_emoji_category_fabricator.rb b/spec/fabricators/custom_emoji_category_fabricator.rb
deleted file mode 100644
index 6019baba21..0000000000
--- a/spec/fabricators/custom_emoji_category_fabricator.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-# frozen_string_literal: true
-
-Fabricator(:custom_emoji_category) do
-  name 'MyString'
-end
diff --git a/spec/fabricators/encrypted_message_fabricator.rb b/spec/fabricators/encrypted_message_fabricator.rb
deleted file mode 100644
index 2898827549..0000000000
--- a/spec/fabricators/encrypted_message_fabricator.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-# frozen_string_literal: true
-
-Fabricator(:encrypted_message) do
-  device
-  from_account
-  from_device_id   { Faker::Number.number(digits: 5) }
-  type             0
-  body             ''
-  message_franking ''
-end
diff --git a/spec/fabricators/featured_tag_fabricator.rb b/spec/fabricators/featured_tag_fabricator.rb
deleted file mode 100644
index 4bfa3e924e..0000000000
--- a/spec/fabricators/featured_tag_fabricator.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-# frozen_string_literal: true
-
-Fabricator(:featured_tag) do
-  account
-  tag
-  statuses_count 1_337
-  last_status_at Time.now.utc
-end
diff --git a/spec/fabricators/follow_recommendation_suppression_fabricator.rb b/spec/fabricators/follow_recommendation_suppression_fabricator.rb
deleted file mode 100644
index 6477baee11..0000000000
--- a/spec/fabricators/follow_recommendation_suppression_fabricator.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-# frozen_string_literal: true
-
-Fabricator(:follow_recommendation_suppression) do
-  account
-end
diff --git a/spec/fabricators/identity_fabricator.rb b/spec/fabricators/identity_fabricator.rb
index b830101117..58072c0d65 100644
--- a/spec/fabricators/identity_fabricator.rb
+++ b/spec/fabricators/identity_fabricator.rb
@@ -1,7 +1,7 @@
 # frozen_string_literal: true
 
 Fabricator(:identity) do
-  user     nil
+  user
   provider 'MyString'
   uid      'MyString'
 end
diff --git a/spec/fabricators/import_fabricator.rb b/spec/fabricators/import_fabricator.rb
deleted file mode 100644
index 11602f407f..0000000000
--- a/spec/fabricators/import_fabricator.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-# frozen_string_literal: true
-
-Fabricator(:import) do
-end
diff --git a/spec/fabricators/ip_block_fabricator.rb b/spec/fabricators/ip_block_fabricator.rb
deleted file mode 100644
index a5da3f7065..0000000000
--- a/spec/fabricators/ip_block_fabricator.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-# frozen_string_literal: true
-
-Fabricator(:ip_block) do
-  ip         ''
-  severity   ''
-  expires_at '2020-10-08 22:20:37'
-  comment    'MyText'
-end
diff --git a/spec/fabricators/list_account_fabricator.rb b/spec/fabricators/list_account_fabricator.rb
deleted file mode 100644
index b0af29e6fa..0000000000
--- a/spec/fabricators/list_account_fabricator.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-# frozen_string_literal: true
-
-Fabricator(:list_account) do
-  list    nil
-  account nil
-  follow  nil
-end
diff --git a/spec/fabricators/one_time_key_fabricator.rb b/spec/fabricators/one_time_key_fabricator.rb
deleted file mode 100644
index e317c28bd1..0000000000
--- a/spec/fabricators/one_time_key_fabricator.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-# frozen_string_literal: true
-
-Fabricator(:one_time_key) do
-  device
-  key_id { Faker::Alphanumeric.alphanumeric(number: 10) }
-  key    { Base64.strict_encode64(Ed25519::SigningKey.generate.verify_key.to_bytes) }
-
-  signature do |attrs|
-    signing_key = Ed25519::SigningKey.generate
-    attrs[:device].update(fingerprint_key: Base64.strict_encode64(signing_key.verify_key.to_bytes))
-    Base64.strict_encode64(signing_key.sign(attrs[:key]))
-  end
-end
diff --git a/spec/fabricators/setting_fabricator.rb b/spec/fabricators/setting_fabricator.rb
index 336d7c3551..ce9a48e901 100644
--- a/spec/fabricators/setting_fabricator.rb
+++ b/spec/fabricators/setting_fabricator.rb
@@ -1,4 +1,5 @@
 # frozen_string_literal: true
 
 Fabricator(:setting) do
+  var 'var'
 end
diff --git a/spec/fabricators/site_upload_fabricator.rb b/spec/fabricators/site_upload_fabricator.rb
index ad1b777cc4..87553ccb8a 100644
--- a/spec/fabricators/site_upload_fabricator.rb
+++ b/spec/fabricators/site_upload_fabricator.rb
@@ -2,4 +2,5 @@
 
 Fabricator(:site_upload) do
   file { Rails.root.join('spec', 'fabricators', 'assets', 'utah_teapot.png').open }
+  var 'thumbnail'
 end
diff --git a/spec/fabricators/status_edit_fabricator.rb b/spec/fabricators/status_edit_fabricator.rb
deleted file mode 100644
index 33735a4592..0000000000
--- a/spec/fabricators/status_edit_fabricator.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-# frozen_string_literal: true
-
-Fabricator(:status_edit) do
-  status                    nil
-  account                   nil
-  text                      'MyText'
-  spoiler_text              'MyText'
-  media_attachments_changed false
-end
diff --git a/spec/fabricators/status_stat_fabricator.rb b/spec/fabricators/status_stat_fabricator.rb
deleted file mode 100644
index 8a358c51a9..0000000000
--- a/spec/fabricators/status_stat_fabricator.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-# frozen_string_literal: true
-
-Fabricator(:status_stat) do
-  status_id        nil
-  replies_count    ''
-  reblogs_count    ''
-  favourites_count ''
-end
diff --git a/spec/fabricators/unavailable_domain_fabricator.rb b/spec/fabricators/unavailable_domain_fabricator.rb
index 300a9e7a14..cb9707020a 100644
--- a/spec/fabricators/unavailable_domain_fabricator.rb
+++ b/spec/fabricators/unavailable_domain_fabricator.rb
@@ -1,5 +1,5 @@
 # frozen_string_literal: true
 
 Fabricator(:unavailable_domain) do
-  domain { Faker::Internet.domain }
+  domain { Faker::Internet.domain_name }
 end
diff --git a/spec/fabricators/user_invite_request_fabricator.rb b/spec/fabricators/user_invite_request_fabricator.rb
deleted file mode 100644
index 7736263e45..0000000000
--- a/spec/fabricators/user_invite_request_fabricator.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-# frozen_string_literal: true
-
-Fabricator(:user_invite_request) do
-  user
-  text { Faker::Lorem.sentence }
-end
diff --git a/spec/fabricators/web_setting_fabricator.rb b/spec/fabricators/web_setting_fabricator.rb
deleted file mode 100644
index 7c9f300798..0000000000
--- a/spec/fabricators/web_setting_fabricator.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-# frozen_string_literal: true
-
-Fabricator(:web_setting, from: Web::Setting) do
-end
diff --git a/spec/fabricators_spec.rb b/spec/fabricators_spec.rb
new file mode 100644
index 0000000000..3b76c56ce6
--- /dev/null
+++ b/spec/fabricators_spec.rb
@@ -0,0 +1,12 @@
+require 'rails_helper'
+
+Fabrication.manager.load_definitions if Fabrication.manager.empty?
+
+Fabrication.manager.schematics.map(&:first).each do |factory_name|
+  describe "The #{factory_name} factory" do
+    it 'is valid' do
+      factory = Fabricate(factory_name)
+      expect(factory).to be_valid
+    end
+  end
+end
diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb
index 1e5a80963f..ae4e5ee321 100644
--- a/spec/models/account_spec.rb
+++ b/spec/models/account_spec.rb
@@ -704,12 +704,6 @@ RSpec.describe Account, type: :model do
   end
 
   describe 'validations' do
-    it 'has a valid fabricator' do
-      account = Fabricate.build(:account)
-      account.valid?
-      expect(account).to be_valid
-    end
-
     it 'is invalid without a username' do
       account = Fabricate.build(:account, username: nil)
       account.valid?
diff --git a/spec/models/block_spec.rb b/spec/models/block_spec.rb
index 64c39fce60..6e31786d04 100644
--- a/spec/models/block_spec.rb
+++ b/spec/models/block_spec.rb
@@ -4,11 +4,6 @@ require 'rails_helper'
 
 RSpec.describe Block, type: :model do
   describe 'validations' do
-    it 'has a valid fabricator' do
-      block = Fabricate.build(:block)
-      expect(block).to be_valid
-    end
-
     it 'is invalid without an account' do
       block = Fabricate.build(:block, account: nil)
       block.valid?
diff --git a/spec/models/domain_block_spec.rb b/spec/models/domain_block_spec.rb
index 6a5925b896..9839ee9d4e 100644
--- a/spec/models/domain_block_spec.rb
+++ b/spec/models/domain_block_spec.rb
@@ -4,11 +4,6 @@ require 'rails_helper'
 
 RSpec.describe DomainBlock, type: :model do
   describe 'validations' do
-    it 'has a valid fabricator' do
-      domain_block = Fabricate.build(:domain_block)
-      expect(domain_block).to be_valid
-    end
-
     it 'is invalid without a domain' do
       domain_block = Fabricate.build(:domain_block, domain: nil)
       domain_block.valid?
diff --git a/spec/models/email_domain_block_spec.rb b/spec/models/email_domain_block_spec.rb
index 01a7a0f0ed..3321ffc819 100644
--- a/spec/models/email_domain_block_spec.rb
+++ b/spec/models/email_domain_block_spec.rb
@@ -3,13 +3,6 @@
 require 'rails_helper'
 
 RSpec.describe EmailDomainBlock, type: :model do
-  describe 'validations' do
-    it 'has a valid fabricator' do
-      email_domain_block = Fabricate.build(:email_domain_block)
-      expect(email_domain_block).to be_valid
-    end
-  end
-
   describe 'block?' do
     let(:input) { nil }
 
diff --git a/spec/models/follow_spec.rb b/spec/models/follow_spec.rb
index f49d585329..a9a9af88ad 100644
--- a/spec/models/follow_spec.rb
+++ b/spec/models/follow_spec.rb
@@ -9,11 +9,6 @@ RSpec.describe Follow, type: :model do
   describe 'validations' do
     subject { Follow.new(account: alice, target_account: bob, rate_limit: true) }
 
-    it 'has a valid fabricator' do
-      follow = Fabricate.build(:follow)
-      expect(follow).to be_valid
-    end
-
     it 'is invalid without an account' do
       follow = Fabricate.build(:follow, account: nil)
       follow.valid?
diff --git a/spec/models/mention_spec.rb b/spec/models/mention_spec.rb
index 3de2b4a072..044bb80cf6 100644
--- a/spec/models/mention_spec.rb
+++ b/spec/models/mention_spec.rb
@@ -4,11 +4,6 @@ require 'rails_helper'
 
 RSpec.describe Mention, type: :model do
   describe 'validations' do
-    it 'has a valid fabricator' do
-      mention = Fabricate.build(:mention)
-      expect(mention).to be_valid
-    end
-
     it 'is invalid without an account' do
       mention = Fabricate.build(:mention, account: nil)
       mention.valid?
diff --git a/spec/models/report_spec.rb b/spec/models/report_spec.rb
index d5d40a34f9..20a048c334 100644
--- a/spec/models/report_spec.rb
+++ b/spec/models/report_spec.rb
@@ -121,12 +121,6 @@ describe Report do
   end
 
   describe 'validations' do
-    it 'has a valid fabricator' do
-      report = Fabricate(:report)
-      report.valid?
-      expect(report).to be_valid
-    end
-
     it 'is invalid if comment is longer than 1000 characters' do
       report = Fabricate.build(:report, comment: Faker::Lorem.characters(number: 1001))
       report.valid?
-- 
GitLab