Проверьте, содержит ли html тег изображения с .png файлом Ruby - PullRequest
0 голосов
/ 05 июля 2018

Мое веб-приложение Ruby on Rails отправляет приветственное письмо клиентам, и я хочу написать тест, чтобы убедиться, что в письме есть тег, в котором src является файлом .png. Я видел, что assert_select может делать то, что я хочу, но так как мой адрес электронной почты - Mail::Message класс, я могу получить только html из сообщения. Заранее спасибо за помощь!

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Вот assert_select_email от образцового Redmine:

assert_select_email do
  assert_select 'a[href^=?]', 'http://localhost:3000/settings'
end

Все программисты Rails должны изучать литературу, такую ​​как Redmine, чтобы выучить много полезных трюков.

    # Extracts the body of an email and runs nested assertions on it.
    #
    # You must enable deliveries for this assertion to work, use:
    #   ActionMailer::Base.perform_deliveries = true
    #
    #  assert_select_email do
    #    assert_select "h1", "Email alert"
    #  end
    #
    #  assert_select_email do
    #    items = assert_select "ol>li"
    #    items.each do
    #       # Work with items here...
    #    end
    #  end
    def assert_select_email(&block)
      deliveries = ActionMailer::Base.deliveries
      assert !deliveries.empty?, "No e-mail in delivery list"

      deliveries.each do |delivery|
        (delivery.parts.empty? ? [delivery] : delivery.parts).each do |part|
          if part["Content-Type"].to_s =~ /^text\/html\W/
            root = Nokogiri::HTML::DocumentFragment.parse(part.body.to_s)
            assert_select root, ":root", &block
          end
        end
      end
    end
0 голосов
/ 05 июля 2018

Я не уверен, что это работает, но я думаю, вы можете сделать что-то подобное.

expect(mail.body).to match(/.*.<img.*.png.*/)

https://github.com/rspec/rspec-expectations#regular-expressions

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...