Commit f11c3f21347479d59bda2af52338d785d1bbaf66
1 parent
e69c983e
Exists in
master
and in
28 other branches
Keeping form after removing a field on CustomFormPlugin
Also destroying fields after removing a form (ActionItem2601)
Showing
4 changed files
with
24 additions
and
2 deletions
Show diff stats
plugins/custom_forms/lib/custom_forms_plugin/field.rb
@@ -4,7 +4,7 @@ class CustomFormsPlugin::Field < ActiveRecord::Base | @@ -4,7 +4,7 @@ class CustomFormsPlugin::Field < ActiveRecord::Base | ||
4 | validates_presence_of :form, :name | 4 | validates_presence_of :form, :name |
5 | validates_uniqueness_of :slug, :scope => :form_id | 5 | validates_uniqueness_of :slug, :scope => :form_id |
6 | 6 | ||
7 | - belongs_to :form, :class_name => 'CustomFormsPlugin::Form', :dependent => :destroy | 7 | + belongs_to :form, :class_name => 'CustomFormsPlugin::Form' |
8 | has_many :answers, :class_name => 'CustomFormsPlugin::Answer' | 8 | has_many :answers, :class_name => 'CustomFormsPlugin::Answer' |
9 | 9 | ||
10 | serialize :choices, Hash | 10 | serialize :choices, Hash |
plugins/custom_forms/lib/custom_forms_plugin/form.rb
1 | class CustomFormsPlugin::Form < Noosfero::Plugin::ActiveRecord | 1 | class CustomFormsPlugin::Form < Noosfero::Plugin::ActiveRecord |
2 | belongs_to :profile | 2 | belongs_to :profile |
3 | 3 | ||
4 | - has_many :fields, :class_name => 'CustomFormsPlugin::Field' | 4 | + has_many :fields, :class_name => 'CustomFormsPlugin::Field', :dependent => :destroy |
5 | has_many :submissions, :class_name => 'CustomFormsPlugin::Submission' | 5 | has_many :submissions, :class_name => 'CustomFormsPlugin::Submission' |
6 | 6 | ||
7 | serialize :access | 7 | serialize :access |
plugins/custom_forms/test/unit/custom_forms_plugin/field_test.rb
@@ -60,5 +60,16 @@ class CustomFormsPlugin::FieldTest < ActiveSupport::TestCase | @@ -60,5 +60,16 @@ class CustomFormsPlugin::FieldTest < ActiveSupport::TestCase | ||
60 | assert_equal 2, field.choices['Second'] | 60 | assert_equal 2, field.choices['Second'] |
61 | assert_equal 3, field.choices['Third'] | 61 | assert_equal 3, field.choices['Third'] |
62 | end | 62 | end |
63 | + | ||
64 | + should 'not destroy form after removing a field' do | ||
65 | + form = CustomFormsPlugin::Form.create!(:name => 'Free Software', :profile => fast_create(Profile)) | ||
66 | + license_field = CustomFormsPlugin::Field.create!(:name => 'License', :form => form) | ||
67 | + url_field = CustomFormsPlugin::Field.create!(:name => 'URL', :form => form) | ||
68 | + | ||
69 | + assert_no_difference CustomFormsPlugin::Form, :count do | ||
70 | + url_field.destroy | ||
71 | + end | ||
72 | + assert_equal form.fields, [license_field] | ||
73 | + end | ||
63 | end | 74 | end |
64 | 75 |
plugins/custom_forms/test/unit/custom_forms_plugin/form_test.rb
@@ -169,4 +169,15 @@ class CustomFormsPlugin::FormTest < ActiveSupport::TestCase | @@ -169,4 +169,15 @@ class CustomFormsPlugin::FormTest < ActiveSupport::TestCase | ||
169 | assert_includes scope, f2 | 169 | assert_includes scope, f2 |
170 | assert_not_includes scope, f3 | 170 | assert_not_includes scope, f3 |
171 | end | 171 | end |
172 | + | ||
173 | + should 'destroy fields after removing a form' do | ||
174 | + form = CustomFormsPlugin::Form.create!(:name => 'Free Software', :profile => fast_create(Profile)) | ||
175 | + license_field = CustomFormsPlugin::Field.create!(:name => 'License', :form => form) | ||
176 | + url_field = CustomFormsPlugin::Field.create!(:name => 'URL', :form => form) | ||
177 | + | ||
178 | + assert_difference CustomFormsPlugin::Field, :count, -2 do | ||
179 | + form.destroy | ||
180 | + end | ||
181 | + end | ||
182 | + | ||
172 | end | 183 | end |