Spiegel von
https://github.com/paviliondev/discourse-custom-wizard.git
synchronisiert 2024-11-24 02:10:29 +01:00
97 Zeilen
3,4 KiB
Ruby
97 Zeilen
3,4 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 after_time_groups is set" do
|
|
fab!(:group1) { Fabricate(:group) }
|
|
fab!(:group_user) { Fabricate(:group_user, group: group1, user: user2) }
|
|
|
|
before do
|
|
enable_subscription("business")
|
|
@after_time_template["after_time_groups"] = [group1.name]
|
|
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
|