mirror of
https://github.com/discourse/discourse.git
synced 2024-11-24 10:29:35 +08:00
fb19ee9eee
It was used both when inviting from a topic page and when creating invites with "Send to topic on first login", while it should be used only in the former case.
41 lines
1.2 KiB
Ruby
41 lines
1.2 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'rails_helper'
|
|
|
|
describe Jobs::InviteEmail do
|
|
|
|
context '.execute' do
|
|
|
|
it 'raises an error when the invite_id is missing' do
|
|
expect { Jobs::InviteEmail.new.execute({}) }.to raise_error(Discourse::InvalidParameters)
|
|
end
|
|
|
|
context 'with an invite id' do
|
|
|
|
let (:mailer) { Mail::Message.new(to: 'eviltrout@test.domain') }
|
|
fab!(:invite) { Fabricate(:invite) }
|
|
|
|
it 'delegates to the test mailer' do
|
|
Email::Sender.any_instance.expects(:send)
|
|
InviteMailer.expects(:send_invite).with(invite, anything).returns(mailer)
|
|
Jobs::InviteEmail.new.execute(invite_id: invite.id)
|
|
end
|
|
|
|
it "aborts without error when the invite doesn't exist anymore" do
|
|
invite.destroy
|
|
InviteMailer.expects(:send_invite).never
|
|
Jobs::InviteEmail.new.execute(invite_id: invite.id)
|
|
end
|
|
|
|
it "updates invite emailed_status" do
|
|
invite.emailed_status = Invite.emailed_status_types[:pending]
|
|
invite.save!
|
|
Jobs::InviteEmail.new.execute(invite_id: invite.id)
|
|
|
|
invite.reload
|
|
expect(invite.emailed_status).to eq(Invite.emailed_status_types[:sent])
|
|
end
|
|
end
|
|
end
|
|
end
|