gds-api-adapters 7.15.0 → 7.16.0
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/lib/gds_api/need_api.rb +9 -0
- data/lib/gds_api/test_helpers/need_api.rb +21 -0
- data/lib/gds_api/version.rb +1 -1
- data/test/need_api_test.rb +46 -0
- metadata +4 -4
data/lib/gds_api/need_api.rb
CHANGED
@@ -8,10 +8,19 @@ class GdsApi::NeedApi < GdsApi::Base
|
|
8
8
|
get_list!("#{endpoint}/needs#{query}")
|
9
9
|
end
|
10
10
|
|
11
|
+
def need(need_id)
|
12
|
+
get_json("#{endpoint}/needs/#{CGI.escape(need_id.to_s)}")
|
13
|
+
end
|
14
|
+
|
11
15
|
def create_need(need)
|
12
16
|
post_json!("#{endpoint}/needs", need)
|
13
17
|
end
|
14
18
|
|
19
|
+
def update_need(need_id, need_update)
|
20
|
+
# `need_update` can be a hash of updated fields or a complete need
|
21
|
+
put_json!("#{endpoint}/needs/#{CGI.escape(need_id.to_s)}", need_update)
|
22
|
+
end
|
23
|
+
|
15
24
|
def organisations
|
16
25
|
get_json!("#{endpoint}/organisations")["organisations"]
|
17
26
|
end
|
@@ -39,6 +39,27 @@ module GdsApi
|
|
39
39
|
)
|
40
40
|
stub_request(:get, url).to_return(status: 200, body: body.to_json, headers: {})
|
41
41
|
end
|
42
|
+
|
43
|
+
def need_api_has_need(need)
|
44
|
+
need_id = need["need_id"] || need[:need_id]
|
45
|
+
raise ArgumentError, "Test need is missing an ID" unless need_id
|
46
|
+
|
47
|
+
url = NEED_API_ENDPOINT + "/needs/#{need_id}"
|
48
|
+
stub_request(:get, url).to_return(status: 200, body: need.to_json, headers: {})
|
49
|
+
end
|
50
|
+
|
51
|
+
def need_api_has_no_need(need_id)
|
52
|
+
url = NEED_API_ENDPOINT + "/needs/#{need_id}"
|
53
|
+
not_found_body = {
|
54
|
+
"_response_info" => {"status" => "not_found"},
|
55
|
+
"error" => "No need exists with this ID"
|
56
|
+
}
|
57
|
+
stub_request(:get, url).to_return(
|
58
|
+
status: 404,
|
59
|
+
body: not_found_body.to_json,
|
60
|
+
headers: {}
|
61
|
+
)
|
62
|
+
end
|
42
63
|
end
|
43
64
|
end
|
44
65
|
end
|
data/lib/gds_api/version.rb
CHANGED
data/test/need_api_test.rb
CHANGED
@@ -129,6 +129,52 @@ describe GdsApi::NeedApi do
|
|
129
129
|
end
|
130
130
|
end
|
131
131
|
|
132
|
+
describe "viewing needs" do
|
133
|
+
it "should return a need response" do
|
134
|
+
need = {
|
135
|
+
need_id: 100500,
|
136
|
+
role: "parent",
|
137
|
+
goal: "do things",
|
138
|
+
benefit: "good things"
|
139
|
+
}
|
140
|
+
need_api_has_need(need)
|
141
|
+
|
142
|
+
need_response = @api.need(100500)
|
143
|
+
assert_equal "good things", need_response.benefit
|
144
|
+
end
|
145
|
+
|
146
|
+
it "should return nil for a missing need" do
|
147
|
+
need_api_has_no_need(100600)
|
148
|
+
assert_nil @api.need(100600)
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
describe "updating needs" do
|
153
|
+
it "should send a PUT request" do
|
154
|
+
updated_fields = {
|
155
|
+
role: "parent",
|
156
|
+
goal: "do things",
|
157
|
+
benefit: "good things"
|
158
|
+
}
|
159
|
+
|
160
|
+
update_stub = stub_request(:put, @base_api_url + "/needs/100005")
|
161
|
+
.with(body: updated_fields.to_json)
|
162
|
+
.to_return(status: 204)
|
163
|
+
@api.update_need(100005, updated_fields)
|
164
|
+
assert_requested update_stub
|
165
|
+
end
|
166
|
+
|
167
|
+
it "should accept partial updates" do
|
168
|
+
updated_fields = { role: "parent" }
|
169
|
+
|
170
|
+
update_stub = stub_request(:put, @base_api_url + "/needs/100005")
|
171
|
+
.with(body: updated_fields.to_json)
|
172
|
+
.to_return(status: 204)
|
173
|
+
@api.update_need(100005, updated_fields)
|
174
|
+
assert_requested update_stub
|
175
|
+
end
|
176
|
+
end
|
177
|
+
|
132
178
|
describe "viewing organisations" do
|
133
179
|
it "should return a list of organisations" do
|
134
180
|
request_stub = need_api_has_organisations(
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gds-api-adapters
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 7.
|
4
|
+
version: 7.16.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-10-
|
12
|
+
date: 2013-10-28 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: plek
|
@@ -340,7 +340,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
340
340
|
version: '0'
|
341
341
|
segments:
|
342
342
|
- 0
|
343
|
-
hash:
|
343
|
+
hash: 4084552957732553558
|
344
344
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
345
345
|
none: false
|
346
346
|
requirements:
|
@@ -349,7 +349,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
349
349
|
version: '0'
|
350
350
|
segments:
|
351
351
|
- 0
|
352
|
-
hash:
|
352
|
+
hash: 4084552957732553558
|
353
353
|
requirements: []
|
354
354
|
rubyforge_project:
|
355
355
|
rubygems_version: 1.8.23
|