From cb9479994f85324893ccce48284acae48860149d Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Wed, 3 Apr 2019 15:57:38 +0300 Subject: [PATCH] Convert specs to tests --- ...egistrant_change_confirm_email_job_spec.rb | 43 ---- spec/mailers/registrant_change_mailer_spec.rb | 210 ------------------ ...egistrant_change_confirm_email_job_test.rb | 18 ++ test/mailers/registrant_change_mailer_test.rb | 84 +++++++ 4 files changed, 102 insertions(+), 253 deletions(-) delete mode 100644 spec/jobs/registrant_change_confirm_email_job_spec.rb delete mode 100644 spec/mailers/registrant_change_mailer_spec.rb create mode 100644 test/jobs/registrant_change_confirm_email_job_test.rb create mode 100644 test/mailers/registrant_change_mailer_test.rb diff --git a/spec/jobs/registrant_change_confirm_email_job_spec.rb b/spec/jobs/registrant_change_confirm_email_job_spec.rb deleted file mode 100644 index ea8eb1096..000000000 --- a/spec/jobs/registrant_change_confirm_email_job_spec.rb +++ /dev/null @@ -1,43 +0,0 @@ -require 'rails_helper' - -RSpec.describe RegistrantChangeConfirmEmailJob do - describe '#run' do - let(:domain) { instance_double(Domain) } - let(:message) { instance_double(ActionMailer::MessageDelivery) } - - before :example do - expect(Domain).to receive(:find).and_return(domain) - expect(Registrant).to receive(:find).and_return('new registrant') - allow(domain).to receive_messages( - id: 1, - name: 'test.com', - registrant_email: 'registrant@test.com', - registrar: 'registrar', - registrant: 'registrant') - end - - after :example do - domain_id = 1 - new_registrant_id = 1 - described_class.enqueue(domain_id, new_registrant_id) - end - - it 'creates log record' do - log_message = 'Send RegistrantChangeMailer#confirm email for domain test.com (#1) to registrant@test.com' - - allow(RegistrantChangeMailer).to receive(:confirm).and_return(message) - allow(message).to receive(:deliver_now) - - expect(Rails.logger).to receive(:info).with(log_message) - end - - it 'sends email' do - expect(RegistrantChangeMailer).to receive(:confirm).with(domain: domain, - registrar: 'registrar', - current_registrant: 'registrant', - new_registrant: 'new registrant') - .and_return(message) - expect(message).to receive(:deliver_now) - end - end -end diff --git a/spec/mailers/registrant_change_mailer_spec.rb b/spec/mailers/registrant_change_mailer_spec.rb deleted file mode 100644 index e38cde83d..000000000 --- a/spec/mailers/registrant_change_mailer_spec.rb +++ /dev/null @@ -1,210 +0,0 @@ -require 'rails_helper' - -RSpec.describe RegistrantChangeMailer do - describe '#confirm' do - let(:domain) { instance_spy(Domain, name: 'test.com') } - let(:registrar) { instance_spy(Registrar) } - let(:current_registrant) { instance_spy(Registrant, email: 'registrant@test.com') } - let(:new_registrant) { instance_spy(Registrant) } - - let(:domain_presenter) { instance_spy(DomainPresenter) } - let(:registrar_presenter) { instance_spy(RegistrarPresenter) } - let(:new_registrant_presenter) { instance_spy(RegistrantPresenter) } - - subject(:message) { described_class.confirm(domain: domain, - registrar: registrar, - current_registrant: current_registrant, - new_registrant: new_registrant) - } - - before :example do - expect(DomainPresenter).to receive(:new).and_return(domain_presenter) - expect(RegistrarPresenter).to receive(:new).and_return(registrar_presenter) - expect(RegistrantPresenter).to receive(:new).and_return(new_registrant_presenter) - end - - it 'has sender' do - expect(message.from).to eq(['noreply@internet.ee']) - end - - it 'has current registrant\s email as a recipient' do - expect(message.to).to match_array(['registrant@test.com']) - end - - it 'has subject' do - subject = 'Kinnitustaotlus domeeni test.com registreerija vahetuseks' \ - ' / Application for approval for registrant change of test.com' - - expect(message.subject).to eq(subject) - end - - it 'has confirmation url' do - allow(domain).to receive(:id).and_return(1) - expect(domain).to receive(:registrant_verification_token).and_return('test') - url = registrant_domain_update_confirm_url(domain, token: 'test') - expect(message.body.parts.first.decoded).to include(url) - end - - it 'sends message' do - expect { message.deliver_now }.to change { ActionMailer::Base.deliveries.count }.by(1) - end - end - - describe '#notice' do - let(:domain) { instance_spy(Domain, name: 'test.com') } - let(:registrar) { instance_spy(Registrar) } - let(:current_registrant) { instance_spy(Registrant) } - let(:new_registrant) { instance_spy(Registrant, email: 'registrant@test.com') } - - let(:domain_presenter) { instance_spy(DomainPresenter) } - let(:registrar_presenter) { instance_spy(RegistrarPresenter) } - let(:current_registrant_presenter) { instance_spy(RegistrantPresenter) } - let(:new_registrant_presenter) { instance_spy(RegistrantPresenter) } - - subject(:message) { described_class.notice(domain: domain, - registrar: registrar, - current_registrant: current_registrant, - new_registrant: new_registrant) - } - - before :example do - expect(DomainPresenter).to receive(:new).and_return(domain_presenter) - expect(RegistrarPresenter).to receive(:new).and_return(registrar_presenter) - expect(RegistrantPresenter).to receive(:new).with(registrant: current_registrant, view: anything).and_return(current_registrant_presenter) - expect(RegistrantPresenter).to receive(:new).with(registrant: new_registrant, view: anything).and_return(new_registrant_presenter) - end - - it 'has sender' do - expect(message.from).to eq(['noreply@internet.ee']) - end - - it 'has new registrant\s email as a recipient' do - expect(message.to).to match_array(['registrant@test.com']) - end - - it 'has subject' do - subject = 'Domeeni test.com registreerija vahetus protseduur on algatatud' \ - ' / test.com registrant change' - - expect(message.subject).to eq(subject) - end - - it 'sends message' do - expect { message.deliver_now }.to change { ActionMailer::Base.deliveries.count }.by(1) - end - end - - describe '#confirmed' do - let(:domain) { instance_spy(Domain, registrant_email: 'new.registrant@test.com') } - let(:old_registrant) { instance_spy(Registrant, email: 'old.registrant@test.com') } - let(:registrant_presenter) { instance_spy(RegistrantPresenter) } - let(:domain_presenter) { instance_spy(DomainPresenter) } - subject(:message) { described_class.confirmed(domain: domain, old_registrant: old_registrant) } - - before :example do - allow(RegistrantPresenter).to receive(:new).and_return(registrant_presenter) - allow(DomainPresenter).to receive(:new).and_return(domain_presenter) - end - - it 'has sender' do - expect(message.from).to eq(['noreply@internet.ee']) - end - - it 'has new registrant email as a recipient' do - expect(message.to).to include('new.registrant@test.com') - end - - it 'has old registrant email as a recipient' do - expect(message.to).to include('old.registrant@test.com') - end - - it 'has subject' do - allow(domain).to receive(:name).and_return('test.com') - expect(message.subject).to eq(t('registrant_change_mailer.confirmed.subject', domain_name: 'test.com')) - end - - it 'sends message' do - expect { message.deliver_now }.to change { ActionMailer::Base.deliveries.count }.by(1) - end - end - - describe '#rejected' do - let(:domain) { instance_spy(Domain, name: 'test.com', new_registrant_email: 'new.registrant@test.com') } - let(:registrar) { instance_spy(Registrar) } - let(:registrant) { instance_spy(Registrant) } - - let(:domain_presenter) { instance_spy(DomainPresenter) } - let(:registrar_presenter) { instance_spy(RegistrarPresenter) } - let(:registrant_presenter) { instance_spy(RegistrantPresenter) } - - subject(:message) { described_class.rejected(domain: domain, - registrar: registrar, - registrant: registrant) - } - - before :example do - expect(DomainPresenter).to receive(:new).and_return(domain_presenter) - expect(RegistrarPresenter).to receive(:new).and_return(registrar_presenter) - expect(RegistrantPresenter).to receive(:new).and_return(registrant_presenter) - end - - it 'has sender' do - expect(message.from).to eq(['noreply@internet.ee']) - end - - it 'has new registrant\s email as a recipient' do - expect(message.to).to match_array(['new.registrant@test.com']) - end - - it 'has subject' do - subject = 'Domeeni test.com registreerija vahetuse taotlus tagasi lükatud' \ - ' / test.com registrant change declined' - - expect(message.subject).to eq(subject) - end - - it 'sends message' do - expect { message.deliver_now }.to change { ActionMailer::Base.deliveries.count }.by(1) - end - end - - describe '#expired' do - let(:domain) { instance_spy(Domain, name: 'test.com', new_registrant_email: 'new.registrant@test.com') } - let(:registrar) { instance_spy(Registrar) } - let(:registrant) { instance_spy(Registrant) } - - let(:domain_presenter) { instance_spy(DomainPresenter) } - let(:registrar_presenter) { instance_spy(RegistrarPresenter) } - let(:registrant_presenter) { instance_spy(RegistrantPresenter) } - - subject(:message) { described_class.expired(domain: domain, - registrar: registrar, - registrant: registrant) - } - - before :example do - expect(DomainPresenter).to receive(:new).and_return(domain_presenter) - expect(RegistrarPresenter).to receive(:new).and_return(registrar_presenter) - expect(RegistrantPresenter).to receive(:new).and_return(registrant_presenter) - end - - it 'has sender' do - expect(message.from).to eq(['noreply@internet.ee']) - end - - it 'has new registrant\s email as a recipient' do - expect(message.to).to match_array(['new.registrant@test.com']) - end - - it 'has subject' do - subject = 'Domeeni test.com registreerija vahetuse taotlus on tühistatud' \ - ' / test.com registrant change cancelled' - - expect(message.subject).to eq(subject) - end - - it 'sends message' do - expect { message.deliver_now }.to change { ActionMailer::Base.deliveries.count }.by(1) - end - end -end diff --git a/test/jobs/registrant_change_confirm_email_job_test.rb b/test/jobs/registrant_change_confirm_email_job_test.rb new file mode 100644 index 000000000..0e38fb9a4 --- /dev/null +++ b/test/jobs/registrant_change_confirm_email_job_test.rb @@ -0,0 +1,18 @@ +require 'test_helper' + +class RegistrantChangeConfirmEmailJobTest < ActiveSupport::TestCase + include ActionMailer::TestHelper + + setup do + ActionMailer::Base.deliveries.clear + end + + def test_delivers_email + domain_id = domains(:shop).id + new_registrant_id = contacts(:william).id + + RegistrantChangeConfirmEmailJob.enqueue(domain_id, new_registrant_id) + + assert_emails 1 + end +end \ No newline at end of file diff --git a/test/mailers/registrant_change_mailer_test.rb b/test/mailers/registrant_change_mailer_test.rb new file mode 100644 index 000000000..ebe5847d6 --- /dev/null +++ b/test/mailers/registrant_change_mailer_test.rb @@ -0,0 +1,84 @@ +require 'test_helper' + +class RegistrantChangeMailerTest < ActiveSupport::TestCase + include ActionMailer::TestHelper + + setup do + @domain = domains(:shop) + ActionMailer::Base.deliveries.clear + end + + def test_delivers_confirmation_request_email + assert_equal 'shop.test', @domain.name + assert_equal 'john@inbox.test', @domain.registrant.email + + email = RegistrantChangeMailer.confirm(domain: @domain, + registrar: @domain.registrar, + current_registrant: @domain.registrant, + new_registrant: @domain.registrant).deliver_now + + assert_emails 1 + assert_equal ['john@inbox.test'], email.to + assert_equal 'Kinnitustaotlus domeeni shop.test registreerija vahetuseks' \ + ' / Application for approval for registrant change of shop.test', email.subject + end + + def test_delivers_notification_email + new_registrant = contacts(:william) + assert_equal 'shop.test', @domain.name + assert_equal 'william@inbox.test', new_registrant.email + + email = RegistrantChangeMailer.notice(domain: @domain, + registrar: @domain.registrar, + current_registrant: @domain.registrant, + new_registrant: new_registrant).deliver_now + + assert_emails 1 + assert_equal ['william@inbox.test'], email.to + assert_equal 'Domeeni shop.test registreerija vahetus protseduur on algatatud' \ + ' / shop.test registrant change', email.subject + end + + def test_delivers_confirmation_email + new_registrant = contacts(:william) + assert_equal 'shop.test', @domain.name + assert_equal 'john@inbox.test', @domain.registrant.email + assert_equal 'william@inbox.test', new_registrant.email + + email = RegistrantChangeMailer.confirmed(domain: @domain, + old_registrant: new_registrant).deliver_now + + assert_emails 1 + assert_equal %w[john@inbox.test william@inbox.test], email.to + assert_equal 'Domeeni shop.test registreerija vahetus teostatud' \ + ' / Registrant change of shop.test has been finished', email.subject + end + + def test_delivers_rejection_email + assert_equal 'shop.test', @domain.name + @domain.update!(pending_json: { new_registrant_email: 'william@inbox.test' }) + + email = RegistrantChangeMailer.rejected(domain: @domain, + registrar: @domain.registrar, + registrant: @domain.registrant).deliver_now + + assert_emails 1 + assert_equal ['william@inbox.test'], email.to + assert_equal 'Domeeni shop.test registreerija vahetuse taotlus tagasi lükatud' \ + ' / shop.test registrant change declined', email.subject + end + + def test_delivers_expiration_email + assert_equal 'shop.test', @domain.name + @domain.update!(pending_json: { new_registrant_email: 'william@inbox.test' }) + + email = RegistrantChangeMailer.expired(domain: @domain, + registrar: @domain.registrar, + registrant: @domain.registrant).deliver_now + + assert_emails 1 + assert_equal ['william@inbox.test'], email.to + assert_equal 'Domeeni shop.test registreerija vahetuse taotlus on tühistatud' \ + ' / shop.test registrant change cancelled', email.subject + end +end \ No newline at end of file