0
0
Fork 0
mirror of https://github.com/discourse/discourse.git synced 2026-08-08 17:53:55 +08:00
discourse/spec/fabricators/topic_fabricator.rb
Martin Brennan 8295113dc9
UX: More Zoom livestream UI issues (#41824)
* Do not show the direct Zoom link when the livestream
is enabled for the event, we want to keep people on the
Discourse site

<img width="942" height="637" alt="image"
src="https://github.com/user-attachments/assets/6267ce8d-7848-4a7d-8769-78f82dd87417"
/>

* Prompt anonymous users to log in when Join Zoom is clicked
2026-07-27 15:31:41 +10:00

86 lines
2.5 KiB
Ruby
Vendored

# 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(:topic_with_op, from: :topic) do
transient :raw
after_create do |topic, transient|
if transient[:raw].present?
Fabricate(:post, topic: topic, raw: transient[:raw])
else
Fabricate(:post, topic: topic)
end
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(:system_message_topic, from: :private_message_topic) do
subtype TopicSubtype.system_message
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