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