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)