# frozen_string_literal: true require 'rails_helper' describe UserActivator do describe 'email_activator' do it 'does not create new email token unless required' do SiteSetting.email_token_valid_hours = 24 user = Fabricate(:user) activator = EmailActivator.new(user, nil, nil, nil) expect_enqueued_with(job: :critical_user_email, args: { type: :signup, email_token: user.email_tokens.first.token }) do activator.activate end end it 'creates and send new email token if the existing token expired' do now = freeze_time SiteSetting.email_token_valid_hours = 24 user = Fabricate(:user) email_token = user.email_tokens.first email_token.update_column(:created_at, 48.hours.ago) activator = EmailActivator.new(user, nil, nil, nil) expect_not_enqueued_with(job: :critical_user_email, args: { type: :signup, user_id: user.id, email_token: email_token.token }) do activator.activate end email_token = user.reload.email_tokens.last expect(job_enqueued?(job: :critical_user_email, args: { type: :signup, user_id: user.id, email_token: email_token.token })).to eq(true) expect(email_token.created_at).to eq_time(now) end end end