lib/utensils/custom_matchers.rb in utensils-1.3.0 vs lib/utensils/custom_matchers.rb in utensils-1.4.0

- old
+ new

@@ -70,11 +70,15 @@ @image = image end def matches?(page) @page = page - @image.is_a?(String) ? find_by_url : find_dragonfly_image + if @image.is_a?(String) + find_by_url || find_lazy_loaded_image + else + find_dragonfly_image + end end def failure_message "expected html to contain image: #{@image.inspect}" end @@ -83,28 +87,32 @@ "expected html to not contain image: #{@image.inspect}" end private - def find_by_url - @page.has_css?("img[src$='#{@image}']") - end + def find_by_url + @page.has_css?("img[src$='#{@image}']") + end - def find_dragonfly_image - @page.all('img').each do |img| - url = img['src'] - dragonfly_hash = url[/media\/([^\/.]+)/, 1] - if dragonfly_hash - begin - dragonfly_job = Dragonfly::Job.deserialize(dragonfly_hash, Dragonfly[:images]) - return true if dragonfly_job.uid == @image.send(:uid) - rescue Dragonfly::Serializer::BadString - next + def find_lazy_loaded_image + @page.has_css?("img[data-original$='#{@image}']") + end + + def find_dragonfly_image + @page.all('img').each do |img| + url = img['src'] + dragonfly_hash = url[/media\/([^\/.]+)/, 1] + if dragonfly_hash + begin + dragonfly_job = Dragonfly::Job.deserialize(dragonfly_hash, Dragonfly[:images]) + return true if dragonfly_job.uid == @image.send(:uid) + rescue Dragonfly::Serializer::BadString + next + end end end + return false end - return false - end end def have_image(image_url) HaveImage.new(image_url) end