Skip to content

Commit 51543ca

Browse files
committed
add test for array of ShallowAttributes objects
1 parent 6008302 commit 51543ca

File tree

1 file changed

+45
-16
lines changed

1 file changed

+45
-16
lines changed

test/custom_types_test.rb

Lines changed: 45 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -58,23 +58,22 @@ class Person
5858
end
5959

6060
describe 'when one of attribute is array' do
61-
let(:person) do
62-
Person.new(
63-
addresses: [
64-
{
65-
street: 'Street 1/2',
66-
city: {
67-
name: 'NYC'
68-
}
69-
},
70-
{
71-
street: 'Street 3/2',
72-
city: {
73-
name: 'Moscow'
74-
}
61+
let(:person) { Person.new addresses: addresses }
62+
let(:addresses) do
63+
[
64+
{
65+
street: 'Street 1/2',
66+
city: {
67+
name: 'NYC'
7568
}
76-
]
77-
)
69+
},
70+
{
71+
street: 'Street 3/2',
72+
city: {
73+
name: 'Moscow'
74+
}
75+
}
76+
]
7877
end
7978

8079
it 'allows embedded values' do
@@ -105,6 +104,36 @@ class Person
105104
person.addresses[0].must_be_instance_of Address
106105
end
107106

107+
describe 'array of ShallowAttributes objects' do
108+
let(:addresses) { [address_1, address_2] }
109+
let(:address_1) do
110+
Address.new(
111+
street: 'Street 1/2',
112+
city: {
113+
name: 'NYC'
114+
}
115+
)
116+
end
117+
let(:address_2) do
118+
Address.new(
119+
street: 'Street 3/2',
120+
city: {
121+
name: 'Moscow'
122+
}
123+
)
124+
end
125+
126+
it 'allows embedded values' do
127+
person.addresses.count.must_equal 2
128+
129+
person.addresses[0].street.must_equal 'Street 1/2'
130+
person.addresses[0].city.name.must_equal 'NYC'
131+
132+
person.addresses[1].street.must_equal 'Street 3/2'
133+
person.addresses[1].city.name.must_equal 'Moscow'
134+
end
135+
end
136+
108137
describe '#attributes' do
109138
it 'returns attributes hash' do
110139
hash = person.attributes

0 commit comments

Comments
 (0)