gds-api-adapters 32.1.0 → 32.2.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: 4f7f3f751f921cd3894b47614d1717441d5d28fc
4
- data.tar.gz: c54260b9c268b61eacfb800615f0f81d9127dcde
3
+ metadata.gz: 24f9c7e9942f51ffbe4ceffdfb89fd546c6ad3e2
4
+ data.tar.gz: d35330309418eca8f623f00f0f8083fc492bde2c
5
5
  SHA512:
6
- metadata.gz: b4f42f6c9c57dcc553217982501382a32da1afdf69ddbcd98c28e3ea937741805a7825c6ca1cf5ba1d22c5474f2e542ef2928234cbf167bc75a6cd0b9e0b08d0
7
- data.tar.gz: 1d061e662f69c3e92e45446f595e3c912acf5a467eec10605d481d3a04c77385d1018f2864e719dfad09d5dbe9eeb9182d0b62b708b1f0982c8e06803b26dbde
6
+ metadata.gz: 502332ac6755ce764c1ebf3b742f9e8ac6b5f142e36cd236ffc02beee143f76900670547b84ab1ec95d048faa9205765d8f86c72c205b9f94067e1a0f3057952
7
+ data.tar.gz: cf6f010f3a4e6d945b75083e8a63fe6cf70b7b808ec90d357551bb9e42e5dd972d3652d7a435f9c7907e0cdd7f56328edb21e50ba3fe0e69a09d9634b0f5d007
@@ -0,0 +1,9 @@
1
+ require_relative 'base'
2
+
3
+ class GdsApi::LocalLinksManager < GdsApi::Base
4
+ def local_link(authority_slug, lgsl, lgil=nil)
5
+ url = "#{endpoint}/api/link?authority_slug=#{authority_slug}&lgsl=#{lgsl}"
6
+ url += "&lgil=#{lgil}" if lgil
7
+ get_json(url)
8
+ end
9
+ end
@@ -0,0 +1,113 @@
1
+ require 'gds_api/test_helpers/json_client_helper'
2
+
3
+ module GdsApi
4
+ module TestHelpers
5
+ module LocalLinksManager
6
+
7
+ LOCAL_LINKS_MANAGER_ENDPOINT = Plek.current.find('local_links_manager')
8
+
9
+ def local_links_manager_has_a_link(authority_slug:, lgsl:, lgil:, url:)
10
+ response = {
11
+ "local_authority" => {
12
+ "name" => authority_slug.capitalize,
13
+ "snac" => "00AG",
14
+ "tier" => "unitary",
15
+ "homepage_url" => "http://#{authority_slug}.example.com",
16
+ },
17
+ "local_interaction" => {
18
+ "lgsl_code" => lgsl,
19
+ "lgil_code" => lgil,
20
+ "url" => url,
21
+ }
22
+ }
23
+
24
+ stub_request(:get, "#{LOCAL_LINKS_MANAGER_ENDPOINT}/api/link")
25
+ .with(query: {authority_slug: authority_slug, lgsl: lgsl, lgil: lgil})
26
+ .to_return(body: response.to_json, status: 200)
27
+ end
28
+
29
+ def local_links_manager_has_no_link(authority_slug:, lgsl:, lgil:)
30
+ response = {
31
+ "local_authority" => {
32
+ "name" => authority_slug.capitalize,
33
+ "snac" => "00AG",
34
+ "tier" => "unitary",
35
+ "homepage_url" => "http://#{authority_slug}.example.com",
36
+ },
37
+ }
38
+
39
+ stub_request(:get, "#{LOCAL_LINKS_MANAGER_ENDPOINT}/api/link")
40
+ .with(query: {authority_slug: authority_slug, lgsl: lgsl, lgil: lgil})
41
+ .to_return(body: response.to_json, status: 200)
42
+ end
43
+
44
+ def local_links_manager_has_no_link_and_no_homepage_url(authority_slug:, lgsl:, lgil:)
45
+ response = {
46
+ "local_authority" => {
47
+ "name" => authority_slug.capitalize,
48
+ "snac" => "00AG",
49
+ "tier" => "unitary",
50
+ "homepage_url" => nil,
51
+ },
52
+ }
53
+
54
+ stub_request(:get, "#{LOCAL_LINKS_MANAGER_ENDPOINT}/api/link")
55
+ .with(query: {authority_slug: authority_slug, lgsl: lgsl, lgil: lgil})
56
+ .to_return(body: response.to_json, status: 200)
57
+ end
58
+
59
+ def local_links_manager_has_a_fallback_link(authority_slug:, lgsl:, lgil:, url:)
60
+ response = {
61
+ "local_authority" => {
62
+ "name" => authority_slug.capitalize,
63
+ "snac" => "00AG",
64
+ "tier" => "unitary",
65
+ "homepage_url" => "http://#{authority_slug}.example.com",
66
+ },
67
+ "local_interaction" => {
68
+ "lgsl_code" => lgsl,
69
+ "lgil_code" => lgil,
70
+ "url" => url,
71
+ }
72
+ }
73
+
74
+ stub_request(:get, "#{LOCAL_LINKS_MANAGER_ENDPOINT}/api/link")
75
+ .with(query: {authority_slug: authority_slug, lgsl: lgsl})
76
+ .to_return(body: response.to_json, status: 200)
77
+ end
78
+
79
+ def local_links_manager_has_no_fallback_link(authority_slug:, lgsl:)
80
+ response = {
81
+ "local_authority" => {
82
+ "name" => authority_slug.capitalize,
83
+ "snac" => "00AG",
84
+ "tier" => "unitary",
85
+ "homepage_url" => "http://#{authority_slug}.example.com",
86
+ },
87
+ }
88
+
89
+ stub_request(:get, "#{LOCAL_LINKS_MANAGER_ENDPOINT}/api/link")
90
+ .with(query: {authority_slug: authority_slug, lgsl: lgsl})
91
+ .to_return(body: response.to_json, status: 200)
92
+ end
93
+
94
+ def local_links_manager_request_with_missing_parameters(authority_slug, lgsl)
95
+ # convert nil to an empty string, otherwise query param is not expressed correctly
96
+ params = { authority_slug: authority_slug || "", lgsl: lgsl || "" }
97
+
98
+ stub_request(:get, "#{LOCAL_LINKS_MANAGER_ENDPOINT}/api/link")
99
+ .with(query: params)
100
+ .to_return(body: {}.to_json, status: 400)
101
+ end
102
+
103
+ def local_links_manager_does_not_have_required_objects(authority_slug, lgsl, lgil=nil)
104
+ params = { authority_slug: authority_slug, lgsl: lgsl }
105
+ params.merge!(lgil: lgil) if lgil
106
+
107
+ stub_request(:get, "#{LOCAL_LINKS_MANAGER_ENDPOINT}/api/link")
108
+ .with(query: params)
109
+ .to_return(body: {}.to_json, status: 404)
110
+ end
111
+ end
112
+ end
113
+ end
@@ -1,3 +1,3 @@
1
1
  module GdsApi
2
- VERSION = '32.1.0'
2
+ VERSION = '32.2.0'
3
3
  end
@@ -0,0 +1,171 @@
1
+ require "test_helper"
2
+ require "gds_api/local_links_manager"
3
+ require "gds_api/test_helpers/local_links_manager"
4
+ require 'pry'
5
+
6
+ describe GdsApi::LocalLinksManager do
7
+ include GdsApi::TestHelpers::LocalLinksManager
8
+
9
+ before do
10
+ @base_api_url = Plek.current.find("local_links_manager")
11
+ @api = GdsApi::LocalLinksManager.new(@base_api_url)
12
+ end
13
+
14
+ describe "#link" do
15
+ describe "when making request for specific LGIL" do
16
+ it "returns the local authority and local interaction details if link present" do
17
+ local_links_manager_has_a_link(
18
+ authority_slug: "blackburn",
19
+ lgsl: 2,
20
+ lgil: 4,
21
+ url: "http://blackburn.example.com/abandoned-shopping-trolleys/report"
22
+ )
23
+
24
+ expected_response = {
25
+ "local_authority" => {
26
+ "name" => "Blackburn",
27
+ "snac" => "00AG",
28
+ "tier" => "unitary",
29
+ "homepage_url" => "http://blackburn.example.com",
30
+ },
31
+ "local_interaction" => {
32
+ "lgsl_code" => 2,
33
+ "lgil_code" => 4,
34
+ "url" => "http://blackburn.example.com/abandoned-shopping-trolleys/report",
35
+ }
36
+ }
37
+
38
+ response = @api.local_link("blackburn", 2, 4)
39
+ assert_equal expected_response, response.to_hash
40
+ end
41
+
42
+ it "returns the local authority details only if no link present" do
43
+ local_links_manager_has_no_link(
44
+ authority_slug: "blackburn",
45
+ lgsl: 2,
46
+ lgil: 4,
47
+ )
48
+
49
+ expected_response = {
50
+ "local_authority" => {
51
+ "name" => "Blackburn",
52
+ "snac" => "00AG",
53
+ "tier" => "unitary",
54
+ "homepage_url" => "http://blackburn.example.com",
55
+ },
56
+ }
57
+
58
+ response = @api.local_link("blackburn", 2, 4)
59
+ assert_equal expected_response, response.to_hash
60
+ end
61
+
62
+ it 'returns the local authority without a homepage url if no homepage link present' do
63
+ local_links_manager_has_no_link_and_no_homepage_url(
64
+ authority_slug: "blackburn",
65
+ lgsl: 2,
66
+ lgil: 4,
67
+ )
68
+
69
+ expected_response = {
70
+ "local_authority" => {
71
+ "name" => "Blackburn",
72
+ "snac" => "00AG",
73
+ "tier" => "unitary",
74
+ "homepage_url" => nil,
75
+ },
76
+ }
77
+
78
+ response = @api.local_link("blackburn", 2, 4)
79
+ assert_equal expected_response, response.to_hash
80
+ end
81
+ end
82
+
83
+ describe "when making request without LGIL" do
84
+ it "returns the local authority and local interaction details if link present" do
85
+ local_links_manager_has_a_fallback_link(
86
+ authority_slug: "blackburn",
87
+ lgsl: 2,
88
+ lgil: 3,
89
+ url: "http://blackburn.example.com/abandoned-shopping-trolleys/report"
90
+ )
91
+
92
+ expected_response = {
93
+ "local_authority" => {
94
+ "name" => "Blackburn",
95
+ "snac" => "00AG",
96
+ "tier" => "unitary",
97
+ "homepage_url" => "http://blackburn.example.com",
98
+ },
99
+ "local_interaction" => {
100
+ "lgsl_code" => 2,
101
+ "lgil_code" => 3,
102
+ "url" => "http://blackburn.example.com/abandoned-shopping-trolleys/report",
103
+ }
104
+ }
105
+
106
+ response = @api.local_link("blackburn", 2)
107
+ assert_equal expected_response, response.to_hash
108
+ end
109
+
110
+ it "returns the local authority and local interaction details if no link present" do
111
+ local_links_manager_has_no_fallback_link(
112
+ authority_slug: "blackburn",
113
+ lgsl: 2
114
+ )
115
+
116
+ expected_response = {
117
+ "local_authority" => {
118
+ "name" => "Blackburn",
119
+ "snac" => "00AG",
120
+ "tier" => "unitary",
121
+ "homepage_url" => "http://blackburn.example.com",
122
+ },
123
+ }
124
+
125
+ response = @api.local_link("blackburn", 2)
126
+ assert_equal expected_response, response.to_hash
127
+ end
128
+ end
129
+
130
+ describe "when making request with missing required parameters" do
131
+ it "raises HTTPClientError when authority_slug is missing" do
132
+ local_links_manager_request_with_missing_parameters(nil, 2)
133
+
134
+ assert_raises GdsApi::HTTPClientError do
135
+ @api.local_link(nil, 2)
136
+ end
137
+ end
138
+
139
+ it "raises HTTPClientError when LGSL is missing" do
140
+ local_links_manager_request_with_missing_parameters('blackburn', nil)
141
+
142
+ assert_raises GdsApi::HTTPClientError do
143
+ @api.local_link('blackburn', nil)
144
+ end
145
+ end
146
+ end
147
+
148
+ describe "when making request with invalid required parameters" do
149
+ it "returns nil when authority_slug is invalid" do
150
+ local_links_manager_does_not_have_required_objects("hogwarts", 2)
151
+
152
+ response = @api.local_link("hogwarts", 2)
153
+ assert_equal nil, response
154
+ end
155
+
156
+ it "returns nil when LGSL is invalid" do
157
+ local_links_manager_does_not_have_required_objects("blackburn", 999)
158
+
159
+ response = @api.local_link("blackburn", 999)
160
+ assert_equal nil, response
161
+ end
162
+
163
+ it "returns nil when the LGSL and LGIL combination is invalid" do
164
+ local_links_manager_does_not_have_required_objects("blackburn", 2, 9)
165
+
166
+ response = @api.local_link("blackburn", 2, 9)
167
+ assert_equal nil, response
168
+ end
169
+ end
170
+ end
171
+ end
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: 32.1.0
4
+ version: 32.2.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: 2016-07-27 00:00:00.000000000 Z
11
+ date: 2016-07-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: plek
@@ -344,6 +344,7 @@ files:
344
344
  - lib/gds_api/json_client.rb
345
345
  - lib/gds_api/licence_application.rb
346
346
  - lib/gds_api/list_response.rb
347
+ - lib/gds_api/local_links_manager.rb
347
348
  - lib/gds_api/mapit.rb
348
349
  - lib/gds_api/maslow.rb
349
350
  - lib/gds_api/middleware/govuk_header_sniffer.rb
@@ -379,6 +380,7 @@ files:
379
380
  - lib/gds_api/test_helpers/intent_helpers.rb
380
381
  - lib/gds_api/test_helpers/json_client_helper.rb
381
382
  - lib/gds_api/test_helpers/licence_application.rb
383
+ - lib/gds_api/test_helpers/local_links_manager.rb
382
384
  - lib/gds_api/test_helpers/mapit.rb
383
385
  - lib/gds_api/test_helpers/need_api.rb
384
386
  - lib/gds_api/test_helpers/organisations.rb
@@ -418,6 +420,7 @@ files:
418
420
  - test/json_client_test.rb
419
421
  - test/licence_application_api_test.rb
420
422
  - test/list_response_test.rb
423
+ - test/local_links_manager_api_test.rb
421
424
  - test/mapit_test.rb
422
425
  - test/maslow_test.rb
423
426
  - test/middleware/govuk_header_sniffer_test.rb
@@ -479,6 +482,7 @@ test_files:
479
482
  - test/publishing_api_v2/get_expanded_links_test.rb
480
483
  - test/whitehall_admin_api_test.rb
481
484
  - test/pp_data_in_test.rb
485
+ - test/local_links_manager_api_test.rb
482
486
  - test/publishing_api/special_route_publisher_test.rb
483
487
  - test/need_api_test.rb
484
488
  - test/publisher_api_test.rb