test/slug_history_test.rb in pseudocephalopod-0.1.0 vs test/slug_history_test.rb in pseudocephalopod-0.2.0

- old
+ new

@@ -5,25 +5,72 @@ def self.slug_scope_key; "faked_models"; end def initialize(id); @id = id; end end class SlugHistoryTest < Test::Unit::TestCase - with_tables :slugs do + with_tables :slugs, :users do - setup do - @record_a = FakedModel.new(12) - @record_b = FakedModel.new(4) - Pseudocephalopod.record_slug(@record_a, "awesome") - Pseudocephalopod.record_slug(@record_b, "awesome-1") - Pseudocephalopod.record_slug(@record_a, "ninjas") + context 'for arbitrary models' do + + setup do + @record_a = FakedModel.new(12) + @record_b = FakedModel.new(4) + Pseudocephalopod.record_slug(@record_a, "awesome") + Pseudocephalopod.record_slug(@record_b, "awesome-1") + Pseudocephalopod.record_slug(@record_a, "ninjas") + end + + should 'let you lookup a given record id easily' do + assert Pseudocephalopod.last_known_slug_id(FakedModel, "felafel").blank? + assert Pseudocephalopod.last_known_slug_id(FakedModel, "ninjas-2").blank? + assert_equal 12, Pseudocephalopod.last_known_slug_id(FakedModel, "awesome") + assert_equal 4, Pseudocephalopod.last_known_slug_id(FakedModel, "awesome-1") + assert_equal 12, Pseudocephalopod.last_known_slug_id(FakedModel, "ninjas") + end + + should 'let you return slug history for a given record' + end - should 'let you lookup a given record id easily' do - assert Pseudocephalopod.last_known_slug_id(FakedModel, "felafel").blank? - assert Pseudocephalopod.last_known_slug_id(FakedModel, "ninjas-2").blank? - assert_equal 12, Pseudocephalopod.last_known_slug_id(FakedModel, "awesome") - assert_equal 4, Pseudocephalopod.last_known_slug_id(FakedModel, "awesome-1") - assert_equal 12, Pseudocephalopod.last_known_slug_id(FakedModel, "ninjas") + context 'on a specific record' do + + should 'by default record slug history' do + setup_slugs! + user = User.create :name => "Bob" + assert_equal [], user.previous_slugs + user.update_attributes! :name => "Sal" + user.update_attributes! :name => "Red" + user.update_attributes! :name => "Jim" + assert_same_as_slug user, "red" + assert_same_as_slug user, "sal" + assert_same_as_slug user, "bob" + assert_same_as_slug user, "jim" + end + + should 'let you reset history for a slug' do + setup_slugs! + user = User.create :name => "Bob" + user.update_attributes! :name => "Sal" + user.update_attributes! :name => "Red" + user.update_attributes! :name => "Jim" + assert_equal ["red", "sal", "bob"], user.previous_slugs + user.remove_slug_history! + assert_equal [], user.previous_slugs + assert_none_for_slug "red" + assert_none_for_slug "sal" + assert_none_for_slug "bob" + end + + should 'let you disable recording of slug history' do + setup_slugs! :history => false + user = User.create(:name => "Bob") + assert !user.respond_to?(:previous_slugs) + user.update_attributes! :name => "Red" + assert_same_as_slug user, "red" + assert_different_to_slug user, "bob" + assert_none_for_slug "bob" + end + end end end \ No newline at end of file