You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
2.8 KiB
69 lines
2.8 KiB
2 years ago
|
require "rails_helper"
|
||
|
require "rake"
|
||
|
|
||
|
RSpec.describe "emails" do
|
||
|
describe ":resend_invitation_emails", type: :task do
|
||
|
subject(:task) { Rake::Task["emails:resend_invitation_emails"] }
|
||
|
|
||
|
let(:notify_client) { instance_double(Notifications::Client) }
|
||
|
let(:devise_notify_mailer) { DeviseNotifyMailer.new }
|
||
|
let(:resend_invitation_mailer) { ResendInvitationMailer.new }
|
||
|
let(:resend_invitation_email) { { deliver_later: nil } }
|
||
|
|
||
|
before do
|
||
|
allow(ResendInvitationMailer).to receive(:new).and_return(resend_invitation_mailer)
|
||
|
allow(resend_invitation_mailer).to receive(:resend_invitation_email).and_return(resend_invitation_email)
|
||
|
organisation.users.destroy_all
|
||
|
Rake.application.rake_require("tasks/resend_invitation_emails")
|
||
|
Rake::Task.define_task(:environment)
|
||
|
task.reenable
|
||
|
end
|
||
|
|
||
|
context "when the rake task is run" do
|
||
|
let(:organisation) { create(:organisation, name: "test organisation") }
|
||
|
let!(:active_user) { create(:user, name: "active user", email: "active_user@example.com", organisation:, confirmation_token: "ghi", initial_confirmation_sent: true, old_user_id: "234", sign_in_count: 0) }
|
||
|
let!(:inactive_user) { create(:user, name: "inactive user", email: "inactive_user@example.com", organisation:, confirmation_token: "jkl", initial_confirmation_sent: true, old_user_id: "345", active: false, sign_in_count: 0) }
|
||
|
let!(:logged_in_user) { create(:user, name: "logged in user", email: "logged_in_user@example.com", organisation:, confirmation_token: "mno", initial_confirmation_sent: true, old_user_id: "456", sign_in_count: 1) }
|
||
|
|
||
|
context "with active user" do
|
||
|
it "sends an invitation" do
|
||
|
expect { task.invoke }.to enqueue_job(ActionMailer::MailDeliveryJob).with(
|
||
|
"ResendInvitationMailer",
|
||
|
"resend_invitation_email",
|
||
|
"deliver_now",
|
||
|
args: [active_user],
|
||
|
)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
context "with inactive user" do
|
||
|
it "does not send an invitation" do
|
||
|
expect { task.invoke }.not_to enqueue_job(ActionMailer::MailDeliveryJob).with(
|
||
|
"ResendInvitationMailer",
|
||
|
"resend_invitation_email",
|
||
|
"deliver_now",
|
||
|
args: [inactive_user],
|
||
|
)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
context "with logged in user" do
|
||
|
it "does not send an invitation" do
|
||
|
expect { task.invoke }.not_to enqueue_job(ActionMailer::MailDeliveryJob).with(
|
||
|
"ResendInvitationMailer",
|
||
|
"resend_invitation_email",
|
||
|
"deliver_now",
|
||
|
args: [logged_in_user],
|
||
|
)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
it "prints out the total number of invitations sent" do
|
||
|
expect(Rails.logger).to receive(:info).with(nil)
|
||
|
expect(Rails.logger).to receive(:info).with("Sent invitation emails to 1 user.")
|
||
|
task.invoke
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|