hal-client 3.7.0 → 3.8.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1c95d8286a947d3e8cd05ace7fcdc4cb17ef8822
4
- data.tar.gz: 50a135afb535a846fe8bd89a44eab315e4ccb41f
3
+ metadata.gz: fa71061de205b5ea4b0a5eabe170f105eec8f0fc
4
+ data.tar.gz: 5ad722a314c80c75e840709f96daccc1f644e902
5
5
  SHA512:
6
- metadata.gz: 152f91baac2a1ce9a5fd24058ca676b75d425a94e2467d89e194f36a563a24e09b9fb7b69385cd004f1422f6b53dea22ee24f628e2926fb87c14e247f5253273
7
- data.tar.gz: 41e520737a434e9fc273fc0a5d6e0afe29f0fa9a55b42d1d565f9902bac92417379e68a5b248967c84eec8e2877898e064603622751d75d57a6e732b7cb9c3d0
6
+ metadata.gz: 6bf075feeccb75b8f3b09a2c3ce9f42167f2519d5207f34c13e36b618ab410092b9a0874d2fb1f56f33dc336284f24db1064620b77f57732860ab1d3aeee4dba
7
+ data.tar.gz: 9c03d6184f359e014d3a354012b07220b436ad717159366db0d066d0ff9aa3b3f0f0140c2bd3a45416281ac224144fa8ab81d406ba69e4fb796e3bd091332ae5
@@ -90,7 +90,7 @@ class HalClient
90
90
  # :templated - is this link templated? Default: false
91
91
  def add_link(rel, target, opts={})
92
92
  templated = opts.fetch(:templated, false)
93
-
93
+
94
94
  link_obj = { "href" => target.to_s }
95
95
  link_obj = link_obj.merge("templated" => true) if templated
96
96
 
@@ -100,6 +100,15 @@ class HalClient
100
100
  self.class.new(orig_repr, raw.merge("_links" => updated_links_section))
101
101
  end
102
102
 
103
+ # Returns a RepresentationEditor exactly like this one except that
104
+ # is has an new or overwritten property value
105
+ #
106
+ # key - The name of the property
107
+ # value - Value to place in the property
108
+ def set_property(key, value)
109
+ self.class.new(orig_repr, raw.merge(key => value))
110
+ end
111
+
103
112
  protected
104
113
 
105
114
  attr_reader :orig_repr, :raw
@@ -1,3 +1,3 @@
1
1
  class HalClient
2
- VERSION = "3.7.0"
2
+ VERSION = "3.8.0"
3
3
  end
@@ -82,6 +82,18 @@ RSpec.describe HalClient::RepresentationEditor do
82
82
 
83
83
  end
84
84
 
85
+ describe "#set_property" do
86
+ it "adds brand new property" do
87
+ expect(subject.set_property("name", "new-name"))
88
+ .to have_property("name", "new-name")
89
+ end
90
+
91
+ it "overwrites any previous value in the property" do
92
+ expect(subject).to have_property("age", 10)
93
+ expect(subject.set_property("age", 20)).to have_property("age", 20)
94
+ end
95
+ end
96
+
85
97
  describe "#add_link" do
86
98
  it "adds brand new link rel" do
87
99
  expect(subject.add_link("related", "http://example.com/third"))
@@ -108,7 +120,8 @@ RSpec.describe HalClient::RepresentationEditor do
108
120
  .new(parsed_json: MultiJson.load(raw_hal)) }
109
121
 
110
122
  let(:raw_hal) { <<-HAL }
111
- { "_links": {
123
+ { "age": 10
124
+ ,"_links": {
112
125
  "self" : { "href": "http://example.com/a_repr" }
113
126
  ,"up" : [{ "href": "http://example.com/c1" },
114
127
  { "href": "http://example.com/c2" }]
@@ -152,6 +165,13 @@ RSpec.describe HalClient::RepresentationEditor do
152
165
  end
153
166
  end
154
167
 
168
+ matcher :have_property do |key, value|
169
+ match do |actual_json|
170
+ parsed = MultiJson.load(actual_json.to_hal)
171
+ expect(parsed[key]).to eq value
172
+ end
173
+ end
174
+
155
175
  matcher :have_embedded do |expected_rel, expected_target=ANYTHING|
156
176
  match do |actual_json|
157
177
  parsed = MultiJson.load(actual_json.to_hal)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hal-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.7.0
4
+ version: 3.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Williams
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-09 00:00:00.000000000 Z
11
+ date: 2015-04-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: http