# frozen_string_literal: true RSpec.describe "Discobot welcome post" do let(:user) { Fabricate(:user) } before { SiteSetting.discourse_narrative_bot_enabled = true } context "when discourse_narrative_bot_welcome_post_delay is 0" do it "should not delay the welcome post" do user expect { sign_in(user) }.to_not change { Jobs::NarrativeInit.jobs.count } end end context "when discourse_narrative_bot_welcome_post_delay is greater than 0" do before { SiteSetting.discourse_narrative_bot_welcome_post_delay = 5 } context "when user logs in normally" do it "should delay the welcome post until user logs in" do expect { sign_in(user) }.to change { Jobs::NarrativeInit.jobs.count }.by(1) expect(Jobs::NarrativeInit.jobs.first["args"].first["user_id"]).to eq(user.id) end end context "when user redeems an invite" do let!(:invite) do Fabricate(:invite, invited_by: Fabricate(:admin), email: "testing@gmail.com") end it "should delay the welcome post until the user logs in" do expect do put "/invites/show/#{invite.invite_key}.json", params: { username: "somename", name: "testing", password: "verystrongpassword", email_token: invite.email_token, } end.to change { User.count }.by(1) expect(Jobs::NarrativeInit.jobs.first["args"].first["user_id"]).to eq(User.last.id) end end end context "when user is staged" do let(:staged_user) { Fabricate(:user, staged: true) } before { SiteSetting.discourse_narrative_bot_welcome_post_type = "welcome_message" } it "should not send welcome message" do expect { staged_user }.to_not change { Jobs::SendDefaultWelcomeMessage.jobs.count } end end end