Add a rake task running job & test for job

This commit is contained in:
Alex Sherman 2021-07-01 16:00:35 +05:00
parent e110924968
commit 5f0c031410
8 changed files with 92 additions and 105 deletions

View file

@ -4,9 +4,6 @@ class VerifyEmailsJobTest < ActiveJob::TestCase
def setup
@contact = contacts(:john)
@invalid_contact = contacts(:invalid_email)
@contact_verification = @contact.email_verification
@invalid_contact_verification = @invalid_contact.email_verification
@default_whitelist = Truemail.configure.whitelisted_domains
@default_blacklist = Truemail.configure.blacklisted_domains
Truemail.configure.whitelisted_domains = whitelisted_domains
@ -33,33 +30,21 @@ class VerifyEmailsJobTest < ActiveJob::TestCase
end
def test_job_checks_if_email_valid
perform_enqueued_jobs do
VerifyEmailsJob.perform_now(@contact_verification.id)
assert_difference 'ValidationEvent.successful.count', 1 do
perform_enqueued_jobs do
VerifyEmailsJob.perform_now(contact_id: @contact.id, check_level: 'regex')
end
end
@contact_verification.reload
assert @contact_verification.success
end
def test_job_checks_does_not_run_if_recent
old_verified_at = Time.zone.now - 10.days
@contact_verification.update(success: true, verified_at: old_verified_at)
assert @contact_verification.recently_verified?
perform_enqueued_jobs do
VerifyEmailsJob.perform_now(@contact_verification.id)
end
@contact_verification.reload
assert_in_delta @contact_verification.verified_at.to_i, old_verified_at.to_i, 1
assert ValidationEvent.validated_ids_by(Contact).include? @contact.id
end
def test_job_checks_if_email_invalid
perform_enqueued_jobs do
VerifyEmailsJob.perform_now(@invalid_contact_verification.id)
VerifyEmailsJob.perform_now(contact_id: @invalid_contact.id, check_level: 'regex')
end
@contact_verification.reload
@invalid_contact.reload
refute @contact_verification.success
refute @invalid_contact.validation_events.last.success
refute ValidationEvent.validated_ids_by(Contact).include? @invalid_contact.id
end
end

View file

@ -5,8 +5,6 @@ class VerifyEmailTaskTest < ActiveJob::TestCase
def setup
@contact = contacts(:john)
@invalid_contact = contacts(:invalid_email)
@contact_verification = @contact.email_verification
@invalid_contact_verification = @invalid_contact.email_verification
@default_whitelist = Truemail.configure.whitelisted_domains
@default_blacklist = Truemail.configure.blacklisted_domains
@ -36,32 +34,15 @@ class VerifyEmailTaskTest < ActiveJob::TestCase
def test_tasks_verifies_emails
capture_io { run_task }
@contact_verification.reload
@invalid_contact_verification.reload
assert @contact_verification.verified?
assert @invalid_contact_verification.failed?
end
def test_domain_task_verifies_for_one_domain
capture_io { run_single_domain_task(@contact_verification.domain) }
@contact_verification.reload
@invalid_contact_verification.reload
assert @contact_verification.verified?
assert @invalid_contact_verification.not_verified?
assert ValidationEvent.validated_ids_by(Contact).include? @contact.id
assert @contact.validation_events.last.success
refute @invalid_contact.validation_events.last.success
refute ValidationEvent.validated_ids_by(Contact).include? @invalid_contact.id
end
def run_task
perform_enqueued_jobs do
Rake::Task['verify_email:all_domains'].execute
end
end
def run_single_domain_task(domain)
perform_enqueued_jobs do
Rake::Task["verify_email:domain"].invoke(domain)
Rake::Task['verify_email:check_all'].execute
end
end
end