rspec have_link не соответствует представлению действия отправителя, когда Content-Transfer-Encoding: quoted-printable

У меня проблемы с использованием rspec's have_link на локализованные электронные письма, закодированные как quoted-printable

С рельсов консоль с I18.locale = :en

UserMailer.signup_confirmation(User.last.decorate).parts[1].encoded

доходность

"Content-Type: text/html;\r\n charset=UTF-8\r\nContent-Transfer-Encoding: 7bit\r\n\r\n<p>Hello,</p>\r\n\r\n<p>Thank you for registering!</p>\r\n\r\n<p><a href=\"http://example.com/en/users/119/edit\">Edit profile</a></p>"

в то время как I18.locale = :es доходность

"Content-Type: text/html;\r\n charset=UTF-8\r\nContent-Transfer-Encoding: quoted-printable\r\n\r\n<p>=C2=A1Hola,</p>\r\n\r\n<p>Thank you for registering!</p>\r\n\r\n<p><a href=3D\"http://example.com/es/users/119/edit\">Editar perfil</a></=\r\np>=\r\n"

обратите внимание на различия в ссылках

:en - <a href=\"http     # Content-Transfer-Encoding: 7bit
:es - <a href=3D\"http   # Content-Transfer-Encoding: quoted-printable

когда я проверю это в rspec с помощью

expect(msg).to have_link(translated_name, href: localized_url)

это проходит для :en но терпит неудачу для :es,

Как мне проверить наличие ссылки в html-представлении электронной почты, когда она quoted-printable?

1 ответ

У меня была очень похожая проблема rspec и ссылок. На самом деле вина не в rspec. Это старый случай мусора, мусора. Получите незашифрованную версию html-части и передайте ее своим ожиданиям:

expect(msg.html_part.decoded).to have_link(translated_name, href: localized_url)
Другие вопросы по тегам