freeform 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile.lock +1 -1
- data/lib/freeform/form/nested.rb +8 -3
- data/lib/freeform/version.rb +1 -1
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/log/test.log +10264 -0
- data/spec/form/nested_spec.rb +70 -16
- metadata +2 -2
data/spec/form/nested_spec.rb
CHANGED
@@ -23,20 +23,43 @@ describe FreeForm::Nested do
|
|
23
23
|
klass
|
24
24
|
end
|
25
25
|
|
26
|
-
let(:
|
26
|
+
let!(:second_nested_class) do
|
27
27
|
klass = Class.new(Module) do
|
28
28
|
include FreeForm::Property
|
29
29
|
include FreeForm::Nested
|
30
|
+
declared_model :phone
|
30
31
|
|
31
|
-
|
32
|
+
property :number, :on => :phone
|
33
|
+
|
34
|
+
def initialize(h={})
|
35
|
+
h.each {|k,v| send("#{k}=",v)}
|
36
|
+
end
|
37
|
+
end
|
38
|
+
# This wrapper just avoids CONST warnings
|
39
|
+
v, $VERBOSE = $VERBOSE, nil
|
40
|
+
Module.const_set("PhoneNumberForm", klass)
|
41
|
+
$VERBOSE = v
|
42
|
+
klass
|
43
|
+
end
|
32
44
|
|
45
|
+
let(:form_class) do
|
46
|
+
klass = Class.new(Module) do
|
47
|
+
include FreeForm::Property
|
48
|
+
include FreeForm::Nested
|
49
|
+
|
33
50
|
def initialize(h={})
|
34
51
|
h.each {|k,v| send("#{k}=",v)}
|
35
52
|
end
|
36
53
|
|
54
|
+
has_many :mailing_addresses, :class => Module::MailingAddressForm, :default_initializer => :mailing_address_initializer
|
37
55
|
def mailing_address_initializer
|
38
56
|
{ :address => OpenStruct.new(:id => Random.new.rand(1000000)) }
|
39
57
|
end
|
58
|
+
|
59
|
+
has_many :phone_numbers, :class => Module::PhoneNumberForm, :default_initializer => :phone_number_initializer
|
60
|
+
def phone_number_initializer
|
61
|
+
{ :phone => OpenStruct.new(:id => Random.new.rand(1000000)) }
|
62
|
+
end
|
40
63
|
end
|
41
64
|
# This wrapper just avoids CONST warnings
|
42
65
|
v, $VERBOSE = $VERBOSE, nil
|
@@ -51,30 +74,61 @@ describe FreeForm::Nested do
|
|
51
74
|
|
52
75
|
describe "form class" do
|
53
76
|
it "sets nested_form in models" do
|
54
|
-
form_class.models.should eq([:mailing_addresses])
|
77
|
+
form_class.models.should eq([:mailing_addresses, :phone_numbers])
|
55
78
|
end
|
56
79
|
end
|
57
80
|
|
58
81
|
describe "building nested models" do
|
59
82
|
it "initializes with no nested models prebuilt" do
|
60
83
|
form.mailing_addresses.should eq([])
|
84
|
+
form.phone_numbers.should eq([])
|
61
85
|
end
|
62
86
|
|
63
87
|
context "with default initializer" do
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
88
|
+
context "for mailing addresses" do
|
89
|
+
it "allows nested_forms to be built" do
|
90
|
+
form.build_mailing_addresses
|
91
|
+
form.mailing_addresses.should be_an(Array)
|
92
|
+
form.mailing_addresses.should_not be_empty
|
93
|
+
form.mailing_addresses.first.should be_a(Module::MailingAddressForm)
|
94
|
+
end
|
95
|
+
|
96
|
+
it "does not add to other has_many array" do
|
97
|
+
form.build_mailing_addresses
|
98
|
+
form.phone_numbers.should eq([])
|
99
|
+
end
|
100
|
+
|
101
|
+
it "builds unique models" do
|
102
|
+
form = form_class.new
|
103
|
+
form.build_mailing_address
|
104
|
+
form.build_mailing_address
|
105
|
+
address_1 = form.mailing_addresses.first.address
|
106
|
+
address_2 = form.mailing_addresses.last.address
|
107
|
+
address_1.should_not eq(address_2)
|
108
|
+
end
|
69
109
|
end
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
110
|
+
|
111
|
+
context "for phone numbers" do
|
112
|
+
it "allows nested_forms to be built" do
|
113
|
+
form.build_phone_number
|
114
|
+
form.phone_numbers.should be_an(Array)
|
115
|
+
form.phone_numbers.should_not be_empty
|
116
|
+
form.phone_numbers.first.should be_a(Module::PhoneNumberForm)
|
117
|
+
end
|
118
|
+
|
119
|
+
it "does not add to other has_many array" do
|
120
|
+
form.build_phone_numbers
|
121
|
+
form.mailing_addresses.should eq([])
|
122
|
+
end
|
123
|
+
|
124
|
+
it "builds unique models" do
|
125
|
+
form = form_class.new
|
126
|
+
form.build_phone_number
|
127
|
+
form.build_phone_number
|
128
|
+
phone_1 = form.phone_numbers.first.phone
|
129
|
+
phone_2 = form.phone_numbers.last.phone
|
130
|
+
phone_1.should_not eq(phone_2)
|
131
|
+
end
|
78
132
|
end
|
79
133
|
end
|
80
134
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: freeform
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-01-
|
12
|
+
date: 2014-01-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activemodel
|