diff --git a/plugins/custom_forms/lib/custom_forms_plugin/field.rb b/plugins/custom_forms/lib/custom_forms_plugin/field.rb index f9e1670..bc7f6a3 100644 --- a/plugins/custom_forms/lib/custom_forms_plugin/field.rb +++ b/plugins/custom_forms/lib/custom_forms_plugin/field.rb @@ -4,7 +4,7 @@ class CustomFormsPlugin::Field < ActiveRecord::Base validates_presence_of :form, :name validates_uniqueness_of :slug, :scope => :form_id - belongs_to :form, :class_name => 'CustomFormsPlugin::Form', :dependent => :destroy + belongs_to :form, :class_name => 'CustomFormsPlugin::Form' has_many :answers, :class_name => 'CustomFormsPlugin::Answer' serialize :choices, Hash diff --git a/plugins/custom_forms/lib/custom_forms_plugin/form.rb b/plugins/custom_forms/lib/custom_forms_plugin/form.rb index b7fa135..984d4de 100644 --- a/plugins/custom_forms/lib/custom_forms_plugin/form.rb +++ b/plugins/custom_forms/lib/custom_forms_plugin/form.rb @@ -1,7 +1,7 @@ class CustomFormsPlugin::Form < Noosfero::Plugin::ActiveRecord belongs_to :profile - has_many :fields, :class_name => 'CustomFormsPlugin::Field' + has_many :fields, :class_name => 'CustomFormsPlugin::Field', :dependent => :destroy has_many :submissions, :class_name => 'CustomFormsPlugin::Submission' serialize :access diff --git a/plugins/custom_forms/test/unit/custom_forms_plugin/field_test.rb b/plugins/custom_forms/test/unit/custom_forms_plugin/field_test.rb index 8262385..34edab1 100644 --- a/plugins/custom_forms/test/unit/custom_forms_plugin/field_test.rb +++ b/plugins/custom_forms/test/unit/custom_forms_plugin/field_test.rb @@ -60,5 +60,16 @@ class CustomFormsPlugin::FieldTest < ActiveSupport::TestCase assert_equal 2, field.choices['Second'] assert_equal 3, field.choices['Third'] end + + should 'not destroy form after removing a field' do + form = CustomFormsPlugin::Form.create!(:name => 'Free Software', :profile => fast_create(Profile)) + license_field = CustomFormsPlugin::Field.create!(:name => 'License', :form => form) + url_field = CustomFormsPlugin::Field.create!(:name => 'URL', :form => form) + + assert_no_difference CustomFormsPlugin::Form, :count do + url_field.destroy + end + assert_equal form.fields, [license_field] + end end diff --git a/plugins/custom_forms/test/unit/custom_forms_plugin/form_test.rb b/plugins/custom_forms/test/unit/custom_forms_plugin/form_test.rb index 09ccb85..dc38c21 100644 --- a/plugins/custom_forms/test/unit/custom_forms_plugin/form_test.rb +++ b/plugins/custom_forms/test/unit/custom_forms_plugin/form_test.rb @@ -169,4 +169,15 @@ class CustomFormsPlugin::FormTest < ActiveSupport::TestCase assert_includes scope, f2 assert_not_includes scope, f3 end + + should 'destroy fields after removing a form' do + form = CustomFormsPlugin::Form.create!(:name => 'Free Software', :profile => fast_create(Profile)) + license_field = CustomFormsPlugin::Field.create!(:name => 'License', :form => form) + url_field = CustomFormsPlugin::Field.create!(:name => 'URL', :form => form) + + assert_difference CustomFormsPlugin::Field, :count, -2 do + form.destroy + end + end + end -- libgit2 0.21.2