0
0
Fork 1
Spiegel von https://github.com/paviliondev/discourse-custom-wizard.git synchronisiert 2024-10-18 20:02:38 +02:00
discourse-custom-wizard/spec/jobs/set_after_time_wizard_spec.rb

80 Zeilen
2,6 KiB
Ruby

# frozen_string_literal: true
describe Jobs::SetAfterTimeWizard do
fab!(:user1) { Fabricate(:user) }
fab!(:user2) { Fabricate(:user, trust_level: TrustLevel[3]) }
fab!(:user3) { Fabricate(:user, admin: true) }
let(:template) { get_wizard_fixture("wizard") }
let(:permitted_json) { get_wizard_fixture("wizard/permitted") }
before do
@after_time_template = template.dup
@after_time_template["after_time"] = true
@after_time_template["after_time_scheduled"] = (Time.now + 3.hours).iso8601
CustomWizard::Template.save(@after_time_template)
end
it "sets wizard redirect for all users " do
messages = MessageBus.track_publish("/redirect_to_wizard") do
described_class.new.execute(wizard_id: 'super_mega_fun_wizard')
end
expect(messages.first.data).to eq("super_mega_fun_wizard")
expect(messages.first.user_ids).to match_array([user1.id, user2.id, user3.id])
expect(
UserCustomField.where(
name: 'redirect_to_wizard',
value: 'super_mega_fun_wizard'
).length
).to eq(3)
end
context "when permitted is set" do
before do
enable_subscription("business")
@after_time_template["permitted"] = permitted_json["permitted"]
CustomWizard::Template.save(@after_time_template.as_json)
end
it "only redirects users in the group" do
messages = MessageBus.track_publish("/redirect_to_wizard") do
described_class.new.execute(wizard_id: 'super_mega_fun_wizard')
end
expect(messages.first.data).to eq("super_mega_fun_wizard")
expect(messages.first.user_ids).to match_array([user2.id])
expect(
UserCustomField.where(
name: 'redirect_to_wizard',
value: 'super_mega_fun_wizard'
).length
).to eq(1)
end
end
context "when user has completed the wizard" do
before do
@after_time_template[:steps].each do |step|
CustomWizard::UserHistory.create!(
action: CustomWizard::UserHistory.actions[:step],
actor_id: user1.id,
context: @after_time_template[:id],
subject: step[:id]
)
end
end
it "does not redirect to user" do
messages = MessageBus.track_publish("/redirect_to_wizard") do
described_class.new.execute(wizard_id: 'super_mega_fun_wizard')
end
expect(messages.first.data).to eq("super_mega_fun_wizard")
expect(messages.first.user_ids).to match_array([user2.id, user3.id])
expect(
UserCustomField.where(
name: 'redirect_to_wizard',
value: 'super_mega_fun_wizard'
).length
).to eq(2)
end
end
end