spec/dragonfly/image_magick/generators/text_spec.rb in dragonfly-1.3.0 vs spec/dragonfly/image_magick/generators/text_spec.rb in dragonfly-1.4.0

- old
+ new

@@ -1,77 +1,108 @@ -require 'spec_helper' +require "spec_helper" describe Dragonfly::ImageMagick::Generators::Text do let (:generator) { Dragonfly::ImageMagick::Generators::Text.new } let (:app) { test_imagemagick_app } let (:image) { Dragonfly::Content.new(app) } describe "creating a text image" do before(:each) do - generator.call(image, "mmm", 'font_size' => 12) + generator.call(image, "mmm", "font_size" => 12) end - it {image.should have_width(20..40)} # approximate - it {image.should have_height(10..20)} - it {image.should have_format('png')} - it {image.meta.should == {'format' => 'png', 'name' => 'text.png'}} + it { image.should have_width(20..40) } # approximate + it { image.should have_height(10..20) } + it { image.should have_format("png") } + it { image.meta.should == { "format" => "png", "name" => "text.png" } } end describe "specifying the format" do before(:each) do - generator.call(image, "mmm", 'format' => 'gif') + generator.call(image, "mmm", "format" => "gif") end - it {image.should have_format('gif')} - it {image.meta.should == {'format' => 'gif', 'name' => 'text.gif'}} + it { image.should have_format("gif") } + it { image.meta.should == { "format" => "gif", "name" => "text.gif" } } end describe "padding" do before(:each) do image_without_padding = image.clone - generator.call(image_without_padding, "mmm", 'font_size' => 12) + generator.call(image_without_padding, "mmm", "font_size" => 12) @width = image_properties(image_without_padding)[:width].to_i @height = image_properties(image_without_padding)[:height].to_i end it "1 number shortcut" do - generator.call(image, "mmm", 'padding' => '10') + generator.call(image, "mmm", "padding" => "10") image.should have_width(@width + 20) image.should have_height(@height + 20) end it "2 numbers shortcut" do - generator.call(image, "mmm", 'padding' => '10 5') + generator.call(image, "mmm", "padding" => "10 5") image.should have_width(@width + 10) image.should have_height(@height + 20) end it "3 numbers shortcut" do - generator.call(image, "mmm", 'padding' => '10 5 8') + generator.call(image, "mmm", "padding" => "10 5 8") image.should have_width(@width + 10) image.should have_height(@height + 18) end it "4 numbers shortcut" do - generator.call(image, "mmm", 'padding' => '1 2 3 4') + generator.call(image, "mmm", "padding" => "1 2 3 4") image.should have_width(@width + 6) image.should have_height(@height + 4) end it "should override the general padding declaration with the specific one (e.g. 'padding-left')" do - generator.call(image, "mmm", 'padding' => '10', 'padding-left' => 9) + generator.call(image, "mmm", "padding" => "10", "padding-left" => 9) image.should have_width(@width + 19) image.should have_height(@height + 20) end it "should ignore 'px' suffixes" do - generator.call(image, "mmm", 'padding' => '1px 2px 3px 4px') + generator.call(image, "mmm", "padding" => "1px 2px 3px 4px") image.should have_width(@width + 6) image.should have_height(@height + 4) end it "bad padding string" do - lambda{ - generator.call(image, "mmm", 'padding' => '1 2 3 4 5') + lambda { + generator.call(image, "mmm", "padding" => "1 2 3 4 5") }.should raise_error(ArgumentError) end end describe "urls" do it "updates the url" do url_attributes = Dragonfly::UrlAttributes.new - generator.update_url(url_attributes, "mmm", 'format' => 'gif') - url_attributes.name.should == 'text.gif' + generator.update_url(url_attributes, "mmm", "format" => "gif") + url_attributes.name.should == "text.gif" + end + end + + describe "param validations" do + { + "font" => "Times New Roman -write bad.png", + "font_family" => "Times New Roman -write bad.png", + "color" => "rgb(255, 34, 55) -write bad.png", + "background_color" => "rgb(255, 52, 55) -write bad.png", + "stroke_color" => "rgb(255, 52, 55) -write bad.png", + "format" => "png -write bad.png", + }.each do |opt, value| + it "validates bad opts like #{opt} = '#{value}'" do + expect { + generator.call(image, "some text", opt => value) + }.to raise_error(Dragonfly::ParamValidators::InvalidParameter) + end + end + + ["rgb(33,33,33)", "rgba(33,33,33,0.5)", "rgb(33.5,33.5,33.5)", "#fff", "#efefef", "blue"].each do |colour| + it "allows #{colour.inspect} as a colour specification" do + generator.call(image, "mmm", "color" => colour) + end + end + + ["rgb(33, 33, 33)", "something else", "blue:", "f#ff"].each do |colour| + it "disallows #{colour.inspect} as a colour specification" do + expect { + generator.call(image, "mmm", "color" => colour) + }.to raise_error(Dragonfly::ParamValidators::InvalidParameter) + end end end end