gds-api-adapters 38.1.0 → 39.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/gds_api/test_helpers/need_api.rb +0 -15
- data/lib/gds_api/test_helpers/organisations.rb +5 -0
- data/lib/gds_api/version.rb +1 -1
- metadata +3 -103
- data/test/asset_manager_test.rb +0 -94
- data/test/business_support_api_test.rb +0 -45
- data/test/content_api_test.rb +0 -712
- data/test/content_store_test.rb +0 -55
- data/test/email_alert_api_test.rb +0 -189
- data/test/fixtures/finder_api/cma-case-schema.json +0 -103
- data/test/fixtures/hello.txt +0 -1
- data/test/fixtures/new_policies_for_dwp.json +0 -298
- data/test/fixtures/no_services_and_info_data_found_fixture.json +0 -14
- data/test/fixtures/old_policies_for_dwp.json +0 -413
- data/test/fixtures/services_and_info_fixture.json +0 -73
- data/test/fixtures/sub_sector_organisations.json +0 -57
- data/test/fixtures/world_organisations_australia.json +0 -490
- data/test/gds_api_base_test.rb +0 -110
- data/test/gov_uk_delivery_test.rb +0 -67
- data/test/govuk_headers_test.rb +0 -30
- data/test/helpers_test.rb +0 -23
- data/test/imminence_api_test.rb +0 -196
- data/test/json_client_test.rb +0 -879
- data/test/licence_application_api_test.rb +0 -196
- data/test/list_response_test.rb +0 -189
- data/test/local_links_manager_api_test.rb +0 -236
- data/test/mapit_test.rb +0 -117
- data/test/maslow_test.rb +0 -12
- data/test/middleware/govuk_header_sniffer_test.rb +0 -18
- data/test/need_api_test.rb +0 -345
- data/test/organisations_api_test.rb +0 -58
- data/test/panopticon_registerer_test.rb +0 -118
- data/test/panopticon_test.rb +0 -190
- data/test/pp_data_in_test.rb +0 -52
- data/test/pp_data_out_test.rb +0 -24
- data/test/publishing_api/special_route_publisher_test.rb +0 -104
- data/test/publishing_api_test.rb +0 -186
- data/test/publishing_api_v2/get_expanded_links_test.rb +0 -85
- data/test/publishing_api_v2/get_links_test.rb +0 -89
- data/test/publishing_api_v2/lookup_test.rb +0 -70
- data/test/publishing_api_v2_test.rb +0 -1649
- data/test/response_test.rb +0 -245
- data/test/router_test.rb +0 -456
- data/test/rummager_helpers_test.rb +0 -20
- data/test/rummager_test.rb +0 -150
- data/test/support_api_test.rb +0 -189
- data/test/support_test.rb +0 -95
- data/test/test_helper.rb +0 -55
- data/test/test_helpers/email_alert_api_test.rb +0 -24
- data/test/test_helpers/pact_helper.rb +0 -13
- data/test/test_helpers/panopticon_test.rb +0 -44
- data/test/test_helpers/publishing_api_test.rb +0 -129
- data/test/test_helpers/publishing_api_v2_test.rb +0 -170
- data/test/worldwide_api_test.rb +0 -82
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e13c9f713f5a9a3e1f1e79f6b26c865a67a4bffb
|
4
|
+
data.tar.gz: 1379836ecce2fd12728c9a5f657aaaa641c2f5d3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 07437dca1957fa78c58dffb855941cc9a7e32579f3fca9033dbac50e56fa2d3c29196b2825cd2ee19bcfb0ad1ea7c3bb4ba5860c961cbdc1d0aefb3c69fd45de
|
7
|
+
data.tar.gz: 8f45e3733c100dc9ba9711bc91e6a5c734ce4e5c80fad8b1c497740bcebea038acad0cc403121e805f30d71204158a30fde1cc4a71217dc39e8a5970fe1cfc6c
|
@@ -8,21 +8,6 @@ module GdsApi
|
|
8
8
|
|
9
9
|
NEED_API_ENDPOINT = Plek.current.find('need-api')
|
10
10
|
|
11
|
-
def need_api_has_organisations(organisations)
|
12
|
-
url = NEED_API_ENDPOINT + "/organisations"
|
13
|
-
|
14
|
-
body = response_base.merge(
|
15
|
-
"organisations" => organisations.map {|id, attrs|
|
16
|
-
if attrs.is_a? String
|
17
|
-
{ "id" => id }.merge("name" => attrs)
|
18
|
-
else
|
19
|
-
{ "id" => id }.merge(attrs)
|
20
|
-
end
|
21
|
-
}
|
22
|
-
)
|
23
|
-
stub_request(:get, url).to_return(status: 200, body: body.to_json, headers: {})
|
24
|
-
end
|
25
|
-
|
26
11
|
def need_api_has_needs_for_organisation(organisation, needs)
|
27
12
|
url = NEED_API_ENDPOINT + "/needs?organisation_id=#{organisation}"
|
28
13
|
|
@@ -59,6 +59,11 @@ module GdsApi
|
|
59
59
|
to_return(status: 200, body: page_details.to_json, headers: { "Link" => link_headers.join(", ") })
|
60
60
|
end
|
61
61
|
end
|
62
|
+
|
63
|
+
if pages.empty?
|
64
|
+
# If there are no pages - and so no organisations specified - then stub /api/organisations.
|
65
|
+
stub_request(:get, "#{ORGANISATIONS_API_ENDPOINT}/api/organisations").to_return(status: 200, body: plural_response_base.to_json, headers: {})
|
66
|
+
end
|
62
67
|
end
|
63
68
|
|
64
69
|
def organisations_api_has_organisation(organisation_slug, details = nil)
|
data/lib/gds_api/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gds-api-adapters
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 39.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Stewart
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-01-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: plek
|
@@ -407,56 +407,6 @@ files:
|
|
407
407
|
- lib/gds_api/test_helpers/worldwide.rb
|
408
408
|
- lib/gds_api/version.rb
|
409
409
|
- lib/gds_api/worldwide.rb
|
410
|
-
- test/asset_manager_test.rb
|
411
|
-
- test/business_support_api_test.rb
|
412
|
-
- test/content_api_test.rb
|
413
|
-
- test/content_store_test.rb
|
414
|
-
- test/email_alert_api_test.rb
|
415
|
-
- test/fixtures/finder_api/cma-case-schema.json
|
416
|
-
- test/fixtures/hello.txt
|
417
|
-
- test/fixtures/new_policies_for_dwp.json
|
418
|
-
- test/fixtures/no_services_and_info_data_found_fixture.json
|
419
|
-
- test/fixtures/old_policies_for_dwp.json
|
420
|
-
- test/fixtures/services_and_info_fixture.json
|
421
|
-
- test/fixtures/sub_sector_organisations.json
|
422
|
-
- test/fixtures/world_organisations_australia.json
|
423
|
-
- test/gds_api_base_test.rb
|
424
|
-
- test/gov_uk_delivery_test.rb
|
425
|
-
- test/govuk_headers_test.rb
|
426
|
-
- test/helpers_test.rb
|
427
|
-
- test/imminence_api_test.rb
|
428
|
-
- test/json_client_test.rb
|
429
|
-
- test/licence_application_api_test.rb
|
430
|
-
- test/list_response_test.rb
|
431
|
-
- test/local_links_manager_api_test.rb
|
432
|
-
- test/mapit_test.rb
|
433
|
-
- test/maslow_test.rb
|
434
|
-
- test/middleware/govuk_header_sniffer_test.rb
|
435
|
-
- test/need_api_test.rb
|
436
|
-
- test/organisations_api_test.rb
|
437
|
-
- test/panopticon_registerer_test.rb
|
438
|
-
- test/panopticon_test.rb
|
439
|
-
- test/pp_data_in_test.rb
|
440
|
-
- test/pp_data_out_test.rb
|
441
|
-
- test/publishing_api/special_route_publisher_test.rb
|
442
|
-
- test/publishing_api_test.rb
|
443
|
-
- test/publishing_api_v2/get_expanded_links_test.rb
|
444
|
-
- test/publishing_api_v2/get_links_test.rb
|
445
|
-
- test/publishing_api_v2/lookup_test.rb
|
446
|
-
- test/publishing_api_v2_test.rb
|
447
|
-
- test/response_test.rb
|
448
|
-
- test/router_test.rb
|
449
|
-
- test/rummager_helpers_test.rb
|
450
|
-
- test/rummager_test.rb
|
451
|
-
- test/support_api_test.rb
|
452
|
-
- test/support_test.rb
|
453
|
-
- test/test_helper.rb
|
454
|
-
- test/test_helpers/email_alert_api_test.rb
|
455
|
-
- test/test_helpers/pact_helper.rb
|
456
|
-
- test/test_helpers/panopticon_test.rb
|
457
|
-
- test/test_helpers/publishing_api_test.rb
|
458
|
-
- test/test_helpers/publishing_api_v2_test.rb
|
459
|
-
- test/worldwide_api_test.rb
|
460
410
|
homepage: http://github.com/alphagov/gds-api-adapters
|
461
411
|
licenses: []
|
462
412
|
metadata: {}
|
@@ -480,55 +430,5 @@ rubygems_version: 2.5.1
|
|
480
430
|
signing_key:
|
481
431
|
specification_version: 4
|
482
432
|
summary: Adapters to work with GDS APIs
|
483
|
-
test_files:
|
484
|
-
- test/content_api_test.rb
|
485
|
-
- test/json_client_test.rb
|
486
|
-
- test/content_store_test.rb
|
487
|
-
- test/publishing_api_test.rb
|
488
|
-
- test/business_support_api_test.rb
|
489
|
-
- test/middleware/govuk_header_sniffer_test.rb
|
490
|
-
- test/local_links_manager_api_test.rb
|
491
|
-
- test/list_response_test.rb
|
492
|
-
- test/maslow_test.rb
|
493
|
-
- test/panopticon_registerer_test.rb
|
494
|
-
- test/pp_data_out_test.rb
|
495
|
-
- test/support_test.rb
|
496
|
-
- test/asset_manager_test.rb
|
497
|
-
- test/helpers_test.rb
|
498
|
-
- test/licence_application_api_test.rb
|
499
|
-
- test/test_helper.rb
|
500
|
-
- test/govuk_headers_test.rb
|
501
|
-
- test/mapit_test.rb
|
502
|
-
- test/rummager_helpers_test.rb
|
503
|
-
- test/publishing_api_v2_test.rb
|
504
|
-
- test/publishing_api_v2/lookup_test.rb
|
505
|
-
- test/publishing_api_v2/get_expanded_links_test.rb
|
506
|
-
- test/publishing_api_v2/get_links_test.rb
|
507
|
-
- test/support_api_test.rb
|
508
|
-
- test/organisations_api_test.rb
|
509
|
-
- test/gds_api_base_test.rb
|
510
|
-
- test/router_test.rb
|
511
|
-
- test/publishing_api/special_route_publisher_test.rb
|
512
|
-
- test/need_api_test.rb
|
513
|
-
- test/panopticon_test.rb
|
514
|
-
- test/pp_data_in_test.rb
|
515
|
-
- test/fixtures/hello.txt
|
516
|
-
- test/fixtures/new_policies_for_dwp.json
|
517
|
-
- test/fixtures/no_services_and_info_data_found_fixture.json
|
518
|
-
- test/fixtures/services_and_info_fixture.json
|
519
|
-
- test/fixtures/old_policies_for_dwp.json
|
520
|
-
- test/fixtures/world_organisations_australia.json
|
521
|
-
- test/fixtures/sub_sector_organisations.json
|
522
|
-
- test/fixtures/finder_api/cma-case-schema.json
|
523
|
-
- test/worldwide_api_test.rb
|
524
|
-
- test/test_helpers/publishing_api_test.rb
|
525
|
-
- test/test_helpers/publishing_api_v2_test.rb
|
526
|
-
- test/test_helpers/pact_helper.rb
|
527
|
-
- test/test_helpers/panopticon_test.rb
|
528
|
-
- test/test_helpers/email_alert_api_test.rb
|
529
|
-
- test/gov_uk_delivery_test.rb
|
530
|
-
- test/imminence_api_test.rb
|
531
|
-
- test/email_alert_api_test.rb
|
532
|
-
- test/response_test.rb
|
533
|
-
- test/rummager_test.rb
|
433
|
+
test_files: []
|
534
434
|
has_rdoc:
|
data/test/asset_manager_test.rb
DELETED
@@ -1,94 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
require 'gds_api/asset_manager'
|
3
|
-
require 'gds_api/test_helpers/asset_manager'
|
4
|
-
require 'json'
|
5
|
-
|
6
|
-
describe GdsApi::AssetManager do
|
7
|
-
include GdsApi::TestHelpers::AssetManager
|
8
|
-
|
9
|
-
let(:base_api_url) { Plek.current.find('asset-manager') }
|
10
|
-
let(:api) { GdsApi::AssetManager.new(base_api_url) }
|
11
|
-
|
12
|
-
let(:file_fixture) { load_fixture_file("hello.txt") }
|
13
|
-
|
14
|
-
let(:asset_url) { [base_api_url, "assets", asset_id].join("/") }
|
15
|
-
let(:asset_id) { "new-asset-id" }
|
16
|
-
|
17
|
-
let(:asset_manager_response) {
|
18
|
-
{
|
19
|
-
asset: {
|
20
|
-
id: asset_url,
|
21
|
-
}
|
22
|
-
}
|
23
|
-
}
|
24
|
-
|
25
|
-
it "creates an asset with a file" do
|
26
|
-
req = stub_request(:post, "#{base_api_url}/assets").
|
27
|
-
with(body: %r{Content\-Disposition: form\-data; name="asset\[file\]"; filename="hello\.txt"\r\nContent\-Type: text/plain}).
|
28
|
-
to_return(body: JSON.dump(asset_manager_response), status: 201)
|
29
|
-
|
30
|
-
response = api.create_asset(file: file_fixture)
|
31
|
-
|
32
|
-
assert_equal asset_url, response['asset']['id']
|
33
|
-
assert_requested(req)
|
34
|
-
end
|
35
|
-
|
36
|
-
it "returns not found when an asset does not exist" do
|
37
|
-
asset_manager_does_not_have_an_asset("not-really-here")
|
38
|
-
|
39
|
-
assert_raises GdsApi::HTTPNotFound do
|
40
|
-
api.asset("not-really-here")
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
describe "an asset exists" do
|
45
|
-
before do
|
46
|
-
asset_manager_has_an_asset(
|
47
|
-
asset_id,
|
48
|
-
"name" => "photo.jpg",
|
49
|
-
"content_type" => "image/jpeg",
|
50
|
-
"file_url" => "http://fooey.gov.uk/media/photo.jpg",
|
51
|
-
)
|
52
|
-
end
|
53
|
-
|
54
|
-
let(:asset_id) { "test-id" }
|
55
|
-
|
56
|
-
it "updates an asset with a file" do
|
57
|
-
req = stub_request(:put, "#{base_api_url}/assets/test-id").
|
58
|
-
to_return(body: JSON.dump(asset_manager_response), status: 200)
|
59
|
-
|
60
|
-
response = api.update_asset(asset_id, file: file_fixture)
|
61
|
-
|
62
|
-
assert_equal "#{base_api_url}/assets/#{asset_id}", response['asset']['id']
|
63
|
-
assert_requested(req)
|
64
|
-
end
|
65
|
-
|
66
|
-
it "retrieves an asset" do
|
67
|
-
asset = api.asset(asset_id)
|
68
|
-
|
69
|
-
assert_equal "photo.jpg", asset['name']
|
70
|
-
assert_equal "image/jpeg", asset['content_type']
|
71
|
-
assert_equal "http://fooey.gov.uk/media/photo.jpg", asset['file_url']
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
it "deletes an asset for the given id" do
|
76
|
-
req = stub_request(:delete, "#{base_api_url}/assets/#{asset_id}").
|
77
|
-
to_return(body: JSON.dump(asset_manager_response), status: 200)
|
78
|
-
|
79
|
-
response = api.delete_asset(asset_id)
|
80
|
-
|
81
|
-
assert_equal "#{base_api_url}/assets/#{asset_id}", response['asset']['id']
|
82
|
-
assert_requested(req)
|
83
|
-
end
|
84
|
-
|
85
|
-
it "restores an asset for the given id" do
|
86
|
-
req = stub_request(:post, "#{base_api_url}/assets/#{asset_id}/restore").
|
87
|
-
to_return(body: JSON.dump(asset_manager_response), status: 200)
|
88
|
-
|
89
|
-
response = api.restore_asset(asset_id)
|
90
|
-
|
91
|
-
assert_equal "#{base_api_url}/assets/#{asset_id}", response['asset']['id']
|
92
|
-
assert_requested(req)
|
93
|
-
end
|
94
|
-
end
|
@@ -1,45 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
require 'gds_api/business_support_api'
|
3
|
-
require 'gds_api/test_helpers/business_support_api'
|
4
|
-
|
5
|
-
describe GdsApi::BusinessSupportApi do
|
6
|
-
include GdsApi::TestHelpers::BusinessSupportApi
|
7
|
-
|
8
|
-
before do
|
9
|
-
@base_api_url = Plek.current.find("business-support-api")
|
10
|
-
@api = GdsApi::BusinessSupportApi.new(@base_api_url)
|
11
|
-
setup_business_support_api_schemes_stubs
|
12
|
-
end
|
13
|
-
|
14
|
-
describe "searching for schemes" do
|
15
|
-
it "should return all schemes when called with no facets" do
|
16
|
-
business_support_api_has_schemes([:scheme1, :scheme2, :scheme3])
|
17
|
-
response = @api.schemes
|
18
|
-
assert_equal [{ "title" => "scheme1" }, { "title" => "scheme2" }, { "title" => "scheme3" }], response['results']
|
19
|
-
end
|
20
|
-
it "should return schemes for applicable facets" do
|
21
|
-
business_support_api_has_scheme(:scottish_manufacturing, locations: 'scotland', sectors: 'manufacturing', support_types: 'grant,loan')
|
22
|
-
response = @api.schemes(locations: 'scotland', sectors: 'manufacturing', support_types: 'grant,loan')
|
23
|
-
assert_equal 1, response["results"].size
|
24
|
-
assert_equal "scottish_manufacturing", response["results"].first["title"]
|
25
|
-
end
|
26
|
-
it "should return an empty result when facets are not applicable" do
|
27
|
-
business_support_api_has_scheme(:super_secret, locations: 'the moon', sectors: 'espionage')
|
28
|
-
response = @api.schemes(locations: 'earth', sectors: 'espionage')
|
29
|
-
assert_empty response["results"]
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
describe "finding a scheme by slug" do
|
34
|
-
it "should give the scheme details" do
|
35
|
-
business_support_api_has_a_scheme('superbiz-wunderfundz', title: 'Superbiz wunderfundz',
|
36
|
-
short_description: 'Wunderfundz for your superbiz',
|
37
|
-
body: 'Do you run or work for a Superbiz? Well we have the Wunderfundz.')
|
38
|
-
response = @api.scheme('superbiz-wunderfundz')
|
39
|
-
assert_equal 'business_support', response['format']
|
40
|
-
assert_equal 'Superbiz wunderfundz', response['title']
|
41
|
-
assert_equal 'Wunderfundz for your superbiz', response['details']['short_description']
|
42
|
-
assert_equal 'Do you run or work for a Superbiz? Well we have the Wunderfundz.', response['details']['body']
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
data/test/content_api_test.rb
DELETED
@@ -1,712 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
require 'gds_api/content_api'
|
3
|
-
require 'gds_api/test_helpers/content_api'
|
4
|
-
|
5
|
-
describe GdsApi::ContentApi do
|
6
|
-
include GdsApi::TestHelpers::ContentApi
|
7
|
-
|
8
|
-
before do
|
9
|
-
@base_api_url = Plek.current.find("contentapi")
|
10
|
-
@api = GdsApi::ContentApi.new(@base_api_url)
|
11
|
-
end
|
12
|
-
|
13
|
-
describe "when asked for relative web URLs" do
|
14
|
-
before do
|
15
|
-
@api = GdsApi::ContentApi.new(
|
16
|
-
@base_api_url,
|
17
|
-
web_urls_relative_to: "http://www.test.gov.uk"
|
18
|
-
)
|
19
|
-
end
|
20
|
-
|
21
|
-
it "should use relative URLs for an artefact" do
|
22
|
-
artefact_response = artefact_for_slug_in_a_section("bank-holidays", "cheese")
|
23
|
-
|
24
|
-
# Rewrite the web_url fields to have a common prefix
|
25
|
-
# The helper's default is to point the web_url for an artefact at the
|
26
|
-
# frontend app, and the web_url for a tag's content to www: to test the
|
27
|
-
# rewriting properly, they need to be the same
|
28
|
-
artefact_response["web_url"] = "http://www.test.gov.uk/bank-holidays"
|
29
|
-
section_tag_content = artefact_response["tags"][0]["content_with_tag"]
|
30
|
-
section_tag_content["web_url"] = "http://www.test.gov.uk/browse/cheese"
|
31
|
-
|
32
|
-
content_api_has_an_artefact("bank-holidays", artefact_response)
|
33
|
-
artefact = @api.artefact("bank-holidays")
|
34
|
-
|
35
|
-
assert_equal "Bank holidays", artefact['title']
|
36
|
-
assert_equal "/bank-holidays", artefact['web_url']
|
37
|
-
|
38
|
-
assert_equal(
|
39
|
-
"/browse/cheese",
|
40
|
-
artefact['tags'][0]['content_with_tag']['web_url']
|
41
|
-
)
|
42
|
-
end
|
43
|
-
|
44
|
-
it "should use relative URLs for tag listings" do
|
45
|
-
content_api_has_root_sections %w(housing benefits tax)
|
46
|
-
tags = @api.root_sections
|
47
|
-
|
48
|
-
assert_equal 3, tags.count
|
49
|
-
tags.each do |tag|
|
50
|
-
web_url = tag['content_with_tag']['web_url']
|
51
|
-
assert web_url.start_with?("/browse/"), web_url
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
describe "with caching enabled" do
|
56
|
-
before do
|
57
|
-
@original_cache = GdsApi::JsonClient.cache
|
58
|
-
GdsApi::JsonClient.cache = LRUCache.new(max_size: 10, ttl: 10)
|
59
|
-
end
|
60
|
-
|
61
|
-
it "should not pollute the cache with relative URLs" do
|
62
|
-
artefact_response = artefact_for_slug("bank-holidays")
|
63
|
-
artefact_response["web_url"] = "http://www.test.gov.uk/bank-holidays"
|
64
|
-
content_api_has_an_artefact("bank-holidays", artefact_response)
|
65
|
-
|
66
|
-
assert_equal "/bank-holidays", @api.artefact("bank-holidays")['web_url']
|
67
|
-
|
68
|
-
clean_api = GdsApi::ContentApi.new(@base_api_url)
|
69
|
-
clean_artefact = clean_api.artefact("bank-holidays")
|
70
|
-
|
71
|
-
assert_equal(
|
72
|
-
"http://www.test.gov.uk/bank-holidays",
|
73
|
-
clean_artefact['web_url']
|
74
|
-
)
|
75
|
-
end
|
76
|
-
|
77
|
-
after do
|
78
|
-
GdsApi::JsonClient.cache = @original_cache
|
79
|
-
end
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
describe "sections" do
|
84
|
-
it "should show a list of sections" do
|
85
|
-
content_api_has_root_sections(["crime"])
|
86
|
-
response = @api.sections
|
87
|
-
|
88
|
-
# Old-style dictionary access
|
89
|
-
first_section = response["results"][0]
|
90
|
-
assert_equal "#{@base_api_url}/tags/sections/crime.json", first_section["id"]
|
91
|
-
|
92
|
-
# Also check attribute access
|
93
|
-
first_section = response.first
|
94
|
-
assert_equal(
|
95
|
-
"#{@base_api_url}/tags/sections/crime.json",
|
96
|
-
first_section['id']
|
97
|
-
)
|
98
|
-
end
|
99
|
-
|
100
|
-
def section_page_url(page_parameter)
|
101
|
-
if page_parameter
|
102
|
-
"#{GdsApi::TestHelpers::ContentApi::CONTENT_API_ENDPOINT}/tags.json?type=section&page=#{page_parameter}"
|
103
|
-
else
|
104
|
-
"#{GdsApi::TestHelpers::ContentApi::CONTENT_API_ENDPOINT}/tags.json?type=section"
|
105
|
-
end
|
106
|
-
end
|
107
|
-
|
108
|
-
def stub_section_page(page_parameter, options)
|
109
|
-
total_pages = options.fetch :of
|
110
|
-
|
111
|
-
url = section_page_url(page_parameter)
|
112
|
-
|
113
|
-
page_number = page_parameter || 1
|
114
|
-
# e.g. page 2 -> 11..20
|
115
|
-
range_start = (page_number - 1) * 10 + 1
|
116
|
-
range_end = page_number * 10
|
117
|
-
tags = (range_start..range_end).map { |number|
|
118
|
-
tag_for_slug("section-#{number}", "section")
|
119
|
-
}
|
120
|
-
body = plural_response_base.merge(
|
121
|
-
"results" => tags
|
122
|
-
)
|
123
|
-
|
124
|
-
links = []
|
125
|
-
if page_number > 1
|
126
|
-
links << "<#{section_page_url(page_number - 1)}>; rel=\"previous\""
|
127
|
-
end
|
128
|
-
if page_number < total_pages
|
129
|
-
links << "<#{section_page_url(page_number + 1)}>; rel=\"next\""
|
130
|
-
end
|
131
|
-
|
132
|
-
stub_request(:get, url).to_return(
|
133
|
-
status: 200,
|
134
|
-
body: body.to_json,
|
135
|
-
headers: { "Link" => links.join(",") }
|
136
|
-
)
|
137
|
-
end
|
138
|
-
|
139
|
-
it "should allow iteration across pages" do
|
140
|
-
[nil, 2].each do |page_parameter|
|
141
|
-
stub_section_page(page_parameter, of: 2)
|
142
|
-
end
|
143
|
-
|
144
|
-
sections = @api.sections
|
145
|
-
assert_equal 20, sections.with_subsequent_pages.count
|
146
|
-
assert_equal(
|
147
|
-
"Section 20",
|
148
|
-
sections.with_subsequent_pages.to_a.last['title']
|
149
|
-
)
|
150
|
-
end
|
151
|
-
|
152
|
-
it "should iterate across three or more pages" do
|
153
|
-
[nil, 2, 3].each do |page_parameter|
|
154
|
-
stub_section_page(page_parameter, of: 3)
|
155
|
-
end
|
156
|
-
|
157
|
-
sections = @api.sections
|
158
|
-
assert_equal 30, sections.with_subsequent_pages.count
|
159
|
-
assert_equal(
|
160
|
-
"Section 30",
|
161
|
-
sections.with_subsequent_pages.to_a.last['title']
|
162
|
-
)
|
163
|
-
end
|
164
|
-
|
165
|
-
it "should not load a page multiple times" do
|
166
|
-
[nil, 2].each do |page_parameter|
|
167
|
-
stub_section_page(page_parameter, of: 2)
|
168
|
-
end
|
169
|
-
|
170
|
-
sections = @api.sections
|
171
|
-
|
172
|
-
3.times do
|
173
|
-
# Loop through all the items, just to make sure we load all the pages
|
174
|
-
sections.with_subsequent_pages.each do end
|
175
|
-
end
|
176
|
-
|
177
|
-
assert_requested :get, section_page_url(2), times: 1
|
178
|
-
end
|
179
|
-
|
180
|
-
it "should display a single page of sections" do
|
181
|
-
stub_section_page(nil, of: 1)
|
182
|
-
sections = @api.sections
|
183
|
-
assert_equal 10, sections.with_subsequent_pages.count
|
184
|
-
end
|
185
|
-
end
|
186
|
-
|
187
|
-
describe "artefact" do
|
188
|
-
it "should show the artefact" do
|
189
|
-
content_api_has_an_artefact("devolution-uk")
|
190
|
-
response = @api.artefact("devolution-uk")
|
191
|
-
assert_equal "#{@base_api_url}/devolution-uk.json", response["id"]
|
192
|
-
end
|
193
|
-
|
194
|
-
it "should be able to fetch unpublished editions when authenticated" do
|
195
|
-
api = GdsApi::ContentApi.new(@base_api_url, bearer_token: 'MY_BEARER_TOKEN')
|
196
|
-
content_api_has_unpublished_artefact("devolution-uk", 3)
|
197
|
-
response = api.artefact("devolution-uk", edition: 3)
|
198
|
-
assert_equal "#{@base_api_url}/devolution-uk.json", response["id"]
|
199
|
-
end
|
200
|
-
|
201
|
-
it "should raise an exception if no bearer token is used when fetching unpublished editions" do
|
202
|
-
content_api_has_unpublished_artefact("devolution-uk", 3)
|
203
|
-
assert_raises GdsApi::NoBearerToken do
|
204
|
-
@api.artefact("devolution-uk", edition: 3)
|
205
|
-
end
|
206
|
-
end
|
207
|
-
|
208
|
-
it "should raise a 410 if an artefact has been archived" do
|
209
|
-
content_api_has_an_archived_artefact("atlantis")
|
210
|
-
assert_raises GdsApi::HTTPGone do
|
211
|
-
@api.artefact!("atlantis")
|
212
|
-
end
|
213
|
-
end
|
214
|
-
|
215
|
-
it "should be able to fetch artefacts with a '/' in the slug" do
|
216
|
-
content_api_has_an_artefact("foreign-travel-advice/aruba")
|
217
|
-
response = @api.artefact("foreign-travel-advice/aruba")
|
218
|
-
assert_requested(:get, "#{@base_api_url}/foreign-travel-advice%2Faruba.json")
|
219
|
-
assert_equal "#{@base_api_url}/foreign-travel-advice%2Faruba.json", response["id"]
|
220
|
-
end
|
221
|
-
end
|
222
|
-
|
223
|
-
describe "artefacts" do
|
224
|
-
before :each do
|
225
|
-
@artefacts_endpoint = "#{GdsApi::TestHelpers::ContentApi::CONTENT_API_ENDPOINT}/artefacts.json"
|
226
|
-
end
|
227
|
-
|
228
|
-
it "should return a listresponse for the artefacts" do
|
229
|
-
WebMock.stub_request(:get, @artefacts_endpoint).
|
230
|
-
to_return(body: {
|
231
|
-
"_response_info" => { "status" => "ok" },
|
232
|
-
"total" => 4,
|
233
|
-
"results" => [
|
234
|
-
{ "format" => "answer", "web_url" => "http://www.test.gov.uk/foo" },
|
235
|
-
{ "format" => "local_transaction", "web_url" => "http://www.test.gov.uk/bar/baz" },
|
236
|
-
{ "format" => "place", "web_url" => "http://www.test.gov.uk/somewhere" },
|
237
|
-
{ "format" => "guide", "web_url" => "http://www.test.gov.uk/vat" },
|
238
|
-
]
|
239
|
-
}.to_json)
|
240
|
-
|
241
|
-
response = @api.artefacts
|
242
|
-
assert_equal 4, response.count
|
243
|
-
assert_equal(
|
244
|
-
%w(answer local_transaction place guide),
|
245
|
-
response.map { |item| item['format'] }
|
246
|
-
)
|
247
|
-
end
|
248
|
-
|
249
|
-
it "should work with a paginated response" do
|
250
|
-
WebMock.stub_request(:get, @artefacts_endpoint).
|
251
|
-
to_return(
|
252
|
-
body: {
|
253
|
-
"_response_info" => { "status" => "ok" },
|
254
|
-
"total" => 4,
|
255
|
-
"results" => [
|
256
|
-
{ "format" => "answer", "web_url" => "http://www.test.gov.uk/foo" },
|
257
|
-
{ "format" => "local_transaction", "web_url" => "http://www.test.gov.uk/bar/baz" },
|
258
|
-
{ "format" => "place", "web_url" => "http://www.test.gov.uk/somewhere" },
|
259
|
-
{ "format" => "guide", "web_url" => "http://www.test.gov.uk/vat" },
|
260
|
-
]
|
261
|
-
}.to_json,
|
262
|
-
headers: { "Link" => "<#{@artefacts_endpoint}?page=2>; rel=\"next\"" }
|
263
|
-
)
|
264
|
-
WebMock.stub_request(:get, "#{@artefacts_endpoint}?page=2").
|
265
|
-
to_return(
|
266
|
-
body: {
|
267
|
-
"_response_info" => { "status" => "ok" },
|
268
|
-
"total" => 3,
|
269
|
-
"results" => [
|
270
|
-
{ "format" => "answer", "web_url" => "http://www.test.gov.uk/foo2" },
|
271
|
-
{ "format" => "local_transaction", "web_url" => "http://www.test.gov.uk/bar/baz2" },
|
272
|
-
{ "format" => "guide", "web_url" => "http://www.test.gov.uk/vat2" },
|
273
|
-
]
|
274
|
-
}.to_json
|
275
|
-
)
|
276
|
-
response = @api.artefacts
|
277
|
-
assert_equal 7, response.with_subsequent_pages.count
|
278
|
-
assert_equal(
|
279
|
-
"http://www.test.gov.uk/vat2",
|
280
|
-
response.with_subsequent_pages.to_a.last['web_url']
|
281
|
-
)
|
282
|
-
end
|
283
|
-
end
|
284
|
-
|
285
|
-
describe "artefacts for need" do
|
286
|
-
it "should fetch artefacts with a given need id" do
|
287
|
-
content_api_has_artefacts_for_need_id(100123, [
|
288
|
-
{ "format" => "answer", "web_url" => "http://www.gov.uk/burrito" },
|
289
|
-
{ "format" => "guide", "web_url" => "http://www.gov.uk/burrito-standard" },
|
290
|
-
{ "format" => "transaction", "web_url" => "http://www.gov.uk/local-burrito-place" }
|
291
|
-
])
|
292
|
-
|
293
|
-
response = @api.for_need(100123)
|
294
|
-
|
295
|
-
assert_equal 3, response.count
|
296
|
-
assert_equal(
|
297
|
-
[
|
298
|
-
"http://www.gov.uk/burrito",
|
299
|
-
"http://www.gov.uk/burrito-standard",
|
300
|
-
"http://www.gov.uk/local-burrito-place"
|
301
|
-
],
|
302
|
-
response.map { |item| item['web_url'] }
|
303
|
-
)
|
304
|
-
assert_equal(
|
305
|
-
%w(answer guide transaction),
|
306
|
-
response.map { |item| item['format'] }
|
307
|
-
)
|
308
|
-
end
|
309
|
-
end
|
310
|
-
|
311
|
-
describe "tags" do
|
312
|
-
it "returns a list of tags of a given type" do
|
313
|
-
content_api_has_tags("author", ["justin-thyme"])
|
314
|
-
response = @api.tags("author")
|
315
|
-
|
316
|
-
# Old-style dictionary access
|
317
|
-
first_section = response["results"][0]
|
318
|
-
assert_equal "#{@base_api_url}/tags/authors/justin-thyme.json", first_section["id"]
|
319
|
-
|
320
|
-
# Also check attribute access
|
321
|
-
first_section = response.first
|
322
|
-
assert_equal(
|
323
|
-
"#{@base_api_url}/tags/authors/justin-thyme.json",
|
324
|
-
first_section['id']
|
325
|
-
)
|
326
|
-
end
|
327
|
-
|
328
|
-
it "returns a sorted list of tags of a given type" do
|
329
|
-
content_api_has_sorted_tags("author", "alphabetical", ["justin-thyme"])
|
330
|
-
response = @api.tags("author", sort: "alphabetical")
|
331
|
-
|
332
|
-
first_section = response.first
|
333
|
-
assert_equal(
|
334
|
-
"#{@base_api_url}/tags/authors/justin-thyme.json",
|
335
|
-
first_section['id']
|
336
|
-
)
|
337
|
-
end
|
338
|
-
|
339
|
-
it "returns draft tags if requested" do
|
340
|
-
content_api_has_draft_and_live_tags(type: "specialist", draft: ["draft-tag-1"], live: ["live-tag-1"])
|
341
|
-
|
342
|
-
all_tags = @api.tags("specialist", draft: true)
|
343
|
-
assert_equal(
|
344
|
-
[
|
345
|
-
["draft-tag-1", "draft"],
|
346
|
-
["live-tag-1", "live"]
|
347
|
-
].to_set,
|
348
|
-
all_tags.map { |t| [t['slug'], t['state']] }.to_set
|
349
|
-
)
|
350
|
-
|
351
|
-
live_tags = @api.tags("specialist")
|
352
|
-
assert_equal(
|
353
|
-
[["live-tag-1", "live"]],
|
354
|
-
live_tags.map { |t| [t['slug'], t['state']] }
|
355
|
-
)
|
356
|
-
end
|
357
|
-
|
358
|
-
it "returns a list of root tags of a given type" do
|
359
|
-
content_api_has_root_tags("author", ["oliver-sudden", "percy-vere"])
|
360
|
-
response = @api.root_tags("author")
|
361
|
-
|
362
|
-
# Old-style dictionary access
|
363
|
-
first_section = response["results"][0]
|
364
|
-
assert_equal "#{@base_api_url}/tags/authors/oliver-sudden.json", first_section["id"]
|
365
|
-
|
366
|
-
# Also check attribute access
|
367
|
-
first_section = response.first
|
368
|
-
assert_equal(
|
369
|
-
"#{@base_api_url}/tags/authors/oliver-sudden.json",
|
370
|
-
first_section['id']
|
371
|
-
)
|
372
|
-
end
|
373
|
-
|
374
|
-
it "returns a list of child tags of a given type" do
|
375
|
-
content_api_has_child_tags("genre", "indie", ["indie/indie-rock"])
|
376
|
-
response = @api.child_tags("genre", "indie")
|
377
|
-
|
378
|
-
# Old-style dictionary access
|
379
|
-
first_section = response["results"][0]
|
380
|
-
assert_equal "#{@base_api_url}/tags/genres/indie%2Findie-rock.json", first_section["id"]
|
381
|
-
|
382
|
-
# Also check attribute access
|
383
|
-
first_section = response.first
|
384
|
-
assert_equal(
|
385
|
-
"#{@base_api_url}/tags/genres/indie%2Findie-rock.json",
|
386
|
-
first_section['id']
|
387
|
-
)
|
388
|
-
end
|
389
|
-
|
390
|
-
it "returns a sorted list of child tags of a given type" do
|
391
|
-
content_api_has_sorted_child_tags("genre", "indie", "alphabetical", ["indie/indie-rock"])
|
392
|
-
response = @api.child_tags("genre", "indie", sort: "alphabetical")
|
393
|
-
|
394
|
-
first_section = response.first
|
395
|
-
assert_equal(
|
396
|
-
"#{@base_api_url}/tags/genres/indie%2Findie-rock.json",
|
397
|
-
first_section['id']
|
398
|
-
)
|
399
|
-
end
|
400
|
-
|
401
|
-
it "returns tag information for a section" do
|
402
|
-
content_api_has_section("crime-and-justice")
|
403
|
-
response = @api.tag("crime-and-justice", "section")
|
404
|
-
|
405
|
-
assert_equal "Crime and justice", response["title"]
|
406
|
-
end
|
407
|
-
|
408
|
-
it "returns tag information for a tag and tag type" do
|
409
|
-
content_api_has_tag("genre", "reggae")
|
410
|
-
response = @api.tag("reggae", "genre")
|
411
|
-
|
412
|
-
assert_equal "Reggae", response['title']
|
413
|
-
end
|
414
|
-
|
415
|
-
it "permits cache busting" do
|
416
|
-
content_api_has_tags("specialist_sector", ["oil-and-gas/licensing"])
|
417
|
-
|
418
|
-
@api.tags("specialist_sector")
|
419
|
-
assert_requested :get, "#{@base_api_url}/tags.json?type=specialist_sector"
|
420
|
-
|
421
|
-
@api.tags("specialist_sector", bust_cache: true)
|
422
|
-
assert_requested :get, Regexp.new("#{@base_api_url}/tags.json\\?cachebust=\\d+&type=specialist_sector")
|
423
|
-
end
|
424
|
-
end
|
425
|
-
|
426
|
-
describe "licence" do
|
427
|
-
it "should return an artefact with licence for a snac code" do
|
428
|
-
content_api_has_an_artefact_with_snac_code("licence-example", '1234', "title" => "Licence Example",
|
429
|
-
"slug" => "licence-example",
|
430
|
-
"details" => {
|
431
|
-
"licence" => {
|
432
|
-
"location_specific" => false,
|
433
|
-
"availability" => %w(England Wales),
|
434
|
-
"authorities" => []
|
435
|
-
}
|
436
|
-
})
|
437
|
-
response = @api.artefact('licence-example', snac: '1234')
|
438
|
-
|
439
|
-
assert_equal "Licence Example", response["title"]
|
440
|
-
assert_equal %w(England Wales), response["details"]["licence"]["availability"]
|
441
|
-
end
|
442
|
-
|
443
|
-
it "should escape snac code when searching for licence" do
|
444
|
-
stub_request(:get, "#{@base_api_url}/licence-example.json?snac=snacks%21").
|
445
|
-
to_return(status: 200,
|
446
|
-
body: { "test" => "ing" }.to_json,
|
447
|
-
headers: {})
|
448
|
-
|
449
|
-
@api.artefact("licence-example", snac: "snacks!")
|
450
|
-
|
451
|
-
assert_requested :get, "#{@base_api_url}/licence-example.json?snac=snacks%21"
|
452
|
-
end
|
453
|
-
|
454
|
-
it "should return an unpublished artefact with a snac code" do
|
455
|
-
body = artefact_for_slug('licence-example')
|
456
|
-
url = "#{@base_api_url}/licence-example.json?snac=1234&edition=1"
|
457
|
-
stub_request(:get, url).to_return(status: 200, body: body.to_json)
|
458
|
-
|
459
|
-
api = GdsApi::ContentApi.new(@base_api_url, bearer_token: 'MY_BEARER_TOKEN')
|
460
|
-
response = api.artefact('licence-example', snac: '1234', edition: '1')
|
461
|
-
|
462
|
-
assert_equal "Licence example", response["title"]
|
463
|
-
end
|
464
|
-
end
|
465
|
-
|
466
|
-
describe "local authorities" do
|
467
|
-
it "should raise if no local authority found" do
|
468
|
-
stub_request(:get, "#{@base_api_url}/local_authorities/does-not-exist.json").
|
469
|
-
with(headers: GdsApi::JsonClient.default_request_headers).
|
470
|
-
to_return(status: 404,
|
471
|
-
body: { "_response_info" => { "status" => "ok" } }.to_json,
|
472
|
-
headers: {})
|
473
|
-
|
474
|
-
assert_raises(GdsApi::HTTPNotFound) do
|
475
|
-
@api.local_authority("does-not-exist")
|
476
|
-
end
|
477
|
-
end
|
478
|
-
|
479
|
-
it "should produce a LocalAuthority hash for an existing snac code" do
|
480
|
-
body_response = {
|
481
|
-
"name" => "Solihull Metropolitan Borough Council",
|
482
|
-
"snac_code" => "00CT",
|
483
|
-
"id" => "#{@base_api_url}/local_authorities/00CT.json",
|
484
|
-
"_response_info" => { "status" => "ok" }
|
485
|
-
}
|
486
|
-
|
487
|
-
stub_request(:get, "#{@base_api_url}/local_authorities/00CT.json").
|
488
|
-
with(headers: GdsApi::JsonClient.default_request_headers).
|
489
|
-
to_return(status: 200,
|
490
|
-
body: body_response.to_json,
|
491
|
-
headers: {})
|
492
|
-
|
493
|
-
response = @api.local_authority("00CT").to_hash
|
494
|
-
|
495
|
-
assert_equal body_response, response
|
496
|
-
end
|
497
|
-
|
498
|
-
it "should return an empty result set if name not found" do
|
499
|
-
body_response = {
|
500
|
-
"_response_info" => { "status" => "ok" },
|
501
|
-
"description" => "Local Authorities",
|
502
|
-
"total" => 0,
|
503
|
-
"results" => []
|
504
|
-
}.to_json
|
505
|
-
|
506
|
-
stub_request(:get, "#{@base_api_url}/local_authorities.json?name=Swansalona").
|
507
|
-
with(headers: GdsApi::JsonClient.default_request_headers).
|
508
|
-
to_return(status: 200,
|
509
|
-
body: body_response,
|
510
|
-
headers: {})
|
511
|
-
|
512
|
-
response = @api.local_authorities_by_name("Swansalona")
|
513
|
-
|
514
|
-
assert_equal 0, response["total"]
|
515
|
-
assert_equal [], response["results"]
|
516
|
-
end
|
517
|
-
|
518
|
-
it "should return an empty result set if snac code not found" do
|
519
|
-
body_response = {
|
520
|
-
"_response_info" => { "status" => "ok" },
|
521
|
-
"description" => "Local Authorities",
|
522
|
-
"total" => 0,
|
523
|
-
"results" => []
|
524
|
-
}.to_json
|
525
|
-
|
526
|
-
stub_request(:get, "#{@base_api_url}/local_authorities.json?snac_code=SNACKS").
|
527
|
-
with(headers: GdsApi::JsonClient.default_request_headers).
|
528
|
-
to_return(status: 200,
|
529
|
-
body: body_response,
|
530
|
-
headers: {})
|
531
|
-
|
532
|
-
response = @api.local_authorities_by_snac_code("SNACKS")
|
533
|
-
|
534
|
-
assert_equal 0, response["total"]
|
535
|
-
assert_equal [], response["results"]
|
536
|
-
end
|
537
|
-
|
538
|
-
it "should have an array of results for a name search" do
|
539
|
-
body_response = {
|
540
|
-
"_response_info" => { "status" => "ok" },
|
541
|
-
"description" => "Local Authorities",
|
542
|
-
"total" => 2,
|
543
|
-
"results" => [{
|
544
|
-
"name" => "Swansalona Council",
|
545
|
-
"snac_code" => "00VT",
|
546
|
-
"id" => "#{@base_api_url}/local_authorities/00VT.json"
|
547
|
-
},
|
548
|
-
{
|
549
|
-
"name" => "Swansea Council",
|
550
|
-
"snac_code" => "00CT",
|
551
|
-
"id" => "#{@base_api_url}/local_authorities/00VT.json"
|
552
|
-
}]
|
553
|
-
}.to_json
|
554
|
-
|
555
|
-
stub_request(:get, "#{@base_api_url}/local_authorities.json?name=Swans").
|
556
|
-
with(headers: GdsApi::JsonClient.default_request_headers).
|
557
|
-
to_return(status: 200,
|
558
|
-
body: body_response,
|
559
|
-
headers: {})
|
560
|
-
|
561
|
-
response = @api.local_authorities_by_name("Swans")
|
562
|
-
|
563
|
-
assert_equal 2, response["total"]
|
564
|
-
assert_equal "Swansalona Council", response["results"][0]["name"]
|
565
|
-
end
|
566
|
-
|
567
|
-
it "should escape snac code when calling unique a local authority" do
|
568
|
-
stub_request(:get, "#{@base_api_url}/local_authorities/escape%21.json").
|
569
|
-
to_return(status: 200,
|
570
|
-
body: { "test" => "ing" }.to_json,
|
571
|
-
headers: {})
|
572
|
-
|
573
|
-
@api.local_authority("escape!")
|
574
|
-
|
575
|
-
assert_requested :get, "#{@base_api_url}/local_authorities/escape%21.json"
|
576
|
-
end
|
577
|
-
|
578
|
-
it "should escape name when searching for local authorities" do
|
579
|
-
stub_request(:get, "#{@base_api_url}/local_authorities.json?name=name%21").
|
580
|
-
to_return(status: 200,
|
581
|
-
body: { "test" => "ing" }.to_json,
|
582
|
-
headers: {})
|
583
|
-
|
584
|
-
@api.local_authorities_by_name("name!")
|
585
|
-
|
586
|
-
assert_requested :get, "#{@base_api_url}/local_authorities.json?name=name%21"
|
587
|
-
end
|
588
|
-
|
589
|
-
it "should escape snac code when searching for local authorities" do
|
590
|
-
stub_request(:get, "#{@base_api_url}/local_authorities.json?snac_code=snacks%21").
|
591
|
-
to_return(status: 200,
|
592
|
-
body: { "test" => "ing" }.to_json,
|
593
|
-
headers: {})
|
594
|
-
|
595
|
-
@api.local_authorities_by_snac_code("snacks!")
|
596
|
-
|
597
|
-
assert_requested :get, "#{@base_api_url}/local_authorities.json?snac_code=snacks%21"
|
598
|
-
end
|
599
|
-
end
|
600
|
-
|
601
|
-
describe "business support schemes" do
|
602
|
-
it "should query content_api for business_support_schemes" do
|
603
|
-
stub_request(:get, %r{\A#{@base_api_url}/business_support_schemes.json}).
|
604
|
-
to_return(status: 200, body: { "foo" => "bar" }.to_json)
|
605
|
-
|
606
|
-
response = @api.business_support_schemes(drink: "coffee")
|
607
|
-
|
608
|
-
assert_equal({ "foo" => "bar" }, response.to_hash)
|
609
|
-
assert_requested :get, "#{@base_api_url}/business_support_schemes.json?drink=coffee", times: 1
|
610
|
-
end
|
611
|
-
|
612
|
-
it "should raise an error if content_api returns 404" do
|
613
|
-
stub_request(:get, %r{\A#{@base_api_url}/business_support_schemes.json}).
|
614
|
-
to_return(status: 404, body: "Not Found")
|
615
|
-
|
616
|
-
assert_raises GdsApi::HTTPNotFound do
|
617
|
-
@api.business_support_schemes(%w(foo bar))
|
618
|
-
end
|
619
|
-
end
|
620
|
-
|
621
|
-
it "should raise an error if content_api returns a 50x error" do
|
622
|
-
stub_request(:get, %r{\A#{@base_api_url}/business_support_schemes.json}).
|
623
|
-
to_return(status: 503, body: "Gateway timeout")
|
624
|
-
|
625
|
-
assert_raises GdsApi::HTTPServerError do
|
626
|
-
@api.business_support_schemes(%w(foo bar))
|
627
|
-
end
|
628
|
-
end
|
629
|
-
|
630
|
-
describe "test helpers" do
|
631
|
-
it "should have representative test helpers" do
|
632
|
-
setup_content_api_business_support_schemes_stubs
|
633
|
-
s1 = { "title" => "Scheme 1", "format" => "business_support" }
|
634
|
-
content_api_has_business_support_scheme(s1, locations: "england", sectors: "farming")
|
635
|
-
s2 = { "title" => "Scheme 2", "format" => "business_support" }
|
636
|
-
content_api_has_business_support_scheme(s2, sectors: "farming")
|
637
|
-
s3 = { "title" => "Scheme 3", "format" => "business_support" }
|
638
|
-
content_api_has_business_support_scheme(s3, locations: "england", sectors: "farming")
|
639
|
-
|
640
|
-
response = @api.business_support_schemes(locations: "england", sectors: "farming").to_hash
|
641
|
-
|
642
|
-
assert_equal 2, response["total"]
|
643
|
-
assert_equal s1["title"], response["results"].first["title"]
|
644
|
-
assert_equal s3["title"], response["results"].last["title"]
|
645
|
-
end
|
646
|
-
end
|
647
|
-
end
|
648
|
-
|
649
|
-
describe "getting licence details" do
|
650
|
-
it "should get licence details" do
|
651
|
-
setup_content_api_licences_stubs
|
652
|
-
|
653
|
-
content_api_has_licence licence_identifier: "1234", title: 'Test Licence 1', slug: 'test-licence-1',
|
654
|
-
licence_short_description: 'A short description'
|
655
|
-
content_api_has_licence licence_identifier: "1235", title: 'Test Licence 2', slug: 'test-licence-2',
|
656
|
-
licence_short_description: 'A short description'
|
657
|
-
content_api_has_licence licence_identifier: "AB1234", title: 'Test Licence 3', slug: 'test-licence-3',
|
658
|
-
licence_short_description: 'A short description'
|
659
|
-
|
660
|
-
results = @api.licences_for_ids([1234, 'AB1234', 'something'])['results']
|
661
|
-
assert_equal 2, results.size
|
662
|
-
assert_equal(
|
663
|
-
%w(1234 AB1234),
|
664
|
-
results.map { |r| r['details']['licence_identifier'] }
|
665
|
-
)
|
666
|
-
assert_equal(
|
667
|
-
['Test Licence 1', 'Test Licence 3'],
|
668
|
-
results.map { |item| item['title'] }.sort
|
669
|
-
)
|
670
|
-
assert_equal(
|
671
|
-
[
|
672
|
-
'http://www.test.gov.uk/test-licence-1',
|
673
|
-
'http://www.test.gov.uk/test-licence-3'
|
674
|
-
],
|
675
|
-
results.map { |item| item['web_url'] }.sort
|
676
|
-
)
|
677
|
-
assert_equal(
|
678
|
-
'A short description',
|
679
|
-
results[0]['details']['licence_short_description']
|
680
|
-
)
|
681
|
-
assert_equal(
|
682
|
-
'A short description',
|
683
|
-
results[1]['details']['licence_short_description']
|
684
|
-
)
|
685
|
-
end
|
686
|
-
|
687
|
-
it "should return empty array with no licences" do
|
688
|
-
setup_content_api_licences_stubs
|
689
|
-
|
690
|
-
assert_equal [], @api.licences_for_ids([123, 124])['results']
|
691
|
-
end
|
692
|
-
|
693
|
-
it "should raise an error if publisher returns an error" do
|
694
|
-
stub_request(:get, %r[\A#{@base_api_url}/licences]).
|
695
|
-
to_return(status: [503, "Service temporarily unabailable"])
|
696
|
-
|
697
|
-
assert_raises GdsApi::HTTPServerError do
|
698
|
-
@api.licences_for_ids([123, 124])
|
699
|
-
end
|
700
|
-
end
|
701
|
-
end
|
702
|
-
|
703
|
-
def api_response_for_results(results)
|
704
|
-
{
|
705
|
-
"_response_info" => {
|
706
|
-
"status" => "ok",
|
707
|
-
},
|
708
|
-
"total" => results.size,
|
709
|
-
"results" => results,
|
710
|
-
}
|
711
|
-
end
|
712
|
-
end
|