-
-
Notifications
You must be signed in to change notification settings - Fork 17
/
Copy pathnested_spec.rb
40 lines (34 loc) · 1.76 KB
/
nested_spec.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
require 'spec_helper'
RSpec.describe 'Composite Types' do
it "can save and load composite types" do
start = DateTime.now.utc
question = Question.create!(title: "single question")
questions = [Question.create!(title: "some question"), Question.create!(title: "some other question")]
instance = Nested.new
instance.nested = NestedStruct.new
instance.nested.ary = [InnerStruct.new, InnerStruct.new]
instance.nested.ary[0].num = 2
instance.nested.ary[0].num_ary = [3]
instance.nested.ary[0].str = "string contents"
instance.nested.ary[0].str_ary = ["string array contents", '", with quotes and commas,"']
instance.nested.ary[0].timestamp = start
instance.nested.ary[0].timestamp_ary = [start + 1.minute, start + 2.minutes]
instance.nested.ary[0].hsh = {"foo" => "bar"}
instance.nested.ary[0].json = [nil, {sym: 4}]
instance.nested.ary[0].question = question
instance.nested.ary[0].question_ary = questions
instance.save!
instance = Nested.find(instance.id)
expect(instance.nested.ary.length).to eq(2)
expect(instance.nested.ary[0].num).to eq(2)
expect(instance.nested.ary[0].num_ary).to eq([3])
expect(instance.nested.ary[0].str).to eq("string contents")
expect(instance.nested.ary[0].str_ary).to eq(["string array contents", '", with quotes and commas,"'])
expect(instance.nested.ary[0].timestamp.to_i).to eq(start.to_i)
expect(instance.nested.ary[0].timestamp_ary.map(&:to_i)).to eq([(start + 1.minute).to_i, (start + 2.minutes).to_i])
expect(instance.nested.ary[0].hsh).to eq({"foo" => "bar"})
expect(instance.nested.ary[0].json).to eq([nil, {"sym" => 4}])
expect(instance.nested.ary[0].question).to eq(question)
expect(instance.nested.ary[0].question_ary).to eq(questions)
end
end