hal-client 2.2.1 → 2.3.1

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.
@@ -1,4 +1,3 @@
1
- require 'forwardable'
2
1
  require 'addressable/template'
3
2
 
4
3
  require 'hal_client'
@@ -9,7 +8,6 @@ class HalClient
9
8
  # HAL representation of a single resource. Provides access to
10
9
  # properties, links and embedded representations.
11
10
  class Representation
12
- extend Forwardable
13
11
 
14
12
  # Create a new Representation
15
13
  #
@@ -38,6 +36,15 @@ class HalClient
38
36
  @hal_client.post(href, data, options)
39
37
  end
40
38
 
39
+ # Returns true if this representation contains the specified
40
+ # property.
41
+ #
42
+ # name - the name of the property to check
43
+ def property?(name)
44
+ raw.key? name
45
+ end
46
+ alias_method :has_property?, :property?
47
+
41
48
  # Returns The value of the specified property or the specified
42
49
  # default value.
43
50
  #
@@ -96,13 +103,14 @@ class HalClient
96
103
  # embedded links) whose rel is `link_rel`.
97
104
  #
98
105
  # link_rel - The link rel of interest
99
- def has_related?(link_rel)
106
+ def related?(link_rel)
100
107
  _ = related link_rel
101
108
  true
102
109
 
103
110
  rescue KeyError
104
111
  false
105
112
  end
113
+ alias_method :has_related?, :related?
106
114
 
107
115
  # Returns representations of resources related via the specified
108
116
  # link rel or the specified default value.
@@ -1,3 +1,5 @@
1
+ require 'forwardable'
2
+
1
3
  class HalClient
2
4
 
3
5
  # A collection HAL representations
@@ -24,6 +26,7 @@ class HalClient
24
26
  # Raises KeyError if the specified link does not exist
25
27
  # and no default_proc is provided.
26
28
  def related(link_rel, options={})
29
+ raise KeyError unless has_related? link_rel
27
30
  RepresentationSet.new flat_map{|it| it.related(link_rel, options){[]}.to_a }
28
31
  end
29
32
 
@@ -32,11 +35,7 @@ class HalClient
32
35
  #
33
36
  # link_rel - The link rel of interest
34
37
  def has_related?(link_rel)
35
- _ = related link_rel
36
- true
37
-
38
- rescue KeyError
39
- false
38
+ any? {|it| it.has_related?(link_rel) }
40
39
  end
41
40
 
42
41
  # Post a `Representation` or `String` to the resource.
@@ -1,3 +1,3 @@
1
1
  class HalClient
2
- VERSION = "2.2.1"
2
+ VERSION = "2.3.1"
3
3
  end
@@ -46,18 +46,14 @@ HAL
46
46
  it { should eq "#<HalClient::Representation: http://example.com/foo>" }
47
47
  end
48
48
 
49
- describe "#property" do
50
- context "existent" do
51
- subject { repr.property "prop1" }
52
- it { should eq 1 }
53
- end
49
+ specify { expect(repr.property "prop1").to eq 1 }
50
+ specify { expect{repr.property "nonexistent-prop"}.to raise_exception KeyError }
51
+
52
+ specify { expect(repr.property? "prop1").to be true }
53
+ specify { expect(repr.has_property? "prop1").to be true }
54
+ specify { expect(repr.property? "nonexistent-prop").to be false }
55
+ specify { expect(repr.has_property? "nonexistent-prop").to be false }
54
56
 
55
- context "non-existent" do
56
- it "raises exception" do
57
- expect{repr.property 'wat'}.to raise_exception KeyError
58
- end
59
- end
60
- end
61
57
 
62
58
  its(:href) { should eq "http://example.com/foo" }
63
59
 
@@ -178,11 +174,14 @@ HAL
178
174
  end
179
175
 
180
176
  specify { expect(subject.has_related? "link1").to be true }
177
+ specify { expect(subject.related? "link1").to be true }
181
178
  specify { expect(subject.has_related? "link3").to be true }
179
+ specify { expect(subject.related? "link3").to be true }
182
180
  specify { expect(subject.has_related? "embed1").to be true }
181
+ specify { expect(subject.related? "embed1").to be true }
183
182
 
184
- specify { expect(subject.has_related? "no-such-link").to be false }
185
- specify { expect(subject.has_related? "no-such-embed").to be false }
183
+ specify { expect(subject.has_related? "no-such-link-or-embed").to be false }
184
+ specify { expect(subject.related? "no-such-link-or-embed").to be false }
186
185
 
187
186
  context "curie links" do
188
187
  let(:raw_repr) { <<-HAL }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hal-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.1
4
+ version: 2.3.1
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: 2014-03-18 00:00:00.000000000 Z
12
+ date: 2014-03-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rest-client
@@ -202,7 +202,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
202
202
  version: '0'
203
203
  segments:
204
204
  - 0
205
- hash: -2800746664713076879
205
+ hash: -1374848680285234334
206
206
  required_rubygems_version: !ruby/object:Gem::Requirement
207
207
  none: false
208
208
  requirements:
@@ -211,7 +211,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
211
211
  version: '0'
212
212
  segments:
213
213
  - 0
214
- hash: -2800746664713076879
214
+ hash: -1374848680285234334
215
215
  requirements: []
216
216
  rubyforge_project:
217
217
  rubygems_version: 1.8.23