test/paperclip_test.rb in thoughtbot-paperclip-2.3.0 vs test/paperclip_test.rb in thoughtbot-paperclip-2.3.1

- old
+ new

@@ -1,16 +1,20 @@ require 'test/helper' class PaperclipTest < Test::Unit::TestCase - [:image_magick_path, :convert_path].each do |path| - context "Calling Paperclip.run with an #{path} specified" do + [:image_magick_path, :command_path].each do |path| + context "Calling Paperclip.run with #{path} specified" do setup do Paperclip.options[:image_magick_path] = nil - Paperclip.options[:convert_path] = nil + Paperclip.options[:command_path] = nil Paperclip.options[path] = "/usr/bin" end + should "return the expected path for path_for_command" do + assert_equal "/usr/bin/convert", Paperclip.path_for_command("convert") + end + should "execute the right command" do Paperclip.expects(:path_for_command).with("convert").returns("/usr/bin/convert") Paperclip.expects(:bit_bucket).returns("/dev/null") Paperclip.expects(:"`").with("/usr/bin/convert one.jpg two.jpg 2>/dev/null") Paperclip.run("convert", "one.jpg two.jpg") @@ -19,53 +23,57 @@ end context "Calling Paperclip.run with no path specified" do setup do Paperclip.options[:image_magick_path] = nil - Paperclip.options[:convert_path] = nil + Paperclip.options[:command_path] = nil end + should "return the expected path fro path_for_command" do + assert_equal "convert", Paperclip.path_for_command("convert") + end + should "execute the right command" do Paperclip.expects(:path_for_command).with("convert").returns("convert") Paperclip.expects(:bit_bucket).returns("/dev/null") Paperclip.expects(:"`").with("convert one.jpg two.jpg 2>/dev/null") Paperclip.run("convert", "one.jpg two.jpg") end + end - should "log the command when :log_command is set" do + context "Calling Paperclip.run and logging" do + setup do + Paperclip.options[:image_magick_path] = nil + Paperclip.options[:command_path] = nil + Paperclip.stubs(:bit_bucket).returns("/dev/null") + Paperclip.stubs(:log) + Paperclip.stubs(:"`").with("this is the command 2>/dev/null") + end + + should "log the command when :log_command is true" do Paperclip.options[:log_command] = true - Paperclip.expects(:bit_bucket).returns("/dev/null") - Paperclip.expects(:log).with("this is the command 2>/dev/null") - Paperclip.expects(:"`").with("this is the command 2>/dev/null") Paperclip.run("this","is the command") + assert_received(Paperclip, :log) do |p| + p.with("this is the command 2>/dev/null") + end + assert_received(Paperclip, :`) do |p| + p.with("this is the command 2>/dev/null") + end end - end - should "raise when sent #processor and the name of a class that exists but isn't a subclass of Processor" do - assert_raises(Paperclip::PaperclipError){ Paperclip.processor(:attachment) } + should "not log the command when :log_command is false" do + Paperclip.options[:log_command] = false + Paperclip.run("this","is the command") + assert_received(Paperclip, :log) do |p| + p.with("this is the command 2>/dev/null").never + end + assert_received(Paperclip, :`) do |p| + p.with("this is the command 2>/dev/null") + end + end end - should "raise when sent #processor and the name of a class that doesn't exist" do - assert_raises(NameError){ Paperclip.processor(:boogey_man) } - end - - should "return a class when sent #processor and the name of a class under Paperclip" do - assert_equal ::Paperclip::Thumbnail, Paperclip.processor(:thumbnail) - end - - should "call a proc sent to check_guard" do - @dummy = Dummy.new - @dummy.expects(:one).returns(:one) - assert_equal :one, @dummy.avatar.send(:check_guard, lambda{|x| x.one }) - end - - should "call a method name sent to check_guard" do - @dummy = Dummy.new - @dummy.expects(:one).returns(:one) - assert_equal :one, @dummy.avatar.send(:check_guard, :one) - end - context "Paperclip.bit_bucket" do context "on systems without /dev/null" do setup do File.expects(:exists?).with("/dev/null").returns(false) end @@ -84,10 +92,22 @@ assert_equal "/dev/null", Paperclip.bit_bucket end end end + should "raise when sent #processor and the name of a class that exists but isn't a subclass of Processor" do + assert_raises(Paperclip::PaperclipError){ Paperclip.processor(:attachment) } + end + + should "raise when sent #processor and the name of a class that doesn't exist" do + assert_raises(NameError){ Paperclip.processor(:boogey_man) } + end + + should "return a class when sent #processor and the name of a class under Paperclip" do + assert_equal ::Paperclip::Thumbnail, Paperclip.processor(:thumbnail) + end + context "An ActiveRecord model with an 'avatar' attachment" do setup do rebuild_model :path => "tmp/:class/omg/:style.:extension" @file = File.new(File.join(FIXTURES_DIR, "5k.png"), 'rb') end @@ -137,11 +157,12 @@ @subdummy = SubDummy.create(:avatar => @file) end end should "be able to see the attachment definition from the subclass's class" do - assert_equal "tmp/:class/omg/:style.:extension", SubDummy.attachment_definitions[:avatar][:path] + assert_equal "tmp/:class/omg/:style.:extension", + SubDummy.attachment_definitions[:avatar][:path] end teardown do Object.send(:remove_const, "SubDummy") rescue nil end @@ -283,9 +304,24 @@ validation, options, valid_file, invalid_file = args valid_file &&= File.open(File.join(FIXTURES_DIR, valid_file), "rb") invalid_file &&= File.open(File.join(FIXTURES_DIR, invalid_file), "rb") should_validate validation, options, valid_file, invalid_file + end + + context "with size validation and less_than 10240 option" do + context "and assigned an invalid file" do + setup do + Dummy.send(:"validates_attachment_size", :avatar, :less_than => 10240) + @dummy = Dummy.new + @dummy.avatar &&= File.open(File.join(FIXTURES_DIR, "12k.png"), "rb") + @dummy.valid? + end + + should "have a file size min/max error message" do + assert_match /between 0 and 10240 bytes/, @dummy.errors.on(:avatar) + end + end end end end