render 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZDdkY2Y3ZDlhMDIxZjQyZDA1OTNiZDJjZWQzMDIzMTI0YjkwM2E0Mw==
4
+ OTBmMzkxOGM4YWViMjgyYjNlZDhkNTAwMTNiYjYyMzcyMWY0MjFkMw==
5
5
  data.tar.gz: !binary |-
6
- ZDY4MTllMWE1NTgyYmI4ZmRjOWIwNzA0NzEwNDcwMzM3YjFjMTA5Yg==
6
+ MmRkZjhiNWJlZDI1OWY3MmJhMTgxZDU0ZDEyYzRiZmI2YzE0YTMwOQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- MmJlMWIwNjZkZjcyNDcwZDlkNDBjNmM0OWI4NDA4YWViNjM2MDVmMTkxYjJl
10
- ZjU1NDYyN2NjMjZhZDIzMmY2NjhhMWYyZWE5YzFmYWI0OTI1MzBmZTAzOWJm
11
- M2E4N2MzZTVhNzNkMGRiZGVlYzI1MzZiZDFmYzNlYjk0ZjM2MDY=
9
+ MzEwMTFjNzQ4ZGIxMmQwNmQ5NzQ4Mjc2ODc3ZjU4OWIzMzU2N2JjMGIyZmYw
10
+ MzUyYzFjOTQ2MTI4MDY0MTFjMGI4YWY4MWVkYzdhMTdlYjI1YTA2YTNkM2Nj
11
+ YWY0OWJjMGUzZTU0NDZlYzg3NmZkNzJjZDc0NmVmYjkzNzRjNGE=
12
12
  data.tar.gz: !binary |-
13
- YzExNmU4ZjQ0NDk0NmYxYTFjMDcyZDZmODAxZmYwZDlhNDJjY2FhYjc3Yjgx
14
- ZjNhYzQxMGIwN2ZlOTViMDM3MDgzMjQ5YWEwNzBjOTgyMWI1YzZiNGZkZjcw
15
- MzdmZmFmNjNjZmZhNjY3YWY5MGQxZmYyM2RlZDM3MjM2NDE1MTE=
13
+ ZTVlNWQwMmI5YTYxNTBiMjNhNWEwMTI2ZGU3NDE3NTQ3ODMzNzI5NGM2NTll
14
+ MmEzN2RjN2RlYTJjNzFkYzkzZDhkNTE3YjE2OTllYjRhZjg0MDgyYWY1ZWI0
15
+ ODNjZWVhMjk3Mzg3ZTkzYWRkYTJjZDJmY2NlZGE4ZWQ2ZTNlZDQ=
@@ -30,7 +30,7 @@ module Render
30
30
 
31
31
  def find(type, to_match)
32
32
  instances.detect do |generator|
33
- (generator.type == type) && to_match.match(generator.matcher)
33
+ generator.type.to_s.match(/#{type}/i) && to_match.match(generator.matcher)
34
34
  end
35
35
  end
36
36
  end
data/lib/render/schema.rb CHANGED
@@ -25,7 +25,7 @@ module Render
25
25
  self.definition = determine_definition(definition_or_title)
26
26
  title_or_default = definition.fetch(:title, DEFAULT_TITLE)
27
27
  self.title = title_or_default.to_sym
28
- self.type = Type.parse!(definition[:type])
28
+ self.type = Type.parse(definition[:type]) || Object
29
29
  self.universal_title = definition.fetch(:universal_title, nil)
30
30
 
31
31
  if definition.keys.include?(:items)
data/lib/render/type.rb CHANGED
@@ -25,6 +25,8 @@ module Render
25
25
  def parse(name, raise_error = false)
26
26
  return name unless name.is_a?(String)
27
27
  Render::Type.find(name) || Object.const_get(name.capitalize)
28
+ rescue NameError
29
+ raise Errors::InvalidType.new(name) if raise_error
28
30
  end
29
31
 
30
32
  def parse!(name)
@@ -1,3 +1,3 @@
1
1
  module Render
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.7"
3
3
  end
@@ -7,7 +7,10 @@ module Render
7
7
  title: :films,
8
8
  type: Array,
9
9
  items: {
10
- id: { type: "number" }
10
+ type: Object,
11
+ properties: {
12
+ id: { type: "number" }
13
+ }
11
14
  }
12
15
  }
13
16
  end
@@ -68,7 +71,8 @@ module Render
68
71
  }
69
72
  },
70
73
  genre: {
71
- enum: ["horror", "action", "sci-fi"]
74
+ type: String,
75
+ enum: %w(horror action sci-fi)
72
76
  },
73
77
  tags: {
74
78
  type: Array,
@@ -62,6 +62,7 @@ module Render
62
62
  }
63
63
  },
64
64
  genre: {
65
+ type: String,
65
66
  enum: ["horror", "action", "sci-fi"]
66
67
  },
67
68
  tags: {
@@ -21,7 +21,7 @@ module Render
21
21
  describe "archetype" do
22
22
  it "returns only a value" do
23
23
  id = UUID.generate
24
- attribute = ArrayAttribute.new({ items: { format: UUID } })
24
+ attribute = ArrayAttribute.new({ items: { type: UUID } })
25
25
  attribute.serialize([id]).should == [id]
26
26
  end
27
27
  end
@@ -3,6 +3,7 @@ require "render/generator"
3
3
  module Render
4
4
  describe Generator do
5
5
  before(:each) do
6
+ Render.stub({ live: false })
6
7
  @original_generators = Generator.instances.dup
7
8
  end
8
9
 
@@ -26,6 +27,13 @@ module Render
26
27
  end
27
28
  end
28
29
 
30
+ describe ".trigger" do
31
+ it "triggers matching generator for Render types" do
32
+ enum_attribute = HashAttribute.new({ attribute_name: { type: String, enum: ["foo"] } })
33
+ Generator.trigger(:enum, "anything", enum_attribute).should == "foo"
34
+ end
35
+ end
36
+
29
37
  describe "#initialize" do
30
38
  it "sets the type of data it can be used to generate data for" do
31
39
  type = [UUID, Float].sample
@@ -156,6 +156,7 @@ module Render
156
156
  title: "films",
157
157
  type: Array,
158
158
  items: {
159
+ type: Object,
159
160
  properties: {
160
161
  id: { type: UUID }
161
162
  }
@@ -37,6 +37,11 @@ module Render
37
37
  Schema.new(definition).type.should == type
38
38
  end
39
39
 
40
+ it "defaults its type to Object" do
41
+ definition = { properties: {} }
42
+ Schema.new(definition).type.should == Object
43
+ end
44
+
40
45
  describe "#array_attribute" do
41
46
  it "is set for array schemas" do
42
47
  archetype_schema = {
@@ -55,6 +60,7 @@ module Render
55
60
  describe "#hash_attributes" do
56
61
  it "is set for object schemas" do
57
62
  simple_schema = {
63
+ type: Object,
58
64
  properties: {
59
65
  name: { type: String },
60
66
  genre: { type: String }
@@ -99,6 +105,7 @@ module Render
99
105
  before(:each) do
100
106
  Definition.load!({
101
107
  title: :film,
108
+ type: Object,
102
109
  properties: {
103
110
  genre: { type: String }
104
111
  }
@@ -176,6 +183,7 @@ module Render
176
183
  definition = {
177
184
  title: :film,
178
185
  universal_title: :imdb_films_show,
186
+ type: Object,
179
187
  properties: {
180
188
  genre: { type: String }
181
189
  }
@@ -15,6 +15,16 @@ module Render
15
15
  Type.parse("integer").should == Integer
16
16
  end
17
17
 
18
+ it "returns nil if no type is found" do
19
+ Type.parse("not-a-type").should == nil
20
+ end
21
+ end
22
+
23
+ describe ".parse!" do
24
+ it "returns constant for string" do
25
+ Type.parse("integer").should == Integer
26
+ end
27
+
18
28
  it "returns argument when not a string" do
19
29
  class ::Foo; end
20
30
  Type.parse(Foo).should == Foo
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: render
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steve Weber
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-13 00:00:00.000000000 Z
11
+ date: 2014-02-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler