Commit 36c2effa1b1cb70267ab53906f97e5cbcc102383

Authored by Moises Machado
1 parent 8afe63e2

ActionItem732: destroy tasks when requestor or target is destroyed

app/models/person.rb
@@ -6,6 +6,8 @@ class Person < Profile @@ -6,6 +6,8 @@ class Person < Profile
6 has_many :friendships 6 has_many :friendships
7 has_many :friends, :class_name => 'Person', :through => :friendships 7 has_many :friends, :class_name => 'Person', :through => :friendships
8 8
  9 + has_many :requested_tasks, :class_name => 'Task', :foreign_key => :requestor_id, :dependent => :destroy
  10 +
9 def suggested_friend_groups 11 def suggested_friend_groups
10 (friend_groups + [ _('friends'), _('work'), _('school'), _('family') ]).map {|i| i if !i.empty?}.compact.uniq 12 (friend_groups + [ _('friends'), _('work'), _('school'), _('family') ]).map {|i| i if !i.empty?}.compact.uniq
11 end 13 end
app/models/profile.rb
@@ -98,7 +98,7 @@ class Profile < ActiveRecord::Base @@ -98,7 +98,7 @@ class Profile < ActiveRecord::Base
98 has_many :consumptions 98 has_many :consumptions
99 has_many :consumed_product_categories, :through => :consumptions, :source => :product_category 99 has_many :consumed_product_categories, :through => :consumptions, :source => :product_category
100 100
101 - has_many :tasks, :foreign_key => :target_id 101 + has_many :tasks, :foreign_key => :target_id, :dependent => :destroy
102 102
103 has_many :profile_categorizations, :conditions => [ 'categories_profiles.virtual = ?', false ] 103 has_many :profile_categorizations, :conditions => [ 'categories_profiles.virtual = ?', false ]
104 has_many :categories, :through => :profile_categorizations 104 has_many :categories, :through => :profile_categorizations
test/unit/person_test.rb
@@ -306,4 +306,13 @@ class PersonTest < Test::Unit::TestCase @@ -306,4 +306,13 @@ class PersonTest < Test::Unit::TestCase
306 assert_kind_of Person, p.template 306 assert_kind_of Person, p.template
307 end 307 end
308 308
  309 + should 'destroy all task that it requested when destroyed' do
  310 + p = create_user('test_profile').person
  311 +
  312 + assert_no_difference Task, :count do
  313 + Task.create(:requestor => p)
  314 + p.destroy
  315 + end
  316 + end
  317 +
309 end 318 end
test/unit/profile_test.rb
@@ -929,6 +929,15 @@ class ProfileTest < Test::Unit::TestCase @@ -929,6 +929,15 @@ class ProfileTest < Test::Unit::TestCase
929 assert_equal 6, p.boxes_limit 929 assert_equal 6, p.boxes_limit
930 end 930 end
931 931
  932 + should 'destroy tasks requested to it when destroyed' do
  933 + p = Profile.create!(:name => 'test_profile', :identifier => 'test_profile')
  934 +
  935 + assert_no_difference Task, :count do
  936 + Task.create(:target => p)
  937 + p.destroy
  938 + end
  939 + end
  940 +
932 private 941 private
933 942
934 def assert_invalid_identifier(id) 943 def assert_invalid_identifier(id)
test/unit/task_test.rb
@@ -182,6 +182,14 @@ class TaskTest < Test::Unit::TestCase @@ -182,6 +182,14 @@ class TaskTest < Test::Unit::TestCase
182 t = Task.new 182 t = Task.new
183 assert_equal :perform_task, t.permission 183 assert_equal :perform_task, t.permission
184 end 184 end
  185 +
  186 + should 'be destroyed when requestor destroyed' do
  187 + user = create_user('test_user').person
  188 + assert_no_difference Task, :count do
  189 + Task.create(:requestor => user)
  190 + user.destroy
  191 + end
  192 + end
185 193
186 protected 194 protected
187 195