Permalink
Fetching contributors…
Cannot retrieve contributors at this time
137 lines (108 sloc) 3.37 KB
require "helper"
class StiTest < TestCaseClass
include FriendlyId::Test
include FriendlyId::Test::Shared::Core
include FriendlyId::Test::Shared::Slugged
class Journalist < ActiveRecord::Base
extend FriendlyId
friendly_id :name, :use => [:slugged]
end
class Editorialist < Journalist
end
def model_class
Editorialist
end
test "friendly_id should accept a base and a hash with single table inheritance" do
abstract_klass = Class.new(ActiveRecord::Base) do
def self.table_exists?; false end
extend FriendlyId
friendly_id :foo, :use => :slugged, :slug_column => :bar
end
klass = Class.new(abstract_klass)
assert klass < FriendlyId::Slugged
assert_equal :foo, klass.friendly_id_config.base
assert_equal :bar, klass.friendly_id_config.slug_column
end
test "the configuration's model_class should be the class, not the base_class" do
assert_equal model_class, model_class.friendly_id_config.model_class
end
test "friendly_id should accept a block with single table inheritance" do
abstract_klass = Class.new(ActiveRecord::Base) do
def self.table_exists?; false end
extend FriendlyId
friendly_id :foo do |config|
config.use :slugged
config.base = :foo
config.slug_column = :bar
end
end
klass = Class.new(abstract_klass)
assert klass < FriendlyId::Slugged
assert_equal :foo, klass.friendly_id_config.base
assert_equal :bar, klass.friendly_id_config.slug_column
end
test "friendly_id slugs should not clash with each other" do
transaction do
journalist = model_class.base_class.create! :name => 'foo bar'
editoralist = model_class.create! :name => 'foo bar'
assert_equal 'foo-bar', journalist.slug
assert_match(/foo-bar-.+/, editoralist.slug)
end
end
end
class StiTestWithHistory < StiTest
class Journalist < ActiveRecord::Base
extend FriendlyId
friendly_id :name, :use => [:slugged, :history]
end
class Editorialist < Journalist
end
def model_class
Editorialist
end
end
class StiTestWithFinders < TestCaseClass
include FriendlyId::Test
class Journalist < ActiveRecord::Base
extend FriendlyId
friendly_id :name, :use => [:slugged, :finders]
end
class Editorialist < Journalist
extend FriendlyId
friendly_id :name, :use => [:slugged, :finders]
end
def model_class
Editorialist
end
test "friendly_id slugs should be looked up from subclass with friendly" do
transaction do
editoralist = model_class.create! :name => 'foo bar'
assert_equal editoralist, model_class.friendly.find(editoralist.slug)
end
end
test "friendly_id slugs should be looked up from subclass" do
transaction do
editoralist = model_class.create! :name => 'foo bar'
assert_equal editoralist, model_class.find(editoralist.slug)
end
end
end
class StiTestSubClass < TestCaseClass
include FriendlyId::Test
class Journalist < ActiveRecord::Base
extend FriendlyId
end
class Editorialist < Journalist
extend FriendlyId
friendly_id :name, :use => [:slugged, :finders]
end
def model_class
Editorialist
end
test "friendly_id slugs can be created and looked up from subclass" do
transaction do
editoralist = model_class.create! :name => 'foo bar'
assert_equal editoralist, model_class.find(editoralist.slug)
end
end
end