@@ -37,7 +37,8 @@ def setup!
37
37
'polymorphic_models' => 'parent_id INTEGER, parent_type STRING, deleted_at DATETIME' ,
38
38
'namespaced_paranoid_has_ones' => 'deleted_at DATETIME, paranoid_belongs_tos_id INTEGER' ,
39
39
'namespaced_paranoid_belongs_tos' => 'deleted_at DATETIME, paranoid_has_one_id INTEGER' ,
40
- 'unparanoid_unique_models' => 'name VARCHAR(32), paranoid_with_unparanoids_id INTEGER'
40
+ 'unparanoid_unique_models' => 'name VARCHAR(32), paranoid_with_unparanoids_id INTEGER' ,
41
+ 'active_column_models' => 'deleted_at DATETIME, active BOOLEAN'
41
42
} . each do |table_name , columns_as_sql_string |
42
43
ActiveRecord ::Base . connection . execute "CREATE TABLE #{ table_name } (id INTEGER NOT NULL PRIMARY KEY, #{ columns_as_sql_string } )"
43
44
end
@@ -121,6 +122,22 @@ def test_delete_behavior_for_plain_models_callbacks
121
122
model . remove_called_variables # clear called callback flags
122
123
model . delete
123
124
125
+ assert_equal nil , model . instance_variable_get ( :@update_callback_called )
126
+ assert_equal nil , model . instance_variable_get ( :@save_callback_called )
127
+ assert_equal nil , model . instance_variable_get ( :@validate_called )
128
+ assert_equal nil , model . instance_variable_get ( :@destroy_callback_called )
129
+ assert_equal nil , model . instance_variable_get ( :@after_destroy_callback_called )
130
+ assert_equal nil , model . instance_variable_get ( :@after_commit_callback_called )
131
+ end
132
+
133
+ def test_delete_in_transaction_behavior_for_plain_models_callbacks
134
+ model = CallbackModel . new
135
+ model . save
136
+ model . remove_called_variables # clear called callback flags
137
+ CallbackModel . transaction do
138
+ model . delete
139
+ end
140
+
124
141
assert_equal nil , model . instance_variable_get ( :@update_callback_called )
125
142
assert_equal nil , model . instance_variable_get ( :@save_callback_called )
126
143
assert_equal nil , model . instance_variable_get ( :@validate_called )
@@ -185,6 +202,25 @@ def test_default_sentinel_value
185
202
assert_equal nil , ParanoidModel . paranoia_sentinel_value
186
203
end
187
204
205
+ def test_active_column_model
206
+ model = ActiveColumnModel . new
207
+ assert_equal 0 , model . class . count
208
+ model . save!
209
+ assert_nil model . deleted_at
210
+ assert_equal true , model . active
211
+ assert_equal 1 , model . class . count
212
+ model . destroy
213
+
214
+ assert_equal false , model . deleted_at . nil?
215
+ assert_nil model . active
216
+ assert model . paranoia_destroyed?
217
+
218
+ assert_equal 0 , model . class . count
219
+ assert_equal 1 , model . class . unscoped . count
220
+ assert_equal 1 , model . class . only_deleted . count
221
+ assert_equal 1 , model . class . deleted . count
222
+ end
223
+
188
224
def test_sentinel_value_for_custom_sentinel_models
189
225
model = CustomSentinelModel . new
190
226
assert_equal 0 , model . class . count
@@ -978,6 +1014,24 @@ class CustomSentinelModel < ActiveRecord::Base
978
1014
acts_as_paranoid sentinel_value : DateTime . new ( 0 )
979
1015
end
980
1016
1017
+ class ActiveColumnModel < ActiveRecord ::Base
1018
+ acts_as_paranoid column : :active , sentinel_value : true
1019
+
1020
+ def paranoia_restore_attributes
1021
+ {
1022
+ deleted_at : nil ,
1023
+ active : true
1024
+ }
1025
+ end
1026
+
1027
+ def paranoia_destroy_attributes
1028
+ {
1029
+ deleted_at : current_time_from_proper_timezone ,
1030
+ active : nil
1031
+ }
1032
+ end
1033
+ end
1034
+
981
1035
class NonParanoidModel < ActiveRecord ::Base
982
1036
end
983
1037
0 commit comments