spec/unit/attachment/pdf_spec.rb in bulldog-0.0.11 vs spec/unit/attachment/pdf_spec.rb in bulldog-0.0.12

- old
+ new

@@ -1,137 +1,150 @@ require 'spec_helper' describe Attachment::Pdf do - use_model_class(:Thing, - :attachment_file_name => :string, - :attachment_width => :integer, - :attachment_height => :integer, - :attachment_aspect_ratio => :float, - :attachment_dimensions => :string) - - before do - Thing.has_attachment :attachment do - style :double, :size => '1224x1584' - style :filled, :size => '500x500', :filled => true - style :unfilled, :size => '1000x1000' - default_style :double - end - @thing = Thing.new(:attachment => test_file) - end - def test_file path = "#{temporary_directory}/test.pdf" FileUtils.cp("#{ROOT}/spec/data/test.pdf", path) autoclose open(path) end def configure(&block) Thing.attachment_reflections[:attachment].configure(&block) end - describe "#process" do - it "should be processed with ImageMagick by default" do - context = nil - configure do - style :output - process :on => :event do - context = self + describe "when file attributes are not stored" do + use_model_class(:Thing, :attachment_file_name => :string) + + describe "#dimensions" do + it "should return 1x1 if the file is missing" do + Thing.has_attachment :attachment do + type :pdf + style :double, :size => '1224x1584' + style :filled, :size => '500x500', :filled => true + style :unfilled, :size => '1000x1000' + default_style :double end + @thing = Thing.new(:attachment => test_file) + @thing.save.should be_true + File.unlink(@thing.attachment.path(:original)) + @thing = Thing.find(@thing.id) + @thing.attachment.is_a?(Attachment::Pdf) # sanity check + @thing.attachment.stream.missing? # sanity check + @thing.attachment.dimensions(:original).should == [1, 1] end - - @thing.attachment.process(:event) - context.should be_a(Processor::ImageMagick) end end - describe "#dimensions" do - it "should return 1x1 if the style is missing" do - Thing.attachment_reflections[:attachment].configure do - detect_type_by{:pdf} + describe "when file attributes are stored" do + use_model_class(:Thing, + :attachment_file_name => :string, + :attachment_width => :integer, + :attachment_height => :integer, + :attachment_aspect_ratio => :float, + :attachment_dimensions => :string) + + before do + Thing.has_attachment :attachment do + style :double, :size => '1224x1584' + style :filled, :size => '500x500', :filled => true + style :unfilled, :size => '1000x1000' + default_style :double end - @thing.save.should be_true - File.unlink(@thing.attachment.path(:original)) - @thing = Thing.find(@thing.id) - @thing.attachment.is_a?(Attachment::Pdf) # sanity check - @thing.attachment.stream.missing? # sanity check - @thing.attachment.dimensions(:original).should == [1, 1] + @thing = Thing.new(:attachment => test_file) end - it "should return the width and height of the default style if no style name is given" do - @thing.attachment.dimensions.should == [1224, 1584] - end + describe "#process" do + it "should be processed with ImageMagick by default" do + context = nil + configure do + style :output + process :on => :event do + context = self + end + end - it "should return the width and height of the given style" do - @thing.attachment.dimensions(:original).should == [612, 792] - @thing.attachment.dimensions(:double).should == [1224, 1584] + @thing.attachment.process(:event) + context.should be_a(Processor::ImageMagick) + end end - it "should return the calculated width according to style filledness" do - @thing.attachment.dimensions(:filled).should == [500, 500] - @thing.attachment.dimensions(:unfilled).should == [773, 1000] - end + describe "#dimensions" do + it "should return the width and height of the default style if no style name is given" do + @thing.attachment.dimensions.should == [1224, 1584] + end - it "should only invoke identify once" - it "should log the result" - end + it "should return the width and height of the given style" do + @thing.attachment.dimensions(:original).should == [612, 792] + @thing.attachment.dimensions(:double).should == [1224, 1584] + end - describe "#width" do - it "should return the width of the default style if no style name is given" do - @thing.attachment.width.should == 1224 - end + it "should return the calculated width according to style filledness" do + @thing.attachment.dimensions(:filled).should == [500, 500] + @thing.attachment.dimensions(:unfilled).should == [773, 1000] + end - it "should return the width of the given style" do - @thing.attachment.width(:original).should == 612 - @thing.attachment.width(:double).should == 1224 + it "should only invoke identify once" + it "should log the result" end - end - describe "#height" do - it "should return the height of the default style if no style name is given" do - @thing.attachment.height.should == 1584 - end + describe "#width" do + it "should return the width of the default style if no style name is given" do + @thing.attachment.width.should == 1224 + end - it "should return the height of the given style" do - @thing.attachment.height(:original).should == 792 - @thing.attachment.height(:double).should == 1584 + it "should return the width of the given style" do + @thing.attachment.width(:original).should == 612 + @thing.attachment.width(:double).should == 1224 + end end - end - describe "#aspect_ratio" do - it "should return the aspect ratio of the default style if no style name is given" do - @thing.attachment.aspect_ratio.should be_close(612.0/792, 1e-5) - end + describe "#height" do + it "should return the height of the default style if no style name is given" do + @thing.attachment.height.should == 1584 + end - it "should return the aspect ratio of the given style" do - @thing.attachment.aspect_ratio(:original).should be_close(612.0/792, 1e-5) - @thing.attachment.aspect_ratio(:filled).should be_close(1, 1e-5) + it "should return the height of the given style" do + @thing.attachment.height(:original).should == 792 + @thing.attachment.height(:double).should == 1584 + end end - end - describe "storable attributes" do - it "should set the stored attributes on assignment" do - @thing.attachment_width.should == 612 - @thing.attachment_height.should == 792 - @thing.attachment_aspect_ratio.should be_close(612.0/792, 1e-5) - @thing.attachment_dimensions.should == '612x792' - end + describe "#aspect_ratio" do + it "should return the aspect ratio of the default style if no style name is given" do + @thing.attachment.aspect_ratio.should be_close(612.0/792, 1e-5) + end - describe "after roundtripping through the database" do - before do - @thing.save - @thing = Thing.find(@thing.id) + it "should return the aspect ratio of the given style" do + @thing.attachment.aspect_ratio(:original).should be_close(612.0/792, 1e-5) + @thing.attachment.aspect_ratio(:filled).should be_close(1, 1e-5) end + end - it "should restore the stored attributes" do + describe "storable attributes" do + it "should set the stored attributes on assignment" do @thing.attachment_width.should == 612 @thing.attachment_height.should == 792 @thing.attachment_aspect_ratio.should be_close(612.0/792, 1e-5) @thing.attachment_dimensions.should == '612x792' end - it "should recalculate the dimensions correctly" do - @thing.attachment.dimensions(:filled).should == [500, 500] - @thing.attachment.dimensions(:unfilled).should == [773, 1000] + describe "after roundtripping through the database" do + before do + @thing.save + @thing = Thing.find(@thing.id) + end + + it "should restore the stored attributes" do + @thing.attachment_width.should == 612 + @thing.attachment_height.should == 792 + @thing.attachment_aspect_ratio.should be_close(612.0/792, 1e-5) + @thing.attachment_dimensions.should == '612x792' + end + + it "should recalculate the dimensions correctly" do + @thing.attachment.dimensions(:filled).should == [500, 500] + @thing.attachment.dimensions(:unfilled).should == [773, 1000] + end end end end end