roar 0.11.19 → 0.12.0

Sign up to get free protection for your applications and to get access to all the features.
data/.travis.yml CHANGED
@@ -1,7 +1,9 @@
1
1
  matrix:
2
2
  include:
3
3
  - rvm: 1.9.3
4
- gemfile: gemfiles/Gemfile.representable-1.5.ruby-1.9
4
+ gemfile: gemfiles/Gemfile.representable-1.6.ruby-1.9
5
+ - rvm: 2.0.0
6
+ gemfile: gemfiles/Gemfile.representable-1.6.ruby-1.9
5
7
  # - rvm: 1.8.7
6
8
  # gemfile: gemfiles/Gemfile.representable-1.5.ruby-1.8
7
9
  notifications:
@@ -0,0 +1,5 @@
1
+ source "http://rubygems.org"
2
+
3
+ gemspec path: '../'
4
+
5
+ gem 'representable', '~> 1.6.0'
@@ -12,8 +12,7 @@ module Roar::Representer::Feature
12
12
  module Coercion
13
13
  def self.included(base)
14
14
  base.class_eval do
15
- include Virtus
16
- extend Representable::Coercion::ClassMethods
15
+ include Representable::Coercion
17
16
  end
18
17
  end
19
18
  end
@@ -32,6 +32,12 @@ module Roar::Representer
32
32
  include Links # overwrites #links_definition_options.
33
33
  extend ClassMethods # overwrites #links_definition_options, again.
34
34
  include Resources
35
+
36
+ def representable_mapper(*) # TODO: make this easier to override.
37
+ super.tap do |map|
38
+ map.extend Resources
39
+ end
40
+ end
35
41
  end
36
42
  end
37
43
 
data/lib/roar/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Roar
2
- VERSION = "0.11.19"
2
+ VERSION = "0.12.0"
3
3
  end
data/roar.gemspec CHANGED
@@ -19,7 +19,7 @@ Gem::Specification.new do |s|
19
19
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
20
  s.require_paths = ["lib"]
21
21
 
22
- s.add_runtime_dependency "representable", "~> 1.5.3"
22
+ s.add_runtime_dependency "representable", "~> 1.6.0"
23
23
 
24
24
  s.add_development_dependency "rake", ">= 0.10.1"
25
25
  s.add_development_dependency "test_xml", ">= 0.1.6"
@@ -8,6 +8,8 @@ class CoercionFeatureTest < MiniTest::Spec
8
8
  include Roar::Representer::Feature::Coercion
9
9
 
10
10
  property :composed_at, :type => DateTime, :default => "May 12th, 2012"
11
+
12
+ attr_accessor :composed_at
11
13
  end
12
14
 
13
15
  it "coerces into the provided type" do
@@ -25,21 +25,23 @@ class DecoratorTest < MiniTest::Spec
25
25
  let (:model_with_links) { model.singleton_class.instance_eval { attr_accessor :links }; model }
26
26
 
27
27
  describe "JSON" do
28
- let (:decorator) { rpr_mod = rpr
28
+ let (:decorator_class) { rpr_mod = rpr
29
29
  Class.new(Roar::Decorator) do
30
30
  include rpr_mod
31
31
  end }
32
+ let (:decorator) { decorator_class.new(model) }
32
33
 
33
34
  it "rendering links works" do
34
- decorator.new(model).to_hash.must_equal({"links"=>[{:rel=>:self, :href=>"http://self"}]})
35
+ decorator.to_hash.must_equal({"links"=>[{:rel=>:self, :href=>"http://self"}]})
35
36
  end
36
37
 
37
38
  it "sets links on decorator" do
38
- decorator.new(model).from_hash("links"=>[{:rel=>:self, :href=>"http://next"}]).links.must_equal("self"=>link(:rel=>:self, :href=>"http://next"))
39
+ decorator.from_hash("links"=>[{:rel=>:self, :href=>"http://next"}])
40
+ decorator.links.must_equal("self"=>link(:rel=>:self, :href=>"http://next"))
39
41
  end
40
42
 
41
43
  it "does not set links on represented" do
42
- decorator.new(model_with_links).from_hash("links"=>[{:rel=>:self, :href=>"http://self"}])
44
+ decorator_class.new(model_with_links).from_hash("links"=>[{:rel=>:self, :href=>"http://self"}])
43
45
  model_with_links.links.must_equal nil
44
46
  end
45
47
 
@@ -62,18 +64,21 @@ class DecoratorTest < MiniTest::Spec
62
64
  link(:self) { "http://self" } # TODO: test with HAL, too.
63
65
  #self.representation_wrap = :song # FIXME: why isn't this working?
64
66
  end
65
- let (:decorator) { rpr_mod = rpr
67
+ let (:decorator_class) { rpr_mod = rpr
66
68
  Class.new(Roar::Decorator) do
67
69
  include rpr_mod
68
70
  self.representation_wrap = :song
69
- end }
71
+ end
72
+ }
73
+ let (:decorator) { decorator_class.new(model) }
70
74
 
71
75
  it "rendering links works" do
72
- decorator.new(model).to_xml.must_equal_xml "<song><link rel=\"self\" href=\"http://self\"/></song>"
76
+ decorator.to_xml.must_equal_xml "<song><link rel=\"self\" href=\"http://self\"/></song>"
73
77
  end
74
78
 
75
79
  it "sets links on decorator" do
76
- decorator.new(model).from_xml(%{<song><link rel="self" href="http://next"/></song>}).links.must_equal("self"=>link(:rel=>:self, :href=>"http://next"))
80
+ decorator.from_xml(%{<song><link rel="self" href="http://next"/></song>})
81
+ decorator.links.must_equal("self"=>link(:rel=>:self, :href=>"http://next"))
77
82
  end
78
83
  end
79
84
 
@@ -82,17 +87,20 @@ class DecoratorTest < MiniTest::Spec
82
87
  representer_for([Roar::Representer::JSON::HAL]) do
83
88
  link(:self) { "http://self" }
84
89
  end
85
- let (:decorator) { rpr_mod = rpr
90
+ let (:decorator_class) { rpr_mod = rpr
86
91
  Class.new(Roar::Decorator) do
87
92
  include rpr_mod
88
- end }
93
+ end
94
+ }
95
+ let (:decorator) { decorator_class.new(model) }
89
96
 
90
97
  it "rendering links works" do
91
- decorator.new(model).to_hash.must_equal({"_links"=>{"self"=>{:href=>"http://self"}}})
98
+ decorator.to_hash.must_equal({"_links"=>{"self"=>{:href=>"http://self"}}})
92
99
  end
93
100
 
94
101
  it "sets links on decorator" do
95
- decorator.new(model).from_hash({"_links"=>{"self"=>{:href=>"http://next"}}}).links.must_equal("self"=>link(:rel=>:self, :href=>"http://next"))
102
+ decorator.from_hash({"_links"=>{"self"=>{:href=>"http://next"}}})
103
+ decorator.links.must_equal("self"=>link(:rel=>:self, :href=>"http://next"))
96
104
  end
97
105
 
98
106
  describe "Decorator::HypermediaClient" do
@@ -165,60 +165,6 @@ class HyperlinkTest < MiniTest::Spec
165
165
  end
166
166
 
167
167
  describe "Config inheritance" do
168
- # TODO: this section will soon be moved to uber.
169
- describe "inheritance when including" do
170
- # TODO: test all the below issues AND if cloning works.
171
- module TestMethods
172
- def representer_for(modules=[Roar::Representer::Feature::Hypermedia, Representable], &block)
173
- Module.new do
174
- extend TestMethods
175
- include *modules
176
- module_exec(&block)
177
- end
178
- end
179
- end
180
- include TestMethods
181
-
182
- it "inherits to uninitialized child" do
183
- representer_for do # child
184
- include(representer_for do # parent
185
- representable_attrs.inheritable_array(:links) << "bar"
186
- end)
187
- end.representable_attrs.inheritable_array(:links).must_equal(["bar"])
188
- end
189
-
190
- it "works with uninitialized parent" do
191
- representer_for do # child
192
- representable_attrs.inheritable_array(:links) << "bar"
193
-
194
- include(representer_for do # parent
195
- end)
196
- end.representable_attrs.inheritable_array(:links).must_equal(["bar"])
197
- end
198
-
199
- it "inherits when both are initialized" do
200
- representer_for do # child
201
- representable_attrs.inheritable_array(:links) << "bar"
202
-
203
- include(representer_for do # parent
204
- representable_attrs.inheritable_array(:links) << "stadium"
205
- end)
206
- end.representable_attrs.inheritable_array(:links).must_equal(["bar", "stadium"])
207
- end
208
-
209
- it "clones parent inheritables" do # FIXME: actually we don't clone here!
210
- representer_for do # child
211
- representable_attrs.inheritable_array(:links) << "bar"
212
-
213
- include(parent = representer_for do # parent
214
- representable_attrs.inheritable_array(:links) << "stadium"
215
- end)
216
-
217
- parent.representable_attrs.inheritable_array(:links) << "park" # modify parent array.
218
-
219
- end.representable_attrs.inheritable_array(:links).must_equal(["bar", "stadium"])
220
- end
221
-
222
168
  it "doesn't mess up with inheritable_array" do # FIXME: remove this test when uber is out.
223
169
  OpenStruct.new.extend( Module.new do
224
170
  include Roar::Representer::JSON
@@ -241,9 +187,6 @@ class HyperlinkTest < MiniTest::Spec
241
187
  include Roar::Representer::Feature::Hypermedia
242
188
  link(:bla) { "boo" }
243
189
  end).to_hash.must_equal({"links"=>[{:rel=>:self, :href=>"bo"}, {:rel=>:bla, :href=>"boo"}]})
244
-
245
-
246
- end
247
190
  end
248
191
  end
249
192
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: roar
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.19
4
+ version: 0.12.0
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: 2013-07-15 00:00:00.000000000 Z
12
+ date: 2013-08-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: representable
@@ -18,7 +18,7 @@ dependencies:
18
18
  requirements:
19
19
  - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: 1.5.3
21
+ version: 1.6.0
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ~>
28
28
  - !ruby/object:Gem::Version
29
- version: 1.5.3
29
+ version: 1.6.0
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: rake
32
32
  requirement: !ruby/object:Gem::Requirement
@@ -173,6 +173,7 @@ files:
173
173
  - TODO.markdown
174
174
  - gemfiles/Gemfile.representable-1.5.ruby-1.8
175
175
  - gemfiles/Gemfile.representable-1.5.ruby-1.9
176
+ - gemfiles/Gemfile.representable-1.6.ruby-1.9
176
177
  - lib/roar.rb
177
178
  - lib/roar/decorator.rb
178
179
  - lib/roar/representer.rb