Skip to content

Commit 9f0b031

Browse files
committed
add test for array of ShallowAttributes objects
1 parent 6008302 commit 9f0b031

File tree

1 file changed

+45
-17
lines changed

1 file changed

+45
-17
lines changed

test/custom_types_test.rb

Lines changed: 45 additions & 17 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-
}
75-
}
76-
]
77-
)
61+
let(:person) { Person.new addresses: [address_1, address_2] }
62+
let(:address_1) do
63+
{
64+
street: 'Street 1/2',
65+
city: {
66+
name: 'NYC'
67+
}
68+
}
69+
end
70+
let(:address_2) do
71+
{
72+
street: 'Street 3/2',
73+
city: {
74+
name: 'Moscow'
75+
}
76+
}
7877
end
7978

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

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

0 commit comments

Comments
 (0)