2019-04-30 08:27:42 +08:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2013-02-06 03:16:51 +08:00
|
|
|
Fabricator(:topic) do
|
|
|
|
user
|
2013-03-11 21:51:24 +08:00
|
|
|
title { sequence(:title) { |i| "This is a test topic #{i}" } }
|
2018-06-05 15:29:17 +08:00
|
|
|
category_id do |attrs|
|
|
|
|
attrs[:category] ? attrs[:category].id : SiteSetting.uncategorized_category_id
|
|
|
|
end
|
2013-02-06 03:16:51 +08:00
|
|
|
end
|
|
|
|
|
2013-02-17 04:57:16 +08:00
|
|
|
Fabricator(:deleted_topic, from: :topic) { deleted_at { 1.minute.ago } }
|
|
|
|
|
2016-09-10 00:15:56 +08:00
|
|
|
Fabricator(:closed_topic, from: :topic) { closed true }
|
|
|
|
|
2014-06-17 01:21:21 +08:00
|
|
|
Fabricator(:banner_topic, from: :topic) { archetype Archetype.banner }
|
|
|
|
|
2013-02-26 00:42:20 +08:00
|
|
|
Fabricator(:private_message_topic, from: :topic) do
|
2020-09-14 19:07:35 +08:00
|
|
|
transient :recipient
|
2014-09-11 15:39:20 +08:00
|
|
|
category_id { nil }
|
2013-03-11 21:51:24 +08:00
|
|
|
title { sequence(:title) { |i| "This is a private message #{i}" } }
|
2013-02-06 03:16:51 +08:00
|
|
|
archetype "private_message"
|
2013-02-26 00:42:20 +08:00
|
|
|
topic_allowed_users do |t|
|
|
|
|
[
|
2017-04-27 11:53:53 +08:00
|
|
|
Fabricate.build(:topic_allowed_user, user: t[:user]),
|
2020-09-14 19:07:35 +08:00
|
|
|
Fabricate.build(:topic_allowed_user, user: t[:recipient] || Fabricate(:user)),
|
2013-02-06 03:16:51 +08:00
|
|
|
]
|
2023-01-09 19:18:21 +08:00
|
|
|
end
|
2013-02-06 03:16:51 +08:00
|
|
|
end
|
2024-06-03 12:37:28 +08:00
|
|
|
|
|
|
|
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
|
2024-06-25 19:00:13 +08:00
|
|
|
|
|
|
|
Fabricator(:new_reply_topic, from: :topic) do
|
2024-06-25 19:47:53 +08:00
|
|
|
transient count: 1
|
2024-06-25 19:00:13 +08:00
|
|
|
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|
|
2024-06-25 19:47:53 +08:00
|
|
|
Fabricate.times(transient[:count] + 1, :post, topic: topic)
|
2024-06-25 19:00:13 +08:00
|
|
|
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
|
2024-06-25 19:47:53 +08:00
|
|
|
|
|
|
|
Fabricator(:read_topic, from: :topic) do
|
|
|
|
transient :current_user
|
|
|
|
|
|
|
|
before_create do |topic, transient|
|
2024-06-27 02:04:33 +08:00
|
|
|
raise "read_topic fabricator requires the `current_user` param" if !transient[:current_user]
|
2024-06-25 19:47:53 +08:00
|
|
|
end
|
|
|
|
|
|
|
|
after_create do |topic, transient|
|
|
|
|
Fabricate(:post, topic: topic)
|
|
|
|
TopicUser.update_last_read(transient[:current_user], topic.id, 1, 1, 1)
|
|
|
|
end
|
|
|
|
end
|