render 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
data/lib/render/type.rb
CHANGED
@@ -22,6 +22,7 @@ module Render
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def parse(name, raise_error = false)
|
25
|
+
return name.collect { |union_type| parse(union_type, raise_error) } if name.is_a?(Array)
|
25
26
|
return nil if (name.nil?)
|
26
27
|
return name unless name.is_a?(String) || name.is_a?(Symbol)
|
27
28
|
|
@@ -34,7 +35,7 @@ module Render
|
|
34
35
|
parse(name, true)
|
35
36
|
end
|
36
37
|
|
37
|
-
def to(classes, value
|
38
|
+
def to(classes, value)
|
38
39
|
return nil if (value.nil? || classes.any?(&:nil?))
|
39
40
|
return value if classes.any? { |klass| value.is_a?(klass) }
|
40
41
|
|
@@ -48,8 +49,6 @@ module Render
|
|
48
49
|
when Boolean.name
|
49
50
|
return true if (value == true || value == "true")
|
50
51
|
return false if (value == false || value == "false")
|
51
|
-
when Enum.name
|
52
|
-
(enums & [value]).first
|
53
52
|
else
|
54
53
|
value
|
55
54
|
end
|
data/lib/render/version.rb
CHANGED
@@ -52,11 +52,37 @@ module Render
|
|
52
52
|
schema = Schema.new(definition)
|
53
53
|
schema.serialize!(films).should == films
|
54
54
|
end
|
55
|
+
|
56
|
+
context "enums" do
|
57
|
+
before(:each) do
|
58
|
+
@genres = %w(horror comedy romcom)
|
59
|
+
@definition = {
|
60
|
+
title: "films",
|
61
|
+
type: Object,
|
62
|
+
properties: {
|
63
|
+
genre: {
|
64
|
+
enum: @genres
|
65
|
+
}
|
66
|
+
}
|
67
|
+
}
|
68
|
+
end
|
69
|
+
|
70
|
+
it "returns enum value" do
|
71
|
+
film = { genre: @genres.sample }
|
72
|
+
schema = Schema.new(@definition)
|
73
|
+
schema.serialize!(film).should == film
|
74
|
+
end
|
75
|
+
|
76
|
+
it "does not validate enum value" do
|
77
|
+
film = { genre: "not-defined-genre" }
|
78
|
+
schema = Schema.new(@definition)
|
79
|
+
schema.serialize!(film).should == film
|
80
|
+
end
|
81
|
+
end
|
55
82
|
end
|
56
83
|
|
57
84
|
describe "required" do
|
58
|
-
|
59
|
-
it "is set with HashAttribute-level keyword" do
|
85
|
+
it "can be set with draft-3 HashAttribute-level keyword" do
|
60
86
|
schema = Schema.new({
|
61
87
|
type: Object,
|
62
88
|
properties: {
|
@@ -65,7 +65,7 @@ module Render
|
|
65
65
|
context "enums" do
|
66
66
|
it "sets enum values" do
|
67
67
|
enum_values = ["foo", "bar", "baz"]
|
68
|
-
attribute = HashAttribute.new({ key: {
|
68
|
+
attribute = HashAttribute.new({ key: { enum: enum_values } })
|
69
69
|
attribute.enums.should == enum_values
|
70
70
|
end
|
71
71
|
end
|
@@ -22,6 +22,11 @@ module Render
|
|
22
22
|
it "returns nil if no type is found" do
|
23
23
|
Type.parse("not-a-type").should == nil
|
24
24
|
end
|
25
|
+
|
26
|
+
it "parses union types" do
|
27
|
+
union_types = ["string", "null"]
|
28
|
+
expect(Type.parse(union_types)).to eq([String, NilClass])
|
29
|
+
end
|
25
30
|
end
|
26
31
|
|
27
32
|
describe ".parse!" do
|
@@ -123,14 +128,8 @@ module Render
|
|
123
128
|
end
|
124
129
|
|
125
130
|
describe "enum" do
|
126
|
-
it "returns
|
127
|
-
|
128
|
-
Type.to([Type::Enum], :foo, enums).should == :foo
|
129
|
-
end
|
130
|
-
|
131
|
-
it "return nil for invalid enums" do
|
132
|
-
enums = [:foo]
|
133
|
-
Type.to([Type::Enum], :bar, enums).should == nil
|
131
|
+
it "returns enum regardless of validity" do
|
132
|
+
Type.to([Type::Enum], :foo).should == :foo
|
134
133
|
end
|
135
134
|
end
|
136
135
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: render
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
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: 2015-
|
12
|
+
date: 2015-03-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: uuid
|
@@ -226,12 +226,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
226
226
|
- - ! '>='
|
227
227
|
- !ruby/object:Gem::Version
|
228
228
|
version: '0'
|
229
|
+
segments:
|
230
|
+
- 0
|
231
|
+
hash: -2504044044340370162
|
229
232
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
230
233
|
none: false
|
231
234
|
requirements:
|
232
235
|
- - ! '>='
|
233
236
|
- !ruby/object:Gem::Version
|
234
237
|
version: '0'
|
238
|
+
segments:
|
239
|
+
- 0
|
240
|
+
hash: -2504044044340370162
|
235
241
|
requirements: []
|
236
242
|
rubyforge_project:
|
237
243
|
rubygems_version: 1.8.23
|