discourse/plugins/discourse-narrative-bot/spec/requests/discobot_welcome_post_spec.rb
Sam Saffron 30990006a9 DEV: enable frozen string literal on all files
This reduces chances of errors where consumers of strings mutate inputs
and reduces memory usage of the app.

Test suite passes now, but there may be some stuff left, so we will run
a few sites on a branch prior to merging
2019-05-13 09:31:32 +08:00

62 lines
1.8 KiB
Ruby

# frozen_string_literal: true
require 'rails_helper'
describe "Discobot welcome post" do
let(:user) { Fabricate(:user) }
before do
SiteSetting.discourse_narrative_bot_enabled = true
end
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 do
SiteSetting.discourse_narrative_bot_welcome_post_delay = 5
end
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) { Fabricate(:invite, invited_by: Fabricate(:admin), email: 'testing@gmail.com') }
it 'should delay the welcome post until the user logs in' do
invite
expect do
put "/invites/show/#{invite.invite_key}.json", params: {
username: 'somename',
name: 'testing',
password: 'asodaasdaosdhq'
}
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 do
SiteSetting.discourse_narrative_bot_welcome_post_type = 'welcome_message'
end
it 'should not send welcome message' do
expect { staged_user }.to_not change { Jobs::SendDefaultWelcomeMessage.jobs.count }
end
end
end