render 0.0.6 → 0.0.7

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.
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