-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathkeys_include_spec.rb
61 lines (52 loc) · 1.8 KB
/
keys_include_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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# frozen_string_literal: true
require "spec_helper"
describe "Definition.Keys included in another Keys definition" do
subject(:definition) do
address_definition = Definition.Keys do
required :street, Definition.Type(String)
required :city, Definition.Type(String)
optional :verified, Definition.Boolean, default: false
optional :country, Definition.Type(String)
end
Definition.Keys do
required :first_name, Definition.Type(String)
optional :last_name, Definition.Type(String)
include address_definition
end
end
it_behaves_like "it conforms via coersion",
input: {
first_name: "John",
last_name: "Doe",
street: "123 Fakestr.",
city: "London"
},
output: {
first_name: "John",
last_name: "Doe",
street: "123 Fakestr.",
city: "London",
verified: false
}
context "when the included definition contains keys that are already defined" do
subject(:definition) do
included_definition = Definition.Keys do
required :field_1, Definition.Type(String)
required :field_2, Definition.Type(String)
required :field_4, Definition.Type(String)
end
Definition.Keys do
required :field_1, Definition.Type(String)
required :field_2, Definition.Type(String)
required :field_3, Definition.Type(String)
include included_definition
end
end
it do
expect { definition }.to raise_error(
ArgumentError,
"Included definition tries to redefine already defined fields: field_1, field_2"
)
end
end
end