73 lines
2.5 KiB
Ruby
73 lines
2.5 KiB
Ruby
# frozen_string_literal: true
|
||
|
||
describe "TopicRequiredWords" do
|
||
fab!(:user)
|
||
fab!(:category) { Fabricate(:category, user: user) }
|
||
fab!(:topic) { Fabricate(:topic, category: category) }
|
||
fab!(:automation) do
|
||
Fabricate(
|
||
:automation,
|
||
script: DiscourseAutomation::Scripts::TOPIC_REQUIRED_WORDS,
|
||
trigger: DiscourseAutomation::Triggers::TOPIC,
|
||
)
|
||
end
|
||
|
||
before do
|
||
SiteSetting.discourse_automation_enabled = true
|
||
topic.upsert_custom_fields(discourse_automation_ids: automation.id)
|
||
automation.upsert_field!("words", "text_list", { value: %w[#foo #bar] })
|
||
end
|
||
|
||
describe "editing/creating a post" do
|
||
before do
|
||
automation.upsert_field!("restricted_topic", "text", { value: topic.id }, target: "trigger")
|
||
end
|
||
|
||
context "when topic has a topic_required_words automation associated" do
|
||
context "when post has at least a required word" do
|
||
it "validates the post" do
|
||
post_creator = PostCreator.new(user, topic_id: topic.id, raw: "this is quite cool #foo")
|
||
post = post_creator.create
|
||
expect(post.valid?).to be(true)
|
||
end
|
||
end
|
||
|
||
context "when post has no required word" do
|
||
it "doesn’t validate the post" do
|
||
post_creator = PostCreator.new(user, topic_id: topic.id, raw: "this is quite cool")
|
||
post = post_creator.create
|
||
expect(post.valid?).to be(false)
|
||
end
|
||
end
|
||
end
|
||
|
||
context "when topic has no topic_required_words automation associated" do
|
||
context "when post has no required word" do
|
||
it "validates the post" do
|
||
no_automation_topic = create_topic(category: category)
|
||
post_creator =
|
||
PostCreator.new(user, topic_id: no_automation_topic.id, raw: "this is quite cool")
|
||
post = post_creator.create
|
||
expect(post.valid?).to be(true)
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
describe "moving posts" do
|
||
fab!(:admin)
|
||
fab!(:first_post) { Fabricate(:post, topic: topic, raw: "this is quite cool #foo") }
|
||
fab!(:post) { Fabricate(:post, topic: topic, raw: "this is quite cool #bar") }
|
||
fab!(:destination_topic) { Fabricate(:post).topic }
|
||
|
||
it "works" do
|
||
expect do
|
||
topic.move_posts(admin, [post.id], destination_topic_id: destination_topic.id)
|
||
end.to_not raise_error
|
||
|
||
expect(topic.posts.where(post_type: Post.types[:regular]).size).to eq(1)
|
||
expect(destination_topic.posts.where(post_type: Post.types[:regular]).size).to eq(2)
|
||
end
|
||
end
|
||
end
|