render 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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