spec/integration/piet_spec.rb in piet-0.2.0 vs spec/integration/piet_spec.rb in piet-0.2.1
- old
+ new
@@ -1,95 +1,190 @@
require 'spec_helper'
+
+class RMagickUploader < CarrierWave::Uploader::Base
+ include CarrierWave::RMagick
+ include Piet::CarrierWaveExtension
+end
+
+class MiniMagickUploader < CarrierWave::Uploader::Base
+ include CarrierWave::MiniMagick
+ include Piet::CarrierWaveExtension
+end
+
+describe Piet do
+ describe Piet::CarrierWaveExtension do
+ describe ".optimize" do
+ let(:real_jpg_path) { File.join('spec', 'assets', 'jpg-real.jpg') }
+ let(:real_jpg_image) { File.open(real_jpg_path) }
+
+ let(:fake_jpg_path) { File.join('spec', 'assets', 'jpg-fake.jpg') }
+ let(:fake_jpg_image) { File.open(fake_jpg_path) }
+
+ let(:real_png_path) { File.join('spec', 'assets', 'png-real.png') }
+ let(:real_png_image) { File.open(real_png_path) }
+
+ let(:fake_png_path) { File.join('spec', 'assets', 'png-fake.png') }
+ let(:fake_png_image) { File.open(fake_png_path) }
+
+ def upload_file(uploader, image)
+ uploader.store!(image)
+ uploader.manipulate! do |img|
+ img
+ end
+ end
+
+ it "calls the uploader's `current_path` when MiniMagick is used" do
+ uploader = MiniMagickUploader.new
+
+ upload_file(uploader, real_jpg_image)
+
+ expect(Piet).to receive(:optimize).with(uploader.current_path, {})
+
+ uploader.optimize
+ end
+
+ it "calls the uploader's `current_path` when RMagick is used" do
+ uploader = RMagickUploader.new
+
+ upload_file(uploader, real_jpg_image)
+
+ expect(Piet).to receive(:optimize).with(uploader.current_path, {})
+
+ uploader.optimize
+ end
+
+ it "calls `optimize_png` if the .png files MIME type is that of a PNG" do
+ uploader = MiniMagickUploader.new
+
+ upload_file(uploader, real_png_image)
+
+ expect(Piet).to receive(:optimize_png).with(uploader.current_path, {})
+
+ uploader.optimize
+ end
+
+ it "calls `optimize_jpg` if the .png files MIME type is that of a JPEG" do
+ uploader = MiniMagickUploader.new
+
+ upload_file(uploader, fake_png_image)
+
+ expect(Piet).to receive(:optimize_jpg).with(uploader.current_path, {})
+
+ uploader.optimize
+ end
+
+ it "calls `optimize_png` if the .jpg files MIME type is that of a PNG" do
+ uploader = MiniMagickUploader.new
+
+ upload_file(uploader, fake_jpg_image)
+
+ expect(Piet).to receive(:optimize_png).with(uploader.current_path, {})
+
+ uploader.optimize
+ end
+
+ it "calls `optimize_jpg` if the .jpg files MIME type is that of a JPEG" do
+ uploader = MiniMagickUploader.new
+
+ upload_file(uploader, real_jpg_image)
+
+ expect(Piet).to receive(:optimize_jpg).with(uploader.current_path, {})
+
+ uploader.optimize
+ end
+ end
+ end
+end