Commit 8d3bc89247caf944faeee7ef7d6b6d50dfd4142c

Authored by Larissa Reis
1 parent 49fc73d7

Cancels survey tasks after removing a form

plugins/custom_forms/lib/custom_forms_plugin/form.rb
@@ -17,6 +17,11 @@ class CustomFormsPlugin::Form < Noosfero::Plugin::ActiveRecord @@ -17,6 +17,11 @@ class CustomFormsPlugin::Form < Noosfero::Plugin::ActiveRecord
17 form.access = nil if form.access.blank? 17 form.access = nil if form.access.blank?
18 end 18 end
19 19
  20 + after_destroy do |form|
  21 + tasks = CustomFormsPlugin::MembershipSurvey.from(form.profile).opened.select { |t| t.form_id == form.id }
  22 + tasks.each {|task| task.cancel}
  23 + end
  24 +
20 named_scope :from, lambda {|profile| {:conditions => {:profile_id => profile.id}}} 25 named_scope :from, lambda {|profile| {:conditions => {:profile_id => profile.id}}}
21 named_scope :on_memberships, {:conditions => {:on_membership => true, :for_admission => false}} 26 named_scope :on_memberships, {:conditions => {:on_membership => true, :for_admission => false}}
22 named_scope :for_admissions, {:conditions => {:for_admission => true}} 27 named_scope :for_admissions, {:conditions => {:for_admission => true}}
plugins/custom_forms/test/unit/custom_forms_plugin/form_test.rb
@@ -211,4 +211,23 @@ class CustomFormsPlugin::FormTest < ActiveSupport::TestCase @@ -211,4 +211,23 @@ class CustomFormsPlugin::FormTest < ActiveSupport::TestCase
211 assert_includes scope, f1 211 assert_includes scope, f1
212 assert_not_includes scope, f2 212 assert_not_includes scope, f2
213 end 213 end
  214 +
  215 + should 'cancel survey tasks after removing a form' do
  216 + profile = fast_create(Profile)
  217 + person = fast_create(Person)
  218 +
  219 + form1 = CustomFormsPlugin::Form.create!(:name => 'Free Software', :profile => profile)
  220 + form2 = CustomFormsPlugin::Form.create!(:name => 'Operation System', :profile => profile)
  221 +
  222 + task1 = CustomFormsPlugin::MembershipSurvey.create!(:form_id => form1.id, :target => person, :requestor => profile)
  223 + task2 = CustomFormsPlugin::MembershipSurvey.create!(:form_id => form2.id, :target => person, :requestor => profile)
  224 +
  225 + assert_includes Task.opened, task1
  226 + assert_includes Task.opened, task2
  227 + form1.destroy
  228 + assert_includes Task.canceled, task1
  229 + assert_includes Task.opened, task2
  230 + form2.destroy
  231 + assert_includes Task.canceled, task2
  232 + end
214 end 233 end