require 'spec_helper' describe 'WulffeldSlug' do context ":case option" do context ":case => :upcase" do it "should upcase the slug" do actor = Actor.new(:name => "Geoffrey Rush") actor.valid? actor.slug.should == 'GEOFFREY-RUSH' end end context ":case => :preserve" do it "should preserve capitalization" do user = User.new(:login => "Batty") user.valid? user.slug.should == 'Batty' end end end context "new" do let(:article) do Article.new(:title => "Blade Runner") end it "creates a slug" do article.save! article.slug.should == "blade-runner" end it "creates a unique slug" do Article.create!(:title => "Blade Runner") article.save! article.slug.should == "blade-runner-1" end it "creates a slug without superfluous spaces" do article.title = " The Shawshank Redemption " article.valid? article.slug.should == "the-shawshank-redemption" end describe ":blank_loop_start and :blank_loop_chunk options" do it "should generate correct slugs with a blank string part" do 71.times do |i| Article.create!(:title => "하") end a = Article.create!(:title => "하") a.save! a.slug.should == '72' Article.all.map(&:slug).sort.should == 72.times.map { |i| "#{i + 1}"}.sort end it "should generate correct slugs with a blank string part" do 21.times do |i| Article.create!(:title => "하") end a = Article.create!(:title => "하") a.save! a.slug.should == '22' Article.all.map(&:slug).sort.should == 22.times.map { |i| "#{i + 1}"}.sort end end end context "dynamic slug fields" do it "should create a slug based on the non-nil field(s)" do user = User.new(:login => "deckard") user.valid? user.slug.should == 'deckard' end end context "transliteration" do it "should transliterate Danish" do article = Article.new(:title => "Rådhusstræde") article.valid? article.slug.should == "radhusstraede" end it "should transliterate Danish with a hint" do article = Article.new(:title => "Rådhusstræde") article.class_eval do def slug_kinds :danish end end article.valid? article.slug.should == "raadhusstraede" end it "should transliterate German" do article = Article.new(:title => "Jürgen Müller") article.valid? article.slug.should == "jurgen-muller" end it "should transliterate German with a hint" do article = Article.new(:title => "Jürgen Müller") article.class_eval do def slug_kinds :german end end article.valid? article.slug.should == "juergen-mueller" end it "should transliterate Russian" do article = Article.new(:title => "Дворец Спорта") article.valid? article.slug.should == "dvorets-sporta" end it "should transliterate all parts" do venue = Venue.new(:name => "Дворец Спорта", :country => "Russia") venue.valid? venue.slug.should == "dvorets-sporta-russia" end end end