gds-api-adapters 7.1.0 → 7.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,12 @@
1
+ require 'gds_api/base'
2
+
3
+ module GdsApi
4
+ class FactCave < Base
5
+
6
+ def fact(slug)
7
+ return nil if slug.nil? || slug == ""
8
+ get_json("#{endpoint}/facts/#{slug}")
9
+ end
10
+
11
+ end
12
+ end
@@ -5,6 +5,7 @@ require 'gds_api/content_api'
5
5
  require 'gds_api/licence_application'
6
6
  require 'gds_api/asset_manager'
7
7
  require 'gds_api/worldwide'
8
+ require 'gds_api/fact_cave'
8
9
 
9
10
  module GdsApi
10
11
  module Helpers
@@ -16,6 +17,10 @@ module GdsApi
16
17
  @content_api ||= GdsApi::ContentApi.new(Plek.current.find("contentapi"), options)
17
18
  end
18
19
 
20
+ def fact_cave_api(options = {})
21
+ @fact_cave_api ||= GdsApi::FactCave.new(Plek.current.find("fact-cave"), options)
22
+ end
23
+
19
24
  def publisher_api(options = {})
20
25
  @api ||= GdsApi::Publisher.new(Plek.current.find("publisher"), options)
21
26
  end
@@ -0,0 +1,44 @@
1
+ require 'gds_api/test_helpers/json_client_helper'
2
+ require 'gds_api/test_helpers/common_responses'
3
+
4
+ module GdsApi
5
+ module TestHelpers
6
+ module FactCave
7
+ include GdsApi::TestHelpers::CommonResponses
8
+
9
+ FACT_CAVE_ENDPOINT = Plek.current.find('fact-cave')
10
+
11
+ def fact_cave_has_a_fact(slug, value, extra_attrs={})
12
+ response = fact_for_slug(slug, value).merge(extra_attrs)
13
+
14
+ stub_request(:get, "#{FACT_CAVE_ENDPOINT}/facts/#{slug}")
15
+ .to_return(:body => response.to_json, :status => 200)
16
+ stub_request(:get, "#{FACT_CAVE_ENDPOINT}/facts/#{slug}.json")
17
+ .to_return(:body => response.to_json, :status => 200)
18
+ end
19
+
20
+ def fact_cave_does_not_have_a_fact(slug)
21
+ response = {
22
+ "_response_info" => { "status" => "not found" }
23
+ }
24
+
25
+ stub_request(:get, "#{FACT_CAVE_ENDPOINT}/facts/#{slug}")
26
+ .to_return(:body => response.to_json, :status => 404)
27
+ stub_request(:get, "#{FACT_CAVE_ENDPOINT}/facts/#{slug}.json")
28
+ .to_return(:body => response.to_json, :status => 404)
29
+ end
30
+
31
+ def fact_for_slug(slug, value = "Sample Value")
32
+ singular_response_base.merge({
33
+ "id" => "#{FACT_CAVE_ENDPOINT}/facts/#{slug}",
34
+ "details" => {
35
+ "description" => "",
36
+ "value" => value,
37
+ },
38
+ "name" => titleize_slug(slug),
39
+ "updated_at" => Time.now.utc.xmlschema,
40
+ })
41
+ end
42
+ end
43
+ end
44
+ end
@@ -1,3 +1,3 @@
1
1
  module GdsApi
2
- VERSION = '7.1.0'
2
+ VERSION = '7.2.0'
3
3
  end
@@ -0,0 +1,39 @@
1
+ require "test_helper"
2
+ require "gds_api/fact_cave"
3
+
4
+ describe GdsApi::FactCave do
5
+ it "should raise an exception if the service at the fact cave URI returns a 500" do
6
+ stub_request(:get, /example.com\/facts/).to_return(status: [500, "Internal Server Error"])
7
+ assert_raises(GdsApi::HTTPErrorResponse) do
8
+ GdsApi::FactCave.new("http://example.com").fact("foo")
9
+ end
10
+ end
11
+
12
+ it "should return nil if the service at the fact cave URI returns a 404" do
13
+ stub_request(:get, /example.com\/facts/).to_return(status: [404, "Not Found"])
14
+ assert_nil GdsApi::FactCave.new("http://example.com").fact("bar")
15
+ end
16
+
17
+ it "should raise an exception if the service at the fact cave URI times out" do
18
+ stub_request(:get, /example.com\/facts/).to_timeout
19
+ assert_raises(GdsApi::TimedOutException) do
20
+ GdsApi::FactCave.new("http://example.com").fact("meh")
21
+ end
22
+ end
23
+
24
+ it "should return the fact deserialized from json" do
25
+ fact_cave_result = {"id" => "vat-rate", "title" => "VAT rate", "details" => {
26
+ "value" => "20%", "description" => "Value Added Tax rate" }}
27
+ stub_request(:get, "http://example.com/facts/vat-rate").to_return(body: fact_cave_result.to_json)
28
+ result = GdsApi::FactCave.new("http://example.com").fact("vat-rate")
29
+
30
+ assert_equal fact_cave_result, result.to_hash
31
+ end
32
+
33
+ it "should return an empty result without making request if slug is empty" do
34
+ result = GdsApi::FactCave.new("http://example.com").fact("")
35
+
36
+ assert_nil result
37
+ assert_not_requested :get, /example.com/
38
+ end
39
+ end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: gds-api-adapters
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 7.1.0
5
+ version: 7.2.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - James Stewart
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2013-06-03 00:00:00 Z
13
+ date: 2013-06-12 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: plek
@@ -200,6 +200,7 @@ files:
200
200
  - lib/gds_api/mapit.rb
201
201
  - lib/gds_api/exceptions.rb
202
202
  - lib/gds_api/list_response.rb
203
+ - lib/gds_api/fact_cave.rb
203
204
  - lib/gds_api/json_client.rb
204
205
  - lib/gds_api/core-ext/openstruct.rb
205
206
  - lib/gds_api/response.rb
@@ -210,6 +211,7 @@ files:
210
211
  - lib/gds_api/test_helpers/imminence.rb
211
212
  - lib/gds_api/test_helpers/content_api.rb
212
213
  - lib/gds_api/test_helpers/mapit.rb
214
+ - lib/gds_api/test_helpers/fact_cave.rb
213
215
  - lib/gds_api/test_helpers/content_api/artefact_stub.rb
214
216
  - lib/gds_api/test_helpers/publisher.rb
215
217
  - lib/gds_api/test_helpers/asset_manager.rb
@@ -234,6 +236,7 @@ files:
234
236
  - test/test_helper.rb
235
237
  - test/list_response_test.rb
236
238
  - test/worldwide_api_test.rb
239
+ - test/fact_cave_test.rb
237
240
  - test/fixtures/world_organisations_australia.json
238
241
  - test/fixtures/hello.txt
239
242
  - test/response_test.rb
@@ -254,7 +257,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
254
257
  requirements:
255
258
  - - ">="
256
259
  - !ruby/object:Gem::Version
257
- hash: 1472364090859651365
260
+ hash: 2886790745514714453
258
261
  segments:
259
262
  - 0
260
263
  version: "0"
@@ -263,7 +266,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
263
266
  requirements:
264
267
  - - ">="
265
268
  - !ruby/object:Gem::Version
266
- hash: 1472364090859651365
269
+ hash: 2886790745514714453
267
270
  segments:
268
271
  - 0
269
272
  version: "0"
@@ -286,6 +289,7 @@ test_files:
286
289
  - test/test_helper.rb
287
290
  - test/list_response_test.rb
288
291
  - test/worldwide_api_test.rb
292
+ - test/fact_cave_test.rb
289
293
  - test/fixtures/world_organisations_australia.json
290
294
  - test/fixtures/hello.txt
291
295
  - test/response_test.rb