# frozen_string_literal: true Fabricator(:topic) do user title { sequence(:title) { |i| "This is a test topic #{i}" } } category_id do |attrs| attrs[:category] ? attrs[:category].id : SiteSetting.uncategorized_category_id end end Fabricator(:deleted_topic, from: :topic) { deleted_at { 1.minute.ago } } Fabricator(:closed_topic, from: :topic) { closed true } Fabricator(:banner_topic, from: :topic) { archetype Archetype.banner } Fabricator(:private_message_topic, from: :topic) do transient :recipient category_id { nil } title { sequence(:title) { |i| "This is a private message #{i}" } } archetype "private_message" topic_allowed_users do |t| [ Fabricate.build(:topic_allowed_user, user: t[:user]), Fabricate.build(:topic_allowed_user, user: t[:recipient] || Fabricate(:user)), ] end end Fabricator(:group_private_message_topic, from: :topic) do transient :recipient_group category_id { nil } title { sequence(:title) { |i| "This is a private message #{i} to a group" } } archetype "private_message" topic_allowed_users { |t| [Fabricate.build(:topic_allowed_user, user: t[:user])] } topic_allowed_groups { |t| [Fabricate.build(:topic_allowed_group, group: t[:recipient_group])] } end Fabricator(:new_reply_topic, from: :topic) do transient count: 1 transient :current_user before_create do |topic, transient| if !transient[:current_user] raise "new_reply_topic fabricator requires the `current_user` param" end end after_create do |topic, transient| Fabricate.times(transient[:count] + 1, :post, topic: topic) TopicUser.change( transient[:current_user].id, topic.id, notification_level: TopicUser.notification_levels[:tracking], ) TopicUser.update_last_read(transient[:current_user], topic.id, 1, 1, 1) end end Fabricator(:read_topic, from: :topic) do transient :current_user before_create do |topic, transient| raise "read_topic fabricator requires the `current_user` param" if !transient[:current_user] end after_create do |topic, transient| Fabricate(:post, topic: topic) TopicUser.update_last_read(transient[:current_user], topic.id, 1, 1, 1) end end