test/paranoia_test.rb in paranoia-1.0.1 vs test/paranoia_test.rb in paranoia-1.0.2

- old
+ new

@@ -1,17 +1,18 @@ require 'test/unit' require 'active_record' -require 'lib/paranoia' +require File.expand_path(File.dirname(__FILE__) + "/../lib/paranoia") DB_FILE = 'tmp/test_db' FileUtils.mkdir_p File.dirname(DB_FILE) FileUtils.rm_f DB_FILE ActiveRecord::Base.establish_connection :adapter => 'sqlite3', :database => DB_FILE -ActiveRecord::Base.connection.execute 'CREATE TABLE paranoid_models (id INTEGER NOT NULL PRIMARY KEY)' -ActiveRecord::Base.connection.execute 'CREATE TABLE plain_models (id INTEGER NOT NULL PRIMARY KEY)' +ActiveRecord::Base.connection.execute 'CREATE TABLE paranoid_models (id INTEGER NOT NULL PRIMARY KEY, deleted_at DATETIME)' +ActiveRecord::Base.connection.execute 'CREATE TABLE featureful_models (id INTEGER NOT NULL PRIMARY KEY, deleted_at DATETIME, name VARCHAR(32))' +ActiveRecord::Base.connection.execute 'CREATE TABLE plain_models (id INTEGER NOT NULL PRIMARY KEY, deleted_at DATETIME)' class ParanoiaTest < Test::Unit::TestCase def test_plain_model_class_is_not_paranoid assert_equal false, PlainModel.paranoid? end @@ -26,15 +27,64 @@ def test_paranoid_models_are_paranoid assert_equal true, ParanoidModel.new.paranoid? end + def test_delete_behavior_for_plain_models + model = PlainModel.new + assert_equal 0, model.class.count + model.save! + assert_equal 1, model.class.count + model.delete + + assert_equal true, model.deleted_at.nil? + + assert_equal 0, model.class.count + assert_equal 0, model.class.unscoped.count + end + + def test_delete_behavior_for_paranoid_models + model = ParanoidModel.new + assert_equal 0, model.class.count + model.save! + assert_equal 1, model.class.count + model.delete + + assert_equal false, model.deleted_at.nil? + + assert_equal 0, model.class.count + assert_equal 1, model.class.unscoped.count + + end + + def test_delete_behavior_for_featureful_paranoid_models + model = get_featureful_model + assert_equal 0, model.class.count + model.save! + assert_equal 1, model.class.count + model.delete + + assert_equal false, model.deleted_at.nil? + + assert_equal 0, model.class.count + assert_equal 1, model.class.unscoped.count + end + + private + def get_featureful_model + FeaturefulModel.new(:name => "not empty") + end end # Helper classes class ParanoidModel < ActiveRecord::Base acts_as_paranoid +end + +class FeaturefulModel < ActiveRecord::Base + acts_as_paranoid + validates :name, :presence => true, :uniqueness => true end class PlainModel < ActiveRecord::Base end