gds-api-adapters 9.2.0 → 10.0.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/README.md +1 -1
- data/lib/gds_api/content_api.rb +7 -27
- data/lib/gds_api/test_helpers/business_support_api.rb +4 -27
- data/lib/gds_api/test_helpers/business_support_helper.rb +40 -0
- data/lib/gds_api/test_helpers/content_api.rb +17 -13
- data/lib/gds_api/version.rb +1 -1
- data/test/content_api_test.rb +10 -71
- metadata +5 -4
data/README.md
CHANGED
@@ -4,7 +4,7 @@ app.
|
|
4
4
|
Example usage:
|
5
5
|
|
6
6
|
publisher_api = GdsApi::Publisher.new("environment")
|
7
|
-
ostruct_publication =
|
7
|
+
ostruct_publication = publisher_api.publication_for_slug('my-published-item')
|
8
8
|
|
9
9
|
panopticon_api = GdsApi::Panopticon.new("environment")
|
10
10
|
ostruct_metadata = panopticon_api.artefact_for_slug('my-published-item')
|
data/lib/gds_api/content_api.rb
CHANGED
@@ -108,23 +108,14 @@ class GdsApi::ContentApi < GdsApi::Base
|
|
108
108
|
get_json("#{@endpoint}/licences.json?ids=#{ids}")
|
109
109
|
end
|
110
110
|
|
111
|
-
def business_support_schemes(
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
start_url = "#{url_template}#{identifiers.shift}"
|
117
|
-
last_batch_url = identifiers.inject(start_url) do |url, id|
|
118
|
-
new_url = [url, id].join(',')
|
119
|
-
if new_url.length >= 2000
|
120
|
-
# fetch a batch using the previous url, then return a new start URL with this id
|
121
|
-
response = get_batch(url, response)
|
122
|
-
"#{url_template}#{id}"
|
123
|
-
else
|
124
|
-
new_url
|
125
|
-
end
|
111
|
+
def business_support_schemes(facets)
|
112
|
+
url = "#{base_url}/business_support_schemes.json"
|
113
|
+
query = facets.map { |k,v| "#{k}=#{v}" }
|
114
|
+
if query.any?
|
115
|
+
url += "?#{query.join("&")}"
|
126
116
|
end
|
127
|
-
|
117
|
+
|
118
|
+
get_json!(url)
|
128
119
|
end
|
129
120
|
|
130
121
|
def get_list!(url)
|
@@ -158,17 +149,6 @@ class GdsApi::ContentApi < GdsApi::Base
|
|
158
149
|
endpoint
|
159
150
|
end
|
160
151
|
|
161
|
-
def get_batch(batch_url, existing_response = nil)
|
162
|
-
batch_response = get_json!(batch_url)
|
163
|
-
if existing_response
|
164
|
-
existing_response.to_hash["total"] += batch_response["total"]
|
165
|
-
existing_response.to_hash["results"] += batch_response["results"]
|
166
|
-
existing_response
|
167
|
-
else
|
168
|
-
batch_response
|
169
|
-
end
|
170
|
-
end
|
171
|
-
|
172
152
|
def key_for_tag_type(tag_type)
|
173
153
|
tag_type.nil? ? "tag" : CGI.escape(tag_type)
|
174
154
|
end
|
@@ -1,35 +1,20 @@
|
|
1
|
-
require 'gds_api/test_helpers/
|
2
|
-
require 'cgi'
|
3
|
-
require 'gds_api/test_helpers/common_responses'
|
1
|
+
require 'gds_api/test_helpers/business_support_helper'
|
4
2
|
|
5
3
|
module GdsApi
|
6
4
|
module TestHelpers
|
7
5
|
module BusinessSupportApi
|
8
6
|
include GdsApi::TestHelpers::CommonResponses
|
7
|
+
include GdsApi::TestHelpers::BusinessSupportHelper
|
9
8
|
# Generally true. If you are initializing the client differently,
|
10
9
|
# you could redefine/override the constant or stub directly.
|
11
10
|
BUSINESS_SUPPORT_API_ENDPOINT = Plek.current.find('business-support-api')
|
12
11
|
|
13
12
|
def setup_business_support_api_schemes_stubs
|
14
|
-
|
15
|
-
stub_request(:get, %r{\A#{BUSINESS_SUPPORT_API_ENDPOINT}/business-support-schemes\.json}).to_return do |request|
|
16
|
-
if request.uri.query_values
|
17
|
-
key = facet_key(request.uri.query_values)
|
18
|
-
results = @stubbed_business_support_schemes[key] || []
|
19
|
-
else
|
20
|
-
results = @stubbed_business_support_schemes['default']
|
21
|
-
end
|
22
|
-
{:body => plural_response_base.merge("results" => results, "total" => results.size).to_json}
|
23
|
-
end
|
24
|
-
|
13
|
+
setup_business_support_stubs(BUSINESS_SUPPORT_API_ENDPOINT, 'business-support-schemes')
|
25
14
|
end
|
26
15
|
|
27
16
|
def business_support_api_has_scheme(scheme, facets={})
|
28
|
-
|
29
|
-
unless @stubbed_business_support_schemes.has_key?(key)
|
30
|
-
@stubbed_business_support_schemes[key] = []
|
31
|
-
end
|
32
|
-
@stubbed_business_support_schemes[key] << scheme
|
17
|
+
api_has_business_support(scheme, facets)
|
33
18
|
end
|
34
19
|
|
35
20
|
def business_support_api_has_schemes(schemes, facets={})
|
@@ -44,14 +29,6 @@ module GdsApi
|
|
44
29
|
{:body => response_base.merge(:format => 'business_support', :title => title, :details => scheme).to_json}
|
45
30
|
end
|
46
31
|
end
|
47
|
-
|
48
|
-
private
|
49
|
-
|
50
|
-
def facet_key(facets)
|
51
|
-
key = 'default'
|
52
|
-
key = facets.values.sort.hash.to_s if facets and !facets.empty?
|
53
|
-
key
|
54
|
-
end
|
55
32
|
end
|
56
33
|
end
|
57
34
|
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'gds_api/test_helpers/json_client_helper'
|
2
|
+
require 'cgi'
|
3
|
+
require 'gds_api/test_helpers/common_responses'
|
4
|
+
|
5
|
+
|
6
|
+
module GdsApi
|
7
|
+
module TestHelpers
|
8
|
+
module BusinessSupportHelper
|
9
|
+
def setup_business_support_stubs(endpoint, path)
|
10
|
+
@stubbed_business_supports = {}
|
11
|
+
stub_request(:get, %r{\A#{endpoint}/#{path}\.json}).to_return do |request|
|
12
|
+
if request.uri.query_values
|
13
|
+
key = facet_key(request.uri.query_values)
|
14
|
+
results = @stubbed_business_supports[key] || []
|
15
|
+
else
|
16
|
+
results = @stubbed_business_supports['default']
|
17
|
+
end
|
18
|
+
{:body => plural_response_base.merge("results" => results, "total" => results.size).to_json}
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
def api_has_business_support(business_support, facets={})
|
24
|
+
key = facet_key(facets)
|
25
|
+
unless @stubbed_business_supports.has_key?(key)
|
26
|
+
@stubbed_business_supports[key] = []
|
27
|
+
end
|
28
|
+
@stubbed_business_supports[key] << business_support
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def facet_key(facets)
|
34
|
+
key = 'default'
|
35
|
+
key = facets.values.flatten.sort.hash.to_s if facets and !facets.empty?
|
36
|
+
key
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -1,11 +1,13 @@
|
|
1
1
|
require 'gds_api/test_helpers/json_client_helper'
|
2
2
|
require 'cgi'
|
3
3
|
require 'gds_api/test_helpers/common_responses'
|
4
|
+
require 'gds_api/test_helpers/business_support_helper'
|
4
5
|
|
5
6
|
module GdsApi
|
6
7
|
module TestHelpers
|
7
8
|
module ContentApi
|
8
9
|
include GdsApi::TestHelpers::CommonResponses
|
10
|
+
include GdsApi::TestHelpers::BusinessSupportHelper
|
9
11
|
# Generally true. If you are initializing the client differently,
|
10
12
|
# you could redefine/override the constant or stub directly.
|
11
13
|
CONTENT_API_ENDPOINT = Plek.current.find('contentapi')
|
@@ -342,21 +344,23 @@ module GdsApi
|
|
342
344
|
end
|
343
345
|
|
344
346
|
def setup_content_api_business_support_schemes_stubs
|
345
|
-
|
346
|
-
stub_request(:get, %r{\A#{CONTENT_API_ENDPOINT}/business_support_schemes\.json}).to_return do |request|
|
347
|
-
if request.uri.query_values and request.uri.query_values["identifiers"]
|
348
|
-
ids = request.uri.query_values["identifiers"].split(',')
|
349
|
-
results = @stubbed_content_api_business_support_schemes.select {|bs| ids.include? bs["identifier"] }
|
350
|
-
else
|
351
|
-
results = []
|
352
|
-
end
|
353
|
-
{:body => plural_response_base.merge("results" => results, "total" => results.size).to_json}
|
354
|
-
end
|
347
|
+
setup_business_support_stubs(CONTENT_API_ENDPOINT, 'business_support_schemes')
|
355
348
|
end
|
356
349
|
|
357
|
-
def content_api_has_business_support_scheme(scheme)
|
358
|
-
|
359
|
-
|
350
|
+
def content_api_has_business_support_scheme(scheme, facets)
|
351
|
+
api_has_business_support(scheme, facets)
|
352
|
+
end
|
353
|
+
|
354
|
+
def content_api_has_default_business_support_schemes
|
355
|
+
empty_results = {
|
356
|
+
"_response_info" => {"status" => "ok"},
|
357
|
+
"description" => "Business Support Schemes!",
|
358
|
+
"total" => 0, "startIndex" => 1, "pageSize" => 0, "currentPage" => 1, "pages" => 1,
|
359
|
+
"results" => []
|
360
|
+
}
|
361
|
+
|
362
|
+
stub_request(:get, %r{\A#{CONTENT_API_ENDPOINT}/business_support_schemes\.json}).
|
363
|
+
to_return(:body => empty_results.to_json)
|
360
364
|
end
|
361
365
|
|
362
366
|
def content_api_licence_hash(licence_identifier, options = {})
|
data/lib/gds_api/version.rb
CHANGED
data/test/content_api_test.rb
CHANGED
@@ -576,30 +576,10 @@ describe GdsApi::ContentApi do
|
|
576
576
|
stub_request(:get, %r{\A#{@base_api_url}/business_support_schemes.json}).
|
577
577
|
to_return(:status => 200, :body => {"foo" => "bar"}.to_json)
|
578
578
|
|
579
|
-
response = @api.business_support_schemes(
|
579
|
+
response = @api.business_support_schemes(:drink => "coffee")
|
580
580
|
|
581
581
|
assert_equal({"foo" => "bar"}, response.to_hash)
|
582
|
-
assert_requested :get, "#{@base_api_url}/business_support_schemes.json?
|
583
|
-
end
|
584
|
-
|
585
|
-
it "should CGI escape identifiers" do
|
586
|
-
stub_request(:get, %r{\A#{@base_api_url}/business_support_schemes.json}).
|
587
|
-
to_return(:status => 200, :body => {"foo" => "bar"}.to_json)
|
588
|
-
|
589
|
-
response = @api.business_support_schemes(['foo bar', 'baz&bing'])
|
590
|
-
|
591
|
-
assert_equal({"foo" => "bar"}, response.to_hash)
|
592
|
-
assert_requested :get, "#{@base_api_url}/business_support_schemes.json?identifiers=foo%20bar,baz%26bing", :times => 1
|
593
|
-
end
|
594
|
-
|
595
|
-
it "should not modify the given array" do
|
596
|
-
stub_request(:get, %r{\A#{@base_api_url}/business_support_schemes.json}).
|
597
|
-
to_return(:status => 200, :body => {"foo" => "bar"}.to_json)
|
598
|
-
|
599
|
-
ids = %w(foo bar baz)
|
600
|
-
@api.business_support_schemes(ids)
|
601
|
-
|
602
|
-
assert_equal %w(foo bar baz), ids
|
582
|
+
assert_requested :get, "#{@base_api_url}/business_support_schemes.json?drink=coffee", :times => 1
|
603
583
|
end
|
604
584
|
|
605
585
|
it "should raise an error if content_api returns 404" do
|
@@ -620,58 +600,17 @@ describe GdsApi::ContentApi do
|
|
620
600
|
end
|
621
601
|
end
|
622
602
|
|
623
|
-
describe "handling requests that would have a URI in excess of 2000 chars" do
|
624
|
-
before :each do
|
625
|
-
stub_request(:get, %r{\A#{@base_api_url}/business_support_schemes\.json}).
|
626
|
-
to_return(:status => 200, :body => api_response_for_results([{"foo" => "bar"}]).to_json)
|
627
|
-
end
|
628
|
-
|
629
|
-
it "should do the request in batches" do
|
630
|
-
ids = (1..300).map {|n| sprintf "%09d", n } # each id is 9 chars long
|
631
|
-
|
632
|
-
response = @api.business_support_schemes(ids)
|
633
|
-
|
634
|
-
assert_requested :get, %r{\A#{@base_api_url}/business_support_schemes\.json}, :times => 2
|
635
|
-
|
636
|
-
first_batch = ids[0..191]
|
637
|
-
assert_requested :get, "#{@base_api_url}/business_support_schemes.json?identifiers=#{first_batch.join(',')}"
|
638
|
-
second_batch = ids[192..299]
|
639
|
-
assert_requested :get, "#{@base_api_url}/business_support_schemes.json?identifiers=#{second_batch.join(',')}"
|
640
|
-
end
|
641
|
-
|
642
|
-
it "should merge the responses into a single GdsApi::Response" do
|
643
|
-
ids = (1..300).map {|n| sprintf "%09d", n } # each id is 9 chars long
|
644
|
-
first_batch = ids[0..191]
|
645
|
-
stub_request(:get, "#{@base_api_url}/business_support_schemes.json").
|
646
|
-
with(:query => {"identifiers" => first_batch.join(',')}).
|
647
|
-
to_return(:status => 200, :body => api_response_for_results(first_batch).to_json) # We're stubbing response that just return the requested ids
|
648
|
-
second_batch = ids[192..299]
|
649
|
-
stub_request(:get, "#{@base_api_url}/business_support_schemes.json").
|
650
|
-
with(:query => {"identifiers" => second_batch.join(',')}).
|
651
|
-
to_return(:status => 200, :body => api_response_for_results(second_batch).to_json)
|
652
|
-
|
653
|
-
response = @api.business_support_schemes(ids)
|
654
|
-
|
655
|
-
# Assert both Hash an OpenStruct access to ensure nothing's been memoized part-way through merging stuff
|
656
|
-
assert_equal 300, response["total"]
|
657
|
-
assert_equal ids, response["results"]
|
658
|
-
|
659
|
-
assert_equal 300, response.total
|
660
|
-
assert_equal ids, response.results
|
661
|
-
end
|
662
|
-
end
|
663
|
-
|
664
603
|
describe "test helpers" do
|
665
604
|
it "should have representative test helpers" do
|
666
605
|
setup_content_api_business_support_schemes_stubs
|
667
|
-
s1 = { "title" => "Scheme 1", "
|
668
|
-
content_api_has_business_support_scheme(s1)
|
669
|
-
s2 = { "title" => "Scheme 2", "
|
670
|
-
content_api_has_business_support_scheme(s2)
|
671
|
-
s3 = { "title" => "Scheme 3", "
|
672
|
-
content_api_has_business_support_scheme(s3)
|
673
|
-
|
674
|
-
response = @api.business_support_schemes(
|
606
|
+
s1 = { "title" => "Scheme 1", "format" => "business_support" }
|
607
|
+
content_api_has_business_support_scheme(s1, :locations => "england", :sectors => "farming")
|
608
|
+
s2 = { "title" => "Scheme 2", "format" => "business_support" }
|
609
|
+
content_api_has_business_support_scheme(s2, :sectors => "farming")
|
610
|
+
s3 = { "title" => "Scheme 3", "format" => "business_support" }
|
611
|
+
content_api_has_business_support_scheme(s3, :locations => "england", :sectors => "farming")
|
612
|
+
|
613
|
+
response = @api.business_support_schemes(:locations => "england", :sectors => "farming").to_hash
|
675
614
|
|
676
615
|
assert_equal 2, response["total"]
|
677
616
|
assert_equal [s1, s3], response["results"]
|
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:
|
4
|
+
version: 10.0.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: 2014-
|
12
|
+
date: 2014-03-05 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: plek
|
@@ -294,6 +294,7 @@ files:
|
|
294
294
|
- lib/gds_api/test_helpers/performance_platform/data_in.rb
|
295
295
|
- lib/gds_api/test_helpers/licence_application.rb
|
296
296
|
- lib/gds_api/test_helpers/organisations.rb
|
297
|
+
- lib/gds_api/test_helpers/business_support_helper.rb
|
297
298
|
- lib/gds_api/test_helpers/imminence.rb
|
298
299
|
- lib/gds_api/test_helpers/worldwide.rb
|
299
300
|
- lib/gds_api/test_helpers/mapit.rb
|
@@ -367,7 +368,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
367
368
|
version: '0'
|
368
369
|
segments:
|
369
370
|
- 0
|
370
|
-
hash:
|
371
|
+
hash: 21857638136048876
|
371
372
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
372
373
|
none: false
|
373
374
|
requirements:
|
@@ -376,7 +377,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
376
377
|
version: '0'
|
377
378
|
segments:
|
378
379
|
- 0
|
379
|
-
hash:
|
380
|
+
hash: 21857638136048876
|
380
381
|
requirements: []
|
381
382
|
rubyforge_project:
|
382
383
|
rubygems_version: 1.8.23
|