roar 0.11.16 → 0.11.17
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.
- data/CHANGES.markdown +5 -0
- data/lib/roar/decorator.rb +6 -0
- data/lib/roar/representer/json/hal.rb +5 -5
- data/lib/roar/version.rb +1 -1
- data/roar.gemspec +1 -1
- data/test/decorator_test.rb +22 -5
- metadata +4 -4
data/CHANGES.markdown
CHANGED
data/lib/roar/decorator.rb
CHANGED
|
@@ -6,5 +6,11 @@ class Roar::Decorator < Representable::Decorator
|
|
|
6
6
|
super # TODO: this currently sets #links which is not obvious.
|
|
7
7
|
represented.links = links
|
|
8
8
|
end
|
|
9
|
+
|
|
10
|
+
# TODO: what is the deal with #links_array and #links?
|
|
11
|
+
def links=(*args)
|
|
12
|
+
super
|
|
13
|
+
represented.links = links
|
|
14
|
+
end
|
|
9
15
|
end
|
|
10
16
|
end
|
|
@@ -109,8 +109,8 @@ module Roar::Representer
|
|
|
109
109
|
module LinkCollectionRepresenter
|
|
110
110
|
include Representable::JSON::Hash
|
|
111
111
|
|
|
112
|
-
values :extend => lambda { |item
|
|
113
|
-
:class => lambda { |hsh
|
|
112
|
+
values :extend => lambda { |item, *| item.is_a?(Array) ? LinkArrayRepresenter : Roar::Representer::JSON::HyperlinkRepresenter },
|
|
113
|
+
:class => lambda { |hsh, *| hsh.is_a?(LinkArray) ? nil : Roar::Representer::Feature::Hypermedia::Hyperlink }
|
|
114
114
|
|
|
115
115
|
def to_hash(options)
|
|
116
116
|
super.tap do |hsh| # TODO: cool: super(:exclude => [:rel]).
|
|
@@ -157,11 +157,11 @@ module Roar::Representer
|
|
|
157
157
|
def links_definition_options
|
|
158
158
|
[:links,
|
|
159
159
|
{
|
|
160
|
-
:as => :links,
|
|
161
160
|
:extend => HAL::Links::LinkCollectionRepresenter,
|
|
162
|
-
:instance => lambda {
|
|
161
|
+
:instance => lambda { |*| LinkCollection.new(link_array_rels) }, # defined in InstanceMethods as this is executed in represented context.
|
|
163
162
|
:representer_exec => true,
|
|
164
|
-
:getter => lambda { |*| links }
|
|
163
|
+
:getter => lambda { |*| links },
|
|
164
|
+
:setter => lambda { |val,*| self.links=(val) }
|
|
165
165
|
}
|
|
166
166
|
]
|
|
167
167
|
end
|
data/lib/roar/version.rb
CHANGED
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.
|
|
22
|
+
s.add_runtime_dependency "representable", ">= 1.5.0"
|
|
23
23
|
|
|
24
24
|
s.add_development_dependency "rake"
|
|
25
25
|
s.add_development_dependency "test_xml", ">= 0.1.4"
|
data/test/decorator_test.rb
CHANGED
|
@@ -20,6 +20,7 @@ class DecoratorTest < MiniTest::Spec
|
|
|
20
20
|
end
|
|
21
21
|
|
|
22
22
|
let (:model) { Object.new }
|
|
23
|
+
let (:model_with_links) { model.singleton_class.instance_eval { attr_accessor :links }; model }
|
|
23
24
|
|
|
24
25
|
describe "JSON" do
|
|
25
26
|
let (:decorator) { rpr_mod = rpr
|
|
@@ -32,10 +33,9 @@ class DecoratorTest < MiniTest::Spec
|
|
|
32
33
|
end
|
|
33
34
|
|
|
34
35
|
it "sets links on decorator" do
|
|
35
|
-
decorator.new(model).from_hash("links"=>[{:rel=>:self, :href=>"http://
|
|
36
|
+
decorator.new(model).from_hash("links"=>[{:rel=>:self, :href=>"http://next"}]).links.must_equal("self"=>link(:rel=>:self, :href=>"http://next"))
|
|
36
37
|
end
|
|
37
38
|
|
|
38
|
-
let (:model_with_links) { model.singleton_class.instance_eval { attr_accessor :links }; model }
|
|
39
39
|
it "does not set links on represented" do
|
|
40
40
|
decorator.new(model_with_links).from_hash("links"=>[{:rel=>:self, :href=>"http://self"}])
|
|
41
41
|
model_with_links.links.must_equal nil
|
|
@@ -49,8 +49,8 @@ class DecoratorTest < MiniTest::Spec
|
|
|
49
49
|
end }
|
|
50
50
|
|
|
51
51
|
it "propagates links to represented" do
|
|
52
|
-
decorator.new(model_with_links).from_hash("links"=>[{:rel=>:self, :href=>"http://
|
|
53
|
-
model_with_links.links[:self].must_equal(link(:rel=>:self, :href=>"http://
|
|
52
|
+
decorator.new(model_with_links).from_hash("links"=>[{:rel=>:self, :href=>"http://next"}])
|
|
53
|
+
model_with_links.links[:self].must_equal(link(:rel=>:self, :href=>"http://next"))
|
|
54
54
|
end
|
|
55
55
|
end
|
|
56
56
|
end
|
|
@@ -71,7 +71,7 @@ class DecoratorTest < MiniTest::Spec
|
|
|
71
71
|
end
|
|
72
72
|
|
|
73
73
|
it "sets links on decorator" do
|
|
74
|
-
decorator.new(model).from_xml(%{<song><link rel="self" href="http://
|
|
74
|
+
decorator.new(model).from_xml(%{<song><link rel="self" href="http://next"/></song>}).links.must_equal("self"=>link(:rel=>:self, :href=>"http://next"))
|
|
75
75
|
end
|
|
76
76
|
end
|
|
77
77
|
|
|
@@ -88,6 +88,23 @@ class DecoratorTest < MiniTest::Spec
|
|
|
88
88
|
it "rendering links works" do
|
|
89
89
|
decorator.new(model).to_hash.must_equal({"_links"=>{"self"=>{:href=>"http://self"}}})
|
|
90
90
|
end
|
|
91
|
+
|
|
92
|
+
it "sets links on decorator" do
|
|
93
|
+
decorator.new(model).from_hash({"_links"=>{"self"=>{:href=>"http://next"}}}).links.must_equal("self"=>link(:rel=>:self, :href=>"http://next"))
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
describe "Decorator::HypermediaClient" do
|
|
97
|
+
let (:decorator) { rpr_mod = rpr
|
|
98
|
+
Class.new(Roar::Decorator) do
|
|
99
|
+
include rpr_mod
|
|
100
|
+
include Roar::Decorator::HypermediaConsumer
|
|
101
|
+
end }
|
|
102
|
+
|
|
103
|
+
it "propagates links to represented" do
|
|
104
|
+
decorator.new(model_with_links).from_hash("_links"=>{"self"=>{:href=>"http://self"}})
|
|
105
|
+
model_with_links.links[:self].must_equal(link(:rel=>:self, :href=>"http://self"))
|
|
106
|
+
end
|
|
107
|
+
end
|
|
91
108
|
end
|
|
92
109
|
end
|
|
93
110
|
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.
|
|
4
|
+
version: 0.11.17
|
|
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-05-
|
|
12
|
+
date: 2013-05-04 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.
|
|
21
|
+
version: 1.5.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.
|
|
29
|
+
version: 1.5.0
|
|
30
30
|
- !ruby/object:Gem::Dependency
|
|
31
31
|
name: rake
|
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|