render 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -43,7 +43,7 @@ module Render
43
43
 
44
44
  if (options[:enum])
45
45
  self.enums = options[:enum]
46
- self.format = Type::Enum
46
+ self.types = [Type::Enum]
47
47
  end
48
48
 
49
49
  @default = options[:default]
@@ -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, enums = nil)
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
@@ -1,3 +1,3 @@
1
1
  module Render
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
@@ -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
- # Not defined in spec, but should have been
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: { type: String, enum: enum_values } })
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 valid enum" do
127
- enums = [:foo, :bar]
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.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-02-16 00:00:00.000000000 Z
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