gds-api-adapters 4.0.0 → 4.1.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.
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'gds_api/test_helpers/json_client_helper'
|
2
2
|
require 'cgi'
|
3
|
+
require_relative 'content_api/artefact_stub'
|
3
4
|
|
4
5
|
module GdsApi
|
5
6
|
module TestHelpers
|
@@ -78,18 +79,21 @@ module GdsApi
|
|
78
79
|
end
|
79
80
|
|
80
81
|
def content_api_has_an_artefact(slug, body = artefact_for_slug(slug))
|
81
|
-
|
82
|
-
stub_request(:get, url).to_return(status: 200, body: body.to_json, headers: {})
|
82
|
+
ArtefactStub.new(slug).with_response_body(body).stub
|
83
83
|
end
|
84
84
|
|
85
85
|
def content_api_has_unpublished_artefact(slug, edition, body = artefact_for_slug(slug))
|
86
|
-
|
87
|
-
|
86
|
+
ArtefactStub.new(slug)
|
87
|
+
.with_response_body(body)
|
88
|
+
.with_query_parameters(edition: edition)
|
89
|
+
.stub
|
88
90
|
end
|
89
91
|
|
90
92
|
def content_api_has_an_artefact_with_snac_code(slug, snac, body = artefact_for_slug(slug))
|
91
|
-
|
92
|
-
|
93
|
+
ArtefactStub.new(slug)
|
94
|
+
.with_response_body(body)
|
95
|
+
.with_query_parameters(snac: snac)
|
96
|
+
.stub
|
93
97
|
end
|
94
98
|
|
95
99
|
def content_api_does_not_have_an_artefact(slug)
|
@@ -98,8 +102,10 @@ module GdsApi
|
|
98
102
|
"status" => "not found"
|
99
103
|
}
|
100
104
|
}
|
101
|
-
|
102
|
-
|
105
|
+
ArtefactStub.new(slug)
|
106
|
+
.with_response_body(body)
|
107
|
+
.with_response_status(404)
|
108
|
+
.stub
|
103
109
|
end
|
104
110
|
|
105
111
|
def content_api_has_an_archived_artefact(slug)
|
@@ -109,10 +115,13 @@ module GdsApi
|
|
109
115
|
"status_message" => "This item is no longer available"
|
110
116
|
}
|
111
117
|
}
|
112
|
-
|
113
|
-
|
118
|
+
ArtefactStub.new(slug)
|
119
|
+
.with_response_body(body)
|
120
|
+
.with_response_status(410)
|
121
|
+
.stub
|
114
122
|
end
|
115
123
|
|
124
|
+
# Stub requests, and then dynamically generate a response based on the slug in the request
|
116
125
|
def stub_content_api_default_artefact
|
117
126
|
stub_request(:get, %r{\A#{CONTENT_API_ENDPOINT}/[a-z0-9-]+\.json}).to_return { |request|
|
118
127
|
slug = request.uri.path.split('/').last.chomp('.json')
|
@@ -0,0 +1,55 @@
|
|
1
|
+
module GdsApi
|
2
|
+
module TestHelpers
|
3
|
+
module ContentApi
|
4
|
+
class ArtefactStub
|
5
|
+
include WebMock::API
|
6
|
+
# This is ugly, but the nicest way we found to get access to artefact_for_slug
|
7
|
+
include GdsApi::TestHelpers::ContentApi
|
8
|
+
|
9
|
+
attr_accessor :slug, :query_parameters, :response_body, :response_status
|
10
|
+
|
11
|
+
def initialize(slug)
|
12
|
+
@slug = slug
|
13
|
+
@query_parameters = {}
|
14
|
+
@response_body = artefact_for_slug(slug)
|
15
|
+
@response_status = 200
|
16
|
+
end
|
17
|
+
|
18
|
+
def with_query_parameters(hash)
|
19
|
+
@query_parameters = hash
|
20
|
+
self
|
21
|
+
end
|
22
|
+
|
23
|
+
def with_response_body(response_body)
|
24
|
+
@response_body = response_body
|
25
|
+
self
|
26
|
+
end
|
27
|
+
|
28
|
+
def with_response_status(response_status)
|
29
|
+
@response_status = response_status
|
30
|
+
self
|
31
|
+
end
|
32
|
+
|
33
|
+
# Nothing is stubbed until this is called
|
34
|
+
def stub
|
35
|
+
stub_request(:get, url_without_query)
|
36
|
+
.with(query: hash_including(comparable_query_params))
|
37
|
+
.to_return(status: @response_status, body: @response_body.to_json)
|
38
|
+
end
|
39
|
+
|
40
|
+
private
|
41
|
+
def url_without_query
|
42
|
+
"#{CONTENT_API_ENDPOINT}/#{slug}.json"
|
43
|
+
end
|
44
|
+
|
45
|
+
# Ensure that all keys and values are strings
|
46
|
+
# because Webmock doesn't handle symbols
|
47
|
+
def comparable_query_params
|
48
|
+
@query_parameters.each_with_object({}) do |(k,v),hash|
|
49
|
+
hash[k.to_s] = v.nil? ? v : v.to_s
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
data/lib/gds_api/version.rb
CHANGED
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: gds-api-adapters
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 4.
|
5
|
+
version: 4.1.0
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- James Stewart
|
@@ -166,40 +166,41 @@ extra_rdoc_files: []
|
|
166
166
|
|
167
167
|
files:
|
168
168
|
- lib/gds_api/version.rb
|
169
|
-
- lib/gds_api/
|
170
|
-
- lib/gds_api/base.rb
|
171
|
-
- lib/gds_api/licence_application.rb
|
169
|
+
- lib/gds_api/publisher.rb
|
172
170
|
- lib/gds_api/panopticon/registerer.rb
|
173
|
-
- lib/gds_api/
|
174
|
-
- lib/gds_api/imminence.rb
|
175
|
-
- lib/gds_api/rummager.rb
|
171
|
+
- lib/gds_api/typhoeus_client.rb
|
176
172
|
- lib/gds_api/content_api.rb
|
177
|
-
- lib/gds_api/
|
178
|
-
- lib/gds_api/json_client.rb
|
179
|
-
- lib/gds_api/core-ext/openstruct.rb
|
180
|
-
- lib/gds_api/response.rb
|
181
|
-
- lib/gds_api/publisher.rb
|
182
|
-
- lib/gds_api/test_helpers/licence_application.rb
|
183
|
-
- lib/gds_api/test_helpers/imminence.rb
|
184
|
-
- lib/gds_api/test_helpers/content_api.rb
|
173
|
+
- lib/gds_api/imminence.rb
|
185
174
|
- lib/gds_api/test_helpers/publisher.rb
|
175
|
+
- lib/gds_api/test_helpers/content_api.rb
|
176
|
+
- lib/gds_api/test_helpers/imminence.rb
|
177
|
+
- lib/gds_api/test_helpers/licence_application.rb
|
178
|
+
- lib/gds_api/test_helpers/content_api/artefact_stub.rb
|
186
179
|
- lib/gds_api/test_helpers/panopticon.rb
|
187
180
|
- lib/gds_api/test_helpers/json_client_helper.rb
|
188
|
-
- lib/gds_api/
|
181
|
+
- lib/gds_api/licence_application.rb
|
182
|
+
- lib/gds_api/base.rb
|
183
|
+
- lib/gds_api/json_client.rb
|
184
|
+
- lib/gds_api/response.rb
|
185
|
+
- lib/gds_api/rummager.rb
|
189
186
|
- lib/gds_api/panopticon.rb
|
187
|
+
- lib/gds_api/core-ext/openstruct.rb
|
188
|
+
- lib/gds_api/part_methods.rb
|
189
|
+
- lib/gds_api/needotron.rb
|
190
|
+
- lib/gds_api/exceptions.rb
|
190
191
|
- lib/gds_api/helpers.rb
|
191
192
|
- README.md
|
192
193
|
- Rakefile
|
193
|
-
- test/rummager_test.rb
|
194
|
-
- test/publisher_api_test.rb
|
195
|
-
- test/licence_application_api_test.rb
|
196
194
|
- test/panopticon_api_test.rb
|
195
|
+
- test/publisher_api_test.rb
|
196
|
+
- test/rummager_test.rb
|
197
197
|
- test/imminence_api_test.rb
|
198
|
+
- test/panopticon_registerer_test.rb
|
199
|
+
- test/content_api_test.rb
|
198
200
|
- test/json_client_test.rb
|
199
|
-
- test/test_helper.rb
|
200
201
|
- test/gds_api_base_test.rb
|
201
|
-
- test/
|
202
|
-
- test/
|
202
|
+
- test/licence_application_api_test.rb
|
203
|
+
- test/test_helper.rb
|
203
204
|
homepage: http://github.com/alphagov/gds-api-adapters
|
204
205
|
licenses: []
|
205
206
|
|
@@ -213,7 +214,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
213
214
|
requirements:
|
214
215
|
- - ">="
|
215
216
|
- !ruby/object:Gem::Version
|
216
|
-
hash: -
|
217
|
+
hash: -316804673231244671
|
217
218
|
segments:
|
218
219
|
- 0
|
219
220
|
version: "0"
|
@@ -222,7 +223,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
222
223
|
requirements:
|
223
224
|
- - ">="
|
224
225
|
- !ruby/object:Gem::Version
|
225
|
-
hash: -
|
226
|
+
hash: -316804673231244671
|
226
227
|
segments:
|
227
228
|
- 0
|
228
229
|
version: "0"
|
@@ -234,13 +235,13 @@ signing_key:
|
|
234
235
|
specification_version: 3
|
235
236
|
summary: Adapters to work with GDS APIs
|
236
237
|
test_files:
|
237
|
-
- test/rummager_test.rb
|
238
|
-
- test/publisher_api_test.rb
|
239
|
-
- test/licence_application_api_test.rb
|
240
238
|
- test/panopticon_api_test.rb
|
239
|
+
- test/publisher_api_test.rb
|
240
|
+
- test/rummager_test.rb
|
241
241
|
- test/imminence_api_test.rb
|
242
|
+
- test/panopticon_registerer_test.rb
|
243
|
+
- test/content_api_test.rb
|
242
244
|
- test/json_client_test.rb
|
243
|
-
- test/test_helper.rb
|
244
245
|
- test/gds_api_base_test.rb
|
245
|
-
- test/
|
246
|
-
- test/
|
246
|
+
- test/licence_application_api_test.rb
|
247
|
+
- test/test_helper.rb
|