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

У меня возникли проблемы с использованием have_link rspec в локализованных сообщениях электронной почты, закодированных как 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?


person Chris Beck    schedule 06.01.2014    source источник


Ответы (1)


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

expect(msg.html_part.decoded).to have_link(translated_name, href: localized_url)
person IAmNaN    schedule 10.12.2014