discourse/plugins/automation/spec/scripts/append_last_edited_by_spec.rb

72 lines
2.1 KiB
Ruby

# frozen_string_literal: true
describe "AppendLastEditedBy" do
fab!(:post) { Fabricate(:post, raw: "this is a post with no edit") }
fab!(:moderator)
fab!(:automation) do
Fabricate(:automation, script: DiscourseAutomation::Scripts::APPEND_LAST_EDITED_BY)
end
def trigger_automation(post)
cooked = automation.trigger!("post" => post, "cooked" => post.cooked)
updated_at = post.updated_at
date_time = updated_at.strftime("%Y-%m-%dT%H:%M:%SZ")
[cooked, updated_at]
end
describe "#trigger!" do
it "works for newly created post" do
freeze_time
cooked, updated_at = trigger_automation(post)
expect(
cooked.include?(
PrettyText.cook(
I18n.t(
"discourse_automation.scriptables.append_last_edited_by.text",
username: post.user.username,
date_time:
"[date=#{updated_at.to_date} time=#{updated_at.strftime("%H:%M:%S")} timezone=UTC]",
),
),
),
).to be_truthy
end
it "works for existing post with last edited by detail" do
freeze_time
cooked, updated_at = trigger_automation(post)
expect(
cooked.include?(
PrettyText.cook(
I18n.t(
"discourse_automation.scriptables.append_last_edited_by.text",
username: post.user.username,
date_time:
"[date=#{updated_at.to_date} time=#{updated_at.strftime("%H:%M:%S")} timezone=UTC]",
),
),
),
).to be_truthy
PostRevisor.new(post).revise!(moderator, raw: "this is a post with edit")
cooked, updated_at = trigger_automation(post.reload)
expect(
cooked.include?(
PrettyText.cook(
I18n.t(
"discourse_automation.scriptables.append_last_edited_by.text",
username: moderator.username,
date_time:
"[date=#{updated_at.to_date} time=#{updated_at.strftime("%H:%M:%S")} timezone=UTC]",
),
),
),
).to be_truthy
end
end
end