Module: ActiveMail::Quality::Minitest::ClassMethods

Extended by:
T::Sig
Defined in:
lib/activemail/quality/minitest.rb

Instance Method Summary collapse

Instance Method Details

#assert_quality_for_all_previews(guard: ActiveMail::Quality.guard) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/activemail/quality/minitest.rb', line 30

def assert_quality_for_all_previews(guard: ActiveMail::Quality.guard)
  required = ActiveMail::Quality.config.required_previews
  previews = PreviewRenderer.all
  # A silent no-test run would look like everything passed.
  Kernel.warn('[activemail] assert_quality_for_all_previews: no previews discovered.') if previews.empty?
  previews.each_with_index do |(preview, email), i|
    key = PreviewRenderer.key(preview, email)
    # Index prefix: distinct keys can normalize to the same method name.
    T.unsafe(self).define_method("test_#{i}_#{key.gsub(/\W/, '_')}_email_quality") do
      html = T.unsafe(self).send(:render_preview_or_skip, preview, email, key, required)
      T.unsafe(self).assert_email_quality(html, guard: guard)
    end
  end
end