From 279ce93a2858482133df3cf2bfc87c93d130b795 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dario=20Casta=C3=B1=C3=A9?= Date: Wed, 26 Apr 2023 22:25:30 +0200 Subject: [PATCH] fix: refactor TokenTag#sent assignment outside mailer (#79) --- app/interactors/create_token.rb | 5 +++++ app/mailers/sessions_mailer.rb | 10 ---------- test/interactors/create_token_test.rb | 1 + test/mailers/sessions_mailer_test.rb | 1 - 4 files changed, 6 insertions(+), 11 deletions(-) diff --git a/app/interactors/create_token.rb b/app/interactors/create_token.rb index e3a79ab..269b6dd 100644 --- a/app/interactors/create_token.rb +++ b/app/interactors/create_token.rb @@ -89,5 +89,10 @@ def issue_receipt def deliver token.reload SessionsMailer.magic_link_email(identifier, token.class.name, token.id, token.to_hash, scope:).deliver_later + + return unless token.is_a?(Token) + + token.tags << TokenTag.sent + token.save! end end diff --git a/app/mailers/sessions_mailer.rb b/app/mailers/sessions_mailer.rb index 95b6d4d..7631f04 100644 --- a/app/mailers/sessions_mailer.rb +++ b/app/mailers/sessions_mailer.rb @@ -6,19 +6,9 @@ def magic_link_email(to, voter_type, voter_id, voter_hash, scope: :consultation) @voter_hash = voter_hash raise Errors::InvalidEmail unless EmailValidator.valid?(to, mode: :strict) - tag = TokenTag.sent mail(to:, template_name:, subject:) do |format| format.text end - rescue StandardError => e - tag = TokenTag.failed - - raise e - ensure - return unless voter_type == 'Token' - - tag.token_id = voter_id - tag.save! end private diff --git a/test/interactors/create_token_test.rb b/test/interactors/create_token_test.rb index b070c34..5d5e1ed 100644 --- a/test/interactors/create_token_test.rb +++ b/test/interactors/create_token_test.rb @@ -28,6 +28,7 @@ class CreateTokenTest < ActionDispatch::IntegrationTest assert_enqueued_emails 1 assert_equal 1, Token.count + assert_equal %w[sent], Token.first.tags.map(&:value) assert_equal 1, TokenReceipt.count end end diff --git a/test/mailers/sessions_mailer_test.rb b/test/mailers/sessions_mailer_test.rb index 7bfda13..fc0acbe 100644 --- a/test/mailers/sessions_mailer_test.rb +++ b/test/mailers/sessions_mailer_test.rb @@ -15,6 +15,5 @@ class SessionsMailerTest < ActionMailer::TestCase assert_equal [to], email.to assert_includes email.body, "http://example.com/sessions/#{token.to_hash}/login" assert_includes email.body, "Thanks,\n#{Rails.configuration.x.asembleo.title}" - assert_equal ['sent'], token.reload.tags.map(&:value) end end