mirror of
https://github.com/discourse/discourse.git
synced 2024-11-24 03:42:16 +08:00
4ea21fa2d0
This change both speeds up specs (less strings to allocate) and helps catch cases where methods in Discourse are mutating inputs. Overall we will be migrating everything to use #frozen_string_literal: true it will take a while, but this is the first and safest move in this direction
41 lines
1.3 KiB
Ruby
41 lines
1.3 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'rails_helper'
|
|
|
|
describe Jobs::ActivationReminderEmails do
|
|
before { Jobs.run_immediately! }
|
|
|
|
# should be between 2 and 3 days
|
|
let(:created_at) { 50.hours.ago }
|
|
|
|
it 'should email inactive users' do
|
|
user = Fabricate(:user, active: false, created_at: created_at)
|
|
|
|
expect { described_class.new.execute({}) }
|
|
.to change { ActionMailer::Base.deliveries.size }.by(1)
|
|
.and change { user.email_tokens.count }.by(1)
|
|
|
|
expect(user.custom_fields['activation_reminder']).to eq("t")
|
|
expect { described_class.new.execute({}) }.to change { ActionMailer::Base.deliveries.size }.by(0)
|
|
|
|
user.activate
|
|
expect(user.reload.custom_fields['activation_reminder']).to eq(nil)
|
|
end
|
|
|
|
it 'should not email active users' do
|
|
user = Fabricate(:user, active: true, created_at: created_at)
|
|
|
|
expect { described_class.new.execute({}) }
|
|
.to change { ActionMailer::Base.deliveries.size }.by(0)
|
|
.and change { user.email_tokens.count }.by(0)
|
|
end
|
|
|
|
it 'should not email staged users' do
|
|
user = Fabricate(:user, active: false, staged: true, created_at: created_at)
|
|
|
|
expect { described_class.new.execute({}) }
|
|
.to change { ActionMailer::Base.deliveries.size }.by(0)
|
|
.and change { user.email_tokens.count }.by(0)
|
|
end
|
|
end
|