dynamic_fieldsets 0.0.16 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (97) hide show
  1. data/.rdebugrc +3 -0
  2. data/.rspec +1 -0
  3. data/CHANGELOG +7 -0
  4. data/Gemfile +17 -8
  5. data/Gemfile.lock +77 -60
  6. data/README.rdoc +1 -1
  7. data/VERSION +1 -1
  8. data/app/controllers/dynamic_fieldsets/fields_controller.rb +5 -4
  9. data/app/helpers/dynamic_fieldsets_helper.rb +48 -131
  10. data/app/models/dynamic_fieldsets.rb +2 -0
  11. data/app/models/dynamic_fieldsets/checkbox_field.rb +29 -0
  12. data/app/models/dynamic_fieldsets/date_field.rb +37 -0
  13. data/app/models/dynamic_fieldsets/datetime_field.rb +36 -0
  14. data/app/models/dynamic_fieldsets/dependency.rb +1 -1
  15. data/app/models/dynamic_fieldsets/dependency_clause.rb +1 -1
  16. data/app/models/dynamic_fieldsets/dependency_group.rb +1 -1
  17. data/app/models/dynamic_fieldsets/field.rb +170 -42
  18. data/app/models/dynamic_fieldsets/field_default.rb +3 -3
  19. data/app/models/dynamic_fieldsets/field_html_attribute.rb +1 -1
  20. data/app/models/dynamic_fieldsets/field_option.rb +1 -1
  21. data/app/models/dynamic_fieldsets/field_record.rb +1 -1
  22. data/app/models/dynamic_fieldsets/fieldset.rb +36 -1
  23. data/app/models/dynamic_fieldsets/fieldset_associator.rb +9 -34
  24. data/app/models/dynamic_fieldsets/fieldset_child.rb +43 -24
  25. data/app/models/dynamic_fieldsets/instruction_field.rb +35 -0
  26. data/app/models/dynamic_fieldsets/multiple_select_field.rb +43 -0
  27. data/app/models/dynamic_fieldsets/radio_field.rb +27 -0
  28. data/app/models/dynamic_fieldsets/select_field.rb +16 -0
  29. data/app/models/dynamic_fieldsets/text_field.rb +14 -0
  30. data/app/models/dynamic_fieldsets/textarea_field.rb +40 -0
  31. data/app/views/dynamic_fieldsets/fields/_form.html.erb +50 -52
  32. data/app/views/dynamic_fieldsets/fields/edit.html.erb +5 -2
  33. data/app/views/dynamic_fieldsets/fields/index.html.erb +1 -1
  34. data/app/views/dynamic_fieldsets/fields/new.html.erb +3 -1
  35. data/app/views/dynamic_fieldsets/fields/show.html.erb +1 -1
  36. data/app/views/dynamic_fieldsets/fieldsets/_child.html.erb +1 -1
  37. data/app/views/dynamic_fieldsets/form_partials/_checkbox_field.html.erb +8 -0
  38. data/app/views/dynamic_fieldsets/form_partials/_date_field.html.erb +1 -0
  39. data/app/views/dynamic_fieldsets/form_partials/_datetime_field.html.erb +1 -0
  40. data/app/views/dynamic_fieldsets/form_partials/_input_footer.html.erb +1 -0
  41. data/app/views/dynamic_fieldsets/form_partials/_input_header.html.erb +7 -0
  42. data/app/views/dynamic_fieldsets/form_partials/_instruction_field.html.erb +1 -0
  43. data/app/views/dynamic_fieldsets/form_partials/_multiple_select_field.html.erb +1 -0
  44. data/app/views/dynamic_fieldsets/form_partials/_radio_field.html.erb +8 -0
  45. data/app/views/dynamic_fieldsets/form_partials/_select_field.html.erb +1 -0
  46. data/app/views/dynamic_fieldsets/form_partials/_text_field.html.erb +1 -0
  47. data/app/views/dynamic_fieldsets/form_partials/_textarea_field.html.erb +1 -0
  48. data/app/views/dynamic_fieldsets/shared/_javascript_watcher.html.erb +8 -8
  49. data/app/views/dynamic_fieldsets/show_partials/_show_incomplete.html.erb +1 -0
  50. data/app/views/dynamic_fieldsets/show_partials/_show_incomplete_footer.html.erb +2 -0
  51. data/app/views/dynamic_fieldsets/show_partials/_show_incomplete_header.html.erb +1 -0
  52. data/app/views/dynamic_fieldsets/show_partials/_show_instruction.html.erb +1 -0
  53. data/app/views/dynamic_fieldsets/show_partials/_show_multiple_answers.html.erb +13 -0
  54. data/app/views/dynamic_fieldsets/show_partials/_show_single_answer.html.erb +8 -0
  55. data/autotest/discover.rb +2 -0
  56. data/dynamic_fieldsets.gemspec +74 -20
  57. data/lib/dynamic_fieldsets/config.rb +45 -0
  58. data/lib/dynamic_fieldsets/dynamic_fieldsets_in_model.rb +38 -63
  59. data/lib/dynamic_fieldsets/field_with_field_options.rb +58 -0
  60. data/lib/dynamic_fieldsets/field_with_multiple_answers.rb +89 -0
  61. data/lib/dynamic_fieldsets/field_with_single_answer.rb +84 -0
  62. data/lib/dynamic_fieldsets/railtie.rb +6 -1
  63. data/lib/generators/dynamic_fieldsets/install_generator.rb +3 -3
  64. data/lib/generators/dynamic_fieldsets/templates/config.rb +15 -0
  65. data/lib/generators/dynamic_fieldsets/templates/migrations/install_migration.rb +1 -1
  66. data/spec/dummy/config/initializers/dynamic_fieldsets.rb +15 -0
  67. data/spec/dummy/db/migrate/20120213211033_create_dynamic_fieldsets_tables.rb +1 -1
  68. data/spec/dummy/db/schema.rb +1 -1
  69. data/spec/dummy/features/step_definitions/field_steps.rb +4 -4
  70. data/spec/dummy/features/step_definitions/fieldset_children_steps.rb +2 -2
  71. data/spec/dummy/features/step_definitions/javascript_steps.rb +7 -7
  72. data/spec/dynamic_fieldsets_helper_spec.rb +278 -312
  73. data/spec/dynamic_fieldsets_in_model_spec.rb +2 -2
  74. data/spec/field_with_field_options_spec.rb +49 -0
  75. data/spec/field_with_multiple_answers_spec.rb +50 -0
  76. data/spec/field_with_single_answer_spec.rb +51 -0
  77. data/spec/models/checkbox_field_spec.rb +19 -0
  78. data/spec/models/date_field_spec.rb +24 -0
  79. data/spec/models/datetime_field_spec.rb +24 -0
  80. data/spec/models/dependency_clause_spec.rb +7 -8
  81. data/spec/models/dependency_group_spec.rb +27 -30
  82. data/spec/models/dependency_spec.rb +8 -9
  83. data/spec/models/field_default_spec.rb +19 -14
  84. data/spec/models/field_html_attribute_spec.rb +3 -4
  85. data/spec/models/field_option_spec.rb +8 -9
  86. data/spec/models/field_record_spec.rb +8 -9
  87. data/spec/models/field_spec.rb +195 -94
  88. data/spec/models/fieldset_associator_spec.rb +39 -41
  89. data/spec/models/fieldset_child_spec.rb +99 -47
  90. data/spec/models/fieldset_spec.rb +25 -29
  91. data/spec/models/instruction_field_spec.rb +38 -0
  92. data/spec/models/multiple_select_field_spec.rb +31 -0
  93. data/spec/models/radio_field_spec.rb +21 -0
  94. data/spec/models/text_field_spec.rb +19 -0
  95. data/spec/models/textarea_field_spec.rb +39 -0
  96. data/spec/support/field_helper.rb +1 -1
  97. metadata +106 -28
@@ -1,20 +1,19 @@
1
1
  require 'spec_helper'
2
- include DynamicFieldsets
3
2
 
4
- describe FieldsetAssociator do
3
+ describe DynamicFieldsets::FieldsetAssociator do
5
4
  include FieldsetAssociatorHelper
6
5
 
7
6
  it "should respond to fieldset" do
8
- FieldsetAssociator.new.should respond_to :fieldset
7
+ DynamicFieldsets::FieldsetAssociator.new.should respond_to :fieldset
9
8
  end
10
9
 
11
10
  it "should respond to field_records" do
12
- FieldsetAssociator.new.should respond_to :field_records
11
+ DynamicFieldsets::FieldsetAssociator.new.should respond_to :field_records
13
12
  end
14
13
 
15
14
  describe "validations" do
16
15
  before(:each) do
17
- @fsa = FieldsetAssociator.new
16
+ @fsa = DynamicFieldsets::FieldsetAssociator.new
18
17
  end
19
18
 
20
19
  it "should be valid" do
@@ -41,46 +40,47 @@ describe FieldsetAssociator do
41
40
  it "should error require a unique field model, field model name pair" do
42
41
  @fsa.attributes = valid_attributes
43
42
  @fsa.save
44
- fsa2 = FieldsetAssociator.new
43
+ fsa2 = DynamicFieldsets::FieldsetAssociator.new
45
44
  fsa2.should have(1).error_on(:fieldset_model_name)
46
45
  end
47
46
  end
48
47
 
49
48
  describe "find_by_fieldset_model_parameters" do
50
49
  before(:each) do
51
- @fieldset = mock_model(Fieldset)
50
+ @fieldset = mock_model(DynamicFieldsets::Fieldset)
52
51
  @fieldset.stub!(:nkey).and_return(":hire_form")
53
52
  @fieldset.stub!(:id).and_return(1)
54
- @fsa = FieldsetAssociator.create(valid_attributes)
53
+ @fsa = DynamicFieldsets::FieldsetAssociator.create(valid_attributes)
55
54
 
56
55
  @fieldset_model_attributes = valid_attributes
57
56
  @fieldset_model_attributes[:fieldset] = :hire_form
58
57
  end
59
58
 
60
59
  it "should respond to find_by_fieldset_model_parameters" do
61
- FieldsetAssociator.should respond_to :find_by_fieldset_model_parameters
60
+ DynamicFieldsets::FieldsetAssociator.should respond_to :find_by_fieldset_model_parameters
62
61
  end
63
62
 
64
- it "should call Fieldset find_by_nkey" do
65
- Fieldset.should_receive(:find_by_nkey).and_return(@fieldset)
66
- FieldsetAssociator.find_by_fieldset_model_parameters(@fieldset_model_attributes)
63
+ it "should call DynamicFieldsets::Fieldset find_by_nkey" do
64
+ DynamicFieldsets::Fieldset.should_receive(:find_by_nkey).and_return(@fieldset)
65
+ DynamicFieldsets::FieldsetAssociator.find_by_fieldset_model_parameters(@fieldset_model_attributes)
67
66
  end
68
67
 
69
68
  it "should throw an error if the fieldset does not exist" do
70
- Fieldset.stub!(:find_by_nkey).and_return(nil)
71
- lambda { FieldsetAssociator.find_by_fieldset_model_parameters(@fieldset_model_attributes) }.should raise_error
69
+ DynamicFieldsets::Fieldset.stub!(:find_by_nkey).and_return(nil)
70
+ lambda { DynamicFieldsets::FieldsetAssociator.find_by_fieldset_model_parameters(@fieldset_model_attributes) }.should raise_error
72
71
  end
73
72
 
74
73
  it "should return the correct fieldset associator" do
75
- Fieldset.stub!(:find_by_nkey).and_return(@fieldset)
74
+ DynamicFieldsets::Fieldset.stub!(:find_by_nkey).and_return(@fieldset)
76
75
  # this is a fun hack because of all the fsas being made during tests
77
- FieldsetAssociator.find_by_fieldset_model_parameters(@fieldset_model_attributes).should include @fsa
76
+ DynamicFieldsets::FieldsetAssociator.find_by_fieldset_model_parameters(@fieldset_model_attributes).should include @fsa
78
77
  end
79
78
  end
80
79
 
81
80
  describe "field_values method" do
82
81
  before(:each) do
83
- @fsa = FieldsetAssociator.new
82
+ pending "this method was completely rewritten. Most of the functionality was moved to other models."
83
+ @fsa = DynamicFieldsets::FieldsetAssociator.new
84
84
 
85
85
  @field = mock_model DynamicFieldsets::Field
86
86
  @fieldset_child = mock_model DynamicFieldsets::FieldsetChild
@@ -95,7 +95,7 @@ describe FieldsetAssociator do
95
95
  end
96
96
 
97
97
  it "returns a hash" do
98
- @fieldset_child.child.stub!(:field_type).and_return ''
98
+ @fieldset_child.child.stub!(:type).and_return ''
99
99
  @fsa.field_values.should be_a_kind_of Hash
100
100
  end
101
101
 
@@ -107,27 +107,27 @@ describe FieldsetAssociator do
107
107
  # I am aware these two tests aren't really realistic because ids should be different
108
108
  # Results should be consistent with these when ids are different
109
109
  it "returns multiple select values as an array of ids" do
110
- @fieldset_child.child.stub!(:field_type).and_return 'multiple_select'
110
+ @fieldset_child.child.stub!(:type).and_return 'multiple_select'
111
111
  @fsa.field_values.should == { 37 => [42, 42] }
112
112
  end
113
113
 
114
114
  it "returns checkboxes values as an array of ids" do
115
- @field.stub!(:field_type).and_return 'checkbox'
115
+ @field.stub!(:type).and_return 'checkbox'
116
116
  @fsa.field_values.should == { 37 => [42, 42] }
117
117
  end
118
118
 
119
119
  it "returns select values as an id" do
120
- @field.stub!(:field_type).and_return 'select'
120
+ @field.stub!(:type).and_return 'select'
121
121
  @fsa.field_values.should == { 37 => 42 }
122
122
  end
123
123
 
124
124
  it "returns radio values as an id" do
125
- @field.stub!(:field_type).and_return 'radio'
125
+ @field.stub!(:type).and_return 'radio'
126
126
  @fsa.field_values.should == { 37 => 42 }
127
127
  end
128
128
 
129
129
  it "returns all other field types as strings" do
130
- @field.stub!(:field_type).and_return 'textfield'
130
+ @field.stub!(:type).and_return 'textfield'
131
131
  @field_record.stub!(:value).and_return 'forty two'
132
132
  @fsa.field_values.should == { 37 => "forty two" }
133
133
  end
@@ -136,12 +136,12 @@ describe FieldsetAssociator do
136
136
  # these tests seem silly when they don't hit the database
137
137
  describe "field_records_by_field_name method" do
138
138
  before(:each) do
139
- @fieldset = Fieldset.new
140
- @field = Field.new(:name => "test_field")
141
- @child = FieldsetChild.new(:fieldset => @fieldset, :child => @field)
139
+ @fieldset = DynamicFieldsets::Fieldset.new
140
+ @field = DynamicFieldsets::Field.new(:name => "test_field")
141
+ @child = DynamicFieldsets::FieldsetChild.new(:fieldset => @fieldset, :child => @field)
142
142
 
143
- @fsa = FieldsetAssociator.new(:fieldset => @fieldset)
144
- @record = FieldRecord.new(:fieldset_child => @child)
143
+ @fsa = DynamicFieldsets::FieldsetAssociator.new(:fieldset => @fieldset)
144
+ @record = DynamicFieldsets::FieldRecord.new(:fieldset_child => @child)
145
145
 
146
146
  @fsa.stub!(:field_records).and_return([@record])
147
147
  end
@@ -157,22 +157,22 @@ describe FieldsetAssociator do
157
157
 
158
158
  describe "dependency_child_hash and look_for_dependents" do
159
159
  before(:each) do
160
- @fsa = FieldsetAssociator.new
160
+ @fsa = DynamicFieldsets::FieldsetAssociator.new
161
161
 
162
- @fieldset1 = Fieldset.new
162
+ @fieldset1 = DynamicFieldsets::Fieldset.new
163
163
  @fieldset1.stub!(:id).and_return(100)
164
- @fieldset2 = Fieldset.new
164
+ @fieldset2 = DynamicFieldsets::Fieldset.new
165
165
  @fieldset2.stub!(:id).and_return(200)
166
166
 
167
- @field1 = Field.new
167
+ @field1 = DynamicFieldsets::Field.new
168
168
  @field1.stub!(:id).and_return(100)
169
- @field2 = Field.new
169
+ @field2 = DynamicFieldsets::Field.new
170
170
  @field2.stub!(:id).and_return(200)
171
171
 
172
172
  @fsa.stub!(:fieldset_id).and_return(100)
173
173
  @fsa.stub!(:fieldset).and_return(@fieldset1)
174
174
 
175
- @fsc1 = FieldsetChild.new
175
+ @fsc1 = DynamicFieldsets::FieldsetChild.new
176
176
  @fsc1.stub!(:id).and_return(100)
177
177
  @fsc1.stub!(:fieldset_id).and_return(@fieldset1.id)
178
178
  @fsc1.stub!(:child_id).and_return(@fieldset2.id)
@@ -180,14 +180,14 @@ describe FieldsetAssociator do
180
180
  @fsc1.stub!(:child).and_return(@fieldset2)
181
181
  @fieldset1.stub!(:fieldset_children).and_return([@fsc1])
182
182
 
183
- @fsc2 = FieldsetChild.new
183
+ @fsc2 = DynamicFieldsets::FieldsetChild.new
184
184
  @fsc2.stub!(:id).and_return(200)
185
185
  @fsc2.stub!(:fieldset_id).and_return(@fieldset2.id)
186
186
  @fsc2.stub!(:child_id).and_return(@field1.id)
187
187
  @fsc2.stub!(:child_type).and_return("DynamicFieldsets::Field")
188
188
  @fsc2.stub!(:child).and_return(@field1)
189
189
 
190
- @fsc3 = FieldsetChild.new
190
+ @fsc3 = DynamicFieldsets::FieldsetChild.new
191
191
  @fsc3.stub!(:id).and_return(300)
192
192
  @fsc3.stub!(:fieldset_id).and_return(@fieldset2.id)
193
193
  @fsc3.stub!(:child_id).and_return(@field2.id)
@@ -196,19 +196,19 @@ describe FieldsetAssociator do
196
196
 
197
197
  @fieldset2.stub!(:fieldset_children).and_return([@fsc2, @fsc3])
198
198
 
199
- @group = DependencyGroup.new
199
+ @group = DynamicFieldsets::DependencyGroup.new
200
200
  @group.stub!(:id).and_return(100)
201
201
  @group.stub!(:fieldset_child_id).and_return(@fsc3.id)
202
202
  @group.stub!(:fieldset_child).and_return(@fsc3)
203
203
  @group.stub!(:action).and_return("show")
204
204
 
205
- @clause = DependencyClause.new
205
+ @clause = DynamicFieldsets::DependencyClause.new
206
206
  @clause.stub!(:id).and_return(100)
207
207
  @clause.stub!(:dependency_group).and_return(@group)
208
208
  @clause.stub!(:dependency_group_id).and_return(@group.id)
209
209
  @group.stub!(:dependency_clauses).and_return([@clause])
210
210
 
211
- @dependency = Dependency.new
211
+ @dependency = DynamicFieldsets::Dependency.new
212
212
  @dependency.stub!(:id).and_return(100)
213
213
  @dependency.stub!(:value).and_return(5)
214
214
  @dependency.stub!(:relationship).and_return("equals")
@@ -266,7 +266,5 @@ describe FieldsetAssociator do
266
266
  }
267
267
  @fsa.dependency_child_hash.should == expected_results
268
268
  end
269
-
270
269
  end
271
-
272
270
  end
@@ -1,32 +1,35 @@
1
1
  require 'spec_helper'
2
- include DynamicFieldsets
3
2
 
4
- describe FieldsetChild do
3
+ describe DynamicFieldsets::FieldsetChild do
5
4
  include FieldsetChildHelper
6
5
 
7
- it "should respond to fieldset" do
8
- FieldsetChild.new.should respond_to :fieldset
6
+ before do
7
+ @child = DynamicFieldsets::FieldsetChild.new
9
8
  end
10
9
 
11
- it "should respond to child" do
12
- FieldsetChild.new.should respond_to :child
13
- end
14
-
15
- it "should respond to dependency_group" do
16
- FieldsetChild.new.should respond_to :dependency_group
17
- end
10
+ subject { @child }
18
11
 
19
- it "should respond to field_records" do
20
- FieldsetChild.new.should respond_to :field_records
12
+ describe "fields" do
13
+ it { should respond_to :fieldset_id }
14
+ it { should respond_to :child_id }
15
+ it { should respond_to :child_type }
16
+ it { should respond_to :order_num }
21
17
  end
22
18
 
23
- it "should respond to order_num" do
24
- FieldsetChild.new.should respond_to :order_num
19
+ describe "associations" do
20
+ before do
21
+ pending "can't get shoulda working"
22
+ end
23
+ it { should belong_to :child }
24
+ it { should belong_to :fieldset }
25
+ it { should have_many :field_records }
26
+ it { should have_one :dependency_group }
27
+ it { should have_many :dependencies }
25
28
  end
26
29
 
27
30
  describe "validations" do
28
31
  before(:each) do
29
- @fieldset_child = FieldsetChild.new
32
+ @fieldset_child = DynamicFieldsets::FieldsetChild.new
30
33
  end
31
34
  it "are valid" do
32
35
  @fieldset_child.attributes = valid_attributes
@@ -47,56 +50,94 @@ describe FieldsetChild do
47
50
  @fieldset_child.should have(1).error_on(:order_num)
48
51
  end
49
52
 
50
- it "should allow a child type of 'DynamicFieldsets::Field'" do
51
- @fieldset_child.child_type = "DynamicFieldsets::Field"
52
- @fieldset_child.should have(0).error_on(:child_type)
53
+ describe "validates includsion of child type" do
54
+ it "should allow a child type of 'DynamicFieldsets::Field'" do
55
+ @fieldset_child.child_type = "DynamicFieldsets::Field"
56
+ @fieldset_child.should have(0).error_on(:child_type)
57
+ end
58
+
59
+ it "should allow a child type of 'DynamicFieldsets::Fieldset'" do
60
+ @fieldset_child.child_type = "DynamicFieldsets::Fieldset"
61
+ @fieldset_child.should have(0).error_on(:child_type)
62
+ end
63
+
64
+ it "should not allow a child type if not 'DynamicFieldsets::Field' or 'DynamicFieldsets::Fieldset'" do
65
+ @fieldset_child.child_type = "Not Field or Fieldset"
66
+ @fieldset_child.should have(1).error_on(:child_type)
67
+ end
53
68
  end
54
69
 
55
- it "should allow a child type of 'DynamicFieldsets::Fieldset'" do
56
- @fieldset_child.child_type = "DynamicFieldsets::Fieldset"
57
- @fieldset_child.should have(0).error_on(:child_type)
58
- end
59
-
60
- it "should not allow a child type if not 'DynamicFieldsets::Field' or 'DynamicFieldsets::Fieldset'" do
61
- @fieldset_child.child_type = "Not Field or Fieldset"
62
- @fieldset_child.should have(1).error_on(:child_type)
70
+ it "should call these additional validators" do
71
+ @fieldset_child.should_receive(:no_duplicate_fields_in_fieldset_children)
72
+ @fieldset_child.should_receive(:cannot_be_own_parent)
73
+ @fieldset_child.should_receive(:no_parental_loop)
74
+ @fieldset_child.valid?
63
75
  end
64
76
 
77
+ # no_duplicate_fields_in_fieldset_children
65
78
  it "should not allow duplicate pairings of fieldsets and fields" do
66
- fieldset = Fieldset.new
67
- field = Field.new
79
+ fieldset = DynamicFieldsets::Fieldset.new
80
+ field = DynamicFieldsets::Field.new
68
81
  field.stub!(:id).and_return(100)
69
- fieldset_child1 = FieldsetChild.new(:fieldset => fieldset, :child => field, :order_num => 1)
82
+ fieldset_child1 = DynamicFieldsets::FieldsetChild.new(:fieldset => fieldset, :child => field, :order_num => 1)
70
83
  fieldset_child1.stub!(:id).and_return(100)
71
- fieldset_child2 = FieldsetChild.new(:fieldset => fieldset, :child => field, :order_num => 2)
72
- FieldsetChild.stub!(:where).and_return([fieldset_child1])
84
+ fieldset_child2 = DynamicFieldsets::FieldsetChild.new(:fieldset => fieldset, :child => field, :order_num => 2)
85
+ DynamicFieldsets::FieldsetChild.stub!(:where).and_return([fieldset_child1])
73
86
  fieldset_child2.should have(1).error_on(:child_id)
74
87
  end
75
88
 
89
+ # cannot_be_own_parent
76
90
  # this should have two errors, because it's also a loop
77
91
  it "cannot be it's own parent" do
78
- fieldset = Fieldset.new
92
+ fieldset = DynamicFieldsets::Fieldset.new
79
93
  fieldset.stub!(:id).and_return(100)
80
- fieldset_child = FieldsetChild.new(:fieldset_id => fieldset.id, :child => fieldset, :order_num => 1)
94
+ fieldset_child = DynamicFieldsets::FieldsetChild.new(:fieldset_id => fieldset.id, :child => fieldset, :order_num => 1)
81
95
  fieldset_child.should have(2).error_on(:child_id)
82
96
  end
83
97
 
98
+ # no_parental_loop
84
99
  it "should not allow a parent fieldset when it would create a cycle" do
85
- fieldset1 = Fieldset.new
100
+ fieldset1 = DynamicFieldsets::Fieldset.new
86
101
  fieldset1.stub!(:id).and_return(100)
87
- fieldset2 = Fieldset.new
102
+ fieldset2 = DynamicFieldsets::Fieldset.new
88
103
  fieldset2.stub!(:id).and_return(200)
89
- fieldset3 = Fieldset.new
104
+ fieldset3 = DynamicFieldsets::Fieldset.new
90
105
  fieldset3.stub!(:id).and_return(300)
91
- fieldset_child1 = FieldsetChild.create(:fieldset_id => fieldset1.id, :child => fieldset2, :order_num => 1)
92
- fieldset_child2 = FieldsetChild.create(:fieldset_id => fieldset2.id, :child => fieldset3, :order_num => 1)
93
- fieldset_child3 = FieldsetChild.new(:fieldset_id => fieldset3.id, :child => fieldset1, :order_num => 1)
106
+ fieldset_child1 = DynamicFieldsets::FieldsetChild.create(:fieldset_id => fieldset1.id, :child => fieldset2, :order_num => 1)
107
+ fieldset_child2 = DynamicFieldsets::FieldsetChild.create(:fieldset_id => fieldset2.id, :child => fieldset3, :order_num => 1)
108
+ fieldset_child3 = DynamicFieldsets::FieldsetChild.new(:fieldset_id => fieldset3.id, :child => fieldset1, :order_num => 1)
94
109
  fieldset_child3.should have(1).error_on(:child_id)
95
110
  end
96
111
  end
97
112
 
98
- describe "to_hash method" do
99
- it "needs specs"
113
+ # Scopes and static methods
114
+ it { DynamicFieldsets::FieldsetChild.should respond_to(:ordered) }
115
+ describe ".ordered scope" do
116
+ it "needs tests"
117
+ end
118
+
119
+ # Methods
120
+
121
+ it { should respond_to :children }
122
+ describe ".children" do
123
+ it "needs tests"
124
+ end
125
+
126
+ it { should respond_to :fieldset_child_list }
127
+ describe ".fieldset_child_list" do
128
+ it "should match the constant FIELDSET_CHILD_LIST" do
129
+ @child.fieldset_child_list.should == DynamicFieldsets::FieldsetChild::FIELDSET_CHILD_LIST
130
+ end
131
+ end
132
+
133
+ it { should respond_to :get_value_using_fsa }
134
+ describe ".get_value_using_fsa" do
135
+ it "needs tests"
136
+ end
137
+
138
+ it { should respond_to :last_order_num }
139
+ describe ".last_order_num" do
140
+ it "needs tests"
100
141
  end
101
142
 
102
143
  describe "root_fieldset method" do
@@ -104,12 +145,12 @@ describe FieldsetChild do
104
145
  # too many issues with stubbing, getting lazy and saving
105
146
  # could be refactored at some point
106
147
 
107
- @field = Field.create({ :name => "Test field name", :label => "Test field label", :field_type => "textfield", :required => true, :enabled => true, })
108
- @fieldset = Fieldset.create({:name => "Hire Form", :description => "Hire a person for a job", :nkey => "hire_form"})
109
- @root_fieldset = Fieldset.create({:name => "Hire Form2", :description => "Hire a person for a job2", :nkey => "hire_form2"})
148
+ @field = DynamicFieldsets::Field.create({ :name => "Test field name", :label => "Test field label", :type => "textfield", :required => true, :enabled => true, })
149
+ @fieldset = DynamicFieldsets::Fieldset.create({:name => "Hire Form", :description => "Hire a person for a job", :nkey => "hire_form"})
150
+ @root_fieldset = DynamicFieldsets::Fieldset.create({:name => "Hire Form2", :description => "Hire a person for a job2", :nkey => "hire_form2"})
110
151
 
111
- @field_child = FieldsetChild.create(:child => @child, :fieldset => @fieldset, :order_num => 1)
112
- @child = FieldsetChild.create(:child => @fieldset, :fieldset => @root_fieldset, :order_num => 2)
152
+ @field_child = DynamicFieldsets::FieldsetChild.create(:child => @child, :fieldset => @fieldset, :order_num => 1)
153
+ @child = DynamicFieldsets::FieldsetChild.create(:child => @fieldset, :fieldset => @root_fieldset, :order_num => 2)
113
154
  end
114
155
  it "should return a fieldset if it is not present as the child in fieldset child" do
115
156
  @child.root_fieldset.should == @root_fieldset
@@ -119,4 +160,15 @@ describe FieldsetChild do
119
160
  @field_child.root_fieldset.id.should == @root_fieldset.id
120
161
  end
121
162
  end
163
+
164
+ it { should respond_to :siblings }
165
+ describe ".siblings" do
166
+ it "needs tests"
167
+ end
168
+
169
+ it { should respond_to :to_hash }
170
+ describe "to_hash method" do
171
+ it "needs specs"
172
+ it "needs comments"
173
+ end
122
174
  end
@@ -1,24 +1,23 @@
1
1
  require 'spec_helper'
2
- include DynamicFieldsets
3
-
4
- describe Fieldset do
2
+
3
+ describe DynamicFieldsets::Fieldset do
5
4
  include FieldsetHelper
6
5
 
7
6
  it "should respond to parent" do
8
- Fieldset.new.should respond_to :parent
7
+ DynamicFieldsets::Fieldset.new.should respond_to :parent
9
8
  end
10
9
 
11
10
  it "should respond to child_fields" do
12
- Fieldset.new.should respond_to :child_fields
11
+ DynamicFieldsets::Fieldset.new.should respond_to :child_fields
13
12
  end
14
13
 
15
14
  it "should respond to child_fieldsets" do
16
- Fieldset.new.should respond_to :child_fieldsets
15
+ DynamicFieldsets::Fieldset.new.should respond_to :child_fieldsets
17
16
  end
18
17
 
19
18
  describe "validations" do
20
19
  before(:each) do
21
- @fieldset = Fieldset.new
20
+ @fieldset = DynamicFieldsets::Fieldset.new
22
21
  end
23
22
 
24
23
  it "should be valid" do
@@ -39,7 +38,7 @@ describe Fieldset do
39
38
  end
40
39
 
41
40
  it "should require a unique nkey" do
42
- Fieldset.create(valid_attributes)
41
+ DynamicFieldsets::Fieldset.create(valid_attributes)
43
42
  @fieldset.attributes = valid_attributes
44
43
  @fieldset.should have(1).error_on(:nkey)
45
44
  end
@@ -48,37 +47,37 @@ describe Fieldset do
48
47
  describe ".roots scope" do
49
48
  before(:each) do
50
49
  # we could stub this one but I am not convinced the polymorphic relationships actually work
51
- @root_fieldset = Fieldset.new( valid_attributes )
50
+ @root_fieldset = DynamicFieldsets::Fieldset.new( valid_attributes )
52
51
  @root_fieldset.save
53
52
 
54
- @child_fieldset = Fieldset.new( valid_attributes )
53
+ @child_fieldset = DynamicFieldsets::Fieldset.new( valid_attributes )
55
54
  @child_fieldset.nkey = "something_else" # need to pass validations
56
55
  @child_fieldset.save
57
56
 
58
- @fieldset_children = FieldsetChild.new(:child => @child_fieldset, :fieldset => @root_fieldset, :order_num => 1)
57
+ @fieldset_children = DynamicFieldsets::FieldsetChild.new(:child => @child_fieldset, :fieldset => @root_fieldset, :order_num => 1)
59
58
  @fieldset_children.save
60
59
  end
61
60
 
62
- it ": Fieldset responds to .roots" do
63
- Fieldset.should respond_to :roots
61
+ it ": DynamicFieldsets::Fieldset responds to .roots" do
62
+ DynamicFieldsets::Fieldset.should respond_to :roots
64
63
  end
65
64
 
66
65
  it "returns fieldsets with no parent" do
67
- roots = Fieldset.roots
66
+ roots = DynamicFieldsets::Fieldset.roots
68
67
  roots.each do |root|
69
68
  root.parent.should be_nil
70
69
  end
71
70
  end
72
71
 
73
72
  it "does not return fieldsets with a parent" do
74
- roots = Fieldset.roots
73
+ roots = DynamicFieldsets::Fieldset.roots
75
74
  roots.should_not include @child_fieldset
76
75
  end
77
76
  end
78
77
 
79
78
  describe ".root? method" do
80
79
  before(:each) do
81
- @fieldset = Fieldset.new
80
+ @fieldset = DynamicFieldsets::Fieldset.new
82
81
  end
83
82
 
84
83
  it "calls parent" do
@@ -98,7 +97,7 @@ describe Fieldset do
98
97
 
99
98
  describe "parent_fieldset_list static method" do
100
99
  it "should include values for any fieldset" do
101
- fieldset = Fieldset.new(:name => "parent_fieldset_list test", :nkey => "parent_fieldset_list_test")
100
+ fieldset = DynamicFieldsets::Fieldset.new(:name => "parent_fieldset_list test", :nkey => "parent_fieldset_list_test")
102
101
  fieldset.save(:validate => false)
103
102
  DynamicFieldsets::Fieldset.parent_fieldset_list.should include [fieldset.name, fieldset.id]
104
103
  end
@@ -107,31 +106,29 @@ describe Fieldset do
107
106
  # gave up on stubs and mocks on this one due to how the data is constantized
108
107
  describe "children method" do
109
108
  before(:each) do
110
- @root_fieldset = Fieldset.new( valid_attributes )
109
+ @root_fieldset = DynamicFieldsets::Fieldset.new( valid_attributes )
111
110
  @root_fieldset.stub!(:id).and_return(1234)
112
111
 
113
- @child_fieldset = Fieldset.new( valid_attributes )
112
+ @child_fieldset = DynamicFieldsets::Fieldset.new( valid_attributes )
114
113
  @child_fieldset.nkey = "child_fieldset"
115
114
  @child_fieldset.save
116
- @cfs = FieldsetChild.new(:child => @child_fieldset, :fieldset => @root_fieldset, :order_num => 1)
115
+ @cfs = DynamicFieldsets::FieldsetChild.new(:child => @child_fieldset, :fieldset => @root_fieldset, :order_num => 1)
117
116
 
118
- @field1 = Field.new(
117
+ @field1 = DynamicFieldsets::TextField.new(
119
118
  :name => "Test field name",
120
119
  :label => "Test field label",
121
- :field_type => "textfield",
122
120
  :required => true,
123
121
  :enabled => true)
124
- @field1.save
125
- @cf1 = FieldsetChild.new(:child => @field1, :fieldset => @root_fieldset, :order_num => 2)
122
+ @field1.save!
123
+ @cf1 = DynamicFieldsets::FieldsetChild.new(:child => @field1, :fieldset => @root_fieldset, :order_num => 2)
126
124
 
127
- @field2 = Field.new(
125
+ @field2 = DynamicFieldsets::TextField.new(
128
126
  :name => "Test field name",
129
127
  :label => "Test field label",
130
- :field_type => "textfield",
131
128
  :required => true,
132
129
  :enabled => false)
133
- @field2.save
134
- @cf2 = FieldsetChild.new(:child => @field2, :fieldset => @root_fieldset, :order_num => 3)
130
+ @field2.save!
131
+ @cf2 = DynamicFieldsets::FieldsetChild.new(:child => @field2, :fieldset => @root_fieldset, :order_num => 3)
135
132
 
136
133
  @root_fieldset_children = [@cfs, @cf1, @cf2]
137
134
  @root_fieldset.stub!(:fieldset_children).and_return(@root_fieldset_children)
@@ -163,5 +160,4 @@ describe Fieldset do
163
160
  children.last.should == @field1
164
161
  end
165
162
  end
166
-
167
163
  end