Module: GdsApi::TestHelpers::Worldwide
- Includes:
- CommonResponses
- Defined in:
- lib/gds_api/test_helpers/worldwide.rb
Constant Summary collapse
- WORLDWIDE_API_ENDPOINT =
Plek.current.find('whitehall-admin')
Instance Method Summary collapse
- #stub_worldwide_api_does_not_have_location(location_slug) ⇒ Object (also: #worldwide_api_has_does_not_have_location)
- #stub_worldwide_api_has_location(location_slug, details = nil) ⇒ Object (also: #worldwide_api_has_location)
-
#stub_worldwide_api_has_locations(location_slugs) ⇒ Object
(also: #worldwide_api_has_locations)
Sets up the index endpoints for the given country slugs The stubs are setup to paginate in chunks of 20.
- #stub_worldwide_api_has_no_organisations_for_location(location_slug) ⇒ Object (also: #worldwide_api_has_no_organisations_for_location)
- #stub_worldwide_api_has_organisations_for_location(location_slug, json_or_hash) ⇒ Object (also: #worldwide_api_has_organisations_for_location)
- #stub_worldwide_api_has_selection_of_locations ⇒ Object (also: #worldwide_api_has_selection_of_locations)
-
#world_location_details_for_slug(slug) ⇒ Object
Constructs a sample world_location.
- #world_location_for_slug(slug) ⇒ Object
Methods included from CommonResponses
#acronymize_slug, #plural_response_base, #response_base, #titleize_slug
Instance Method Details
#stub_worldwide_api_does_not_have_location(location_slug) ⇒ Object Also known as: worldwide_api_has_does_not_have_location
69 70 71 |
# File 'lib/gds_api/test_helpers/worldwide.rb', line 69 def stub_worldwide_api_does_not_have_location(location_slug) stub_request(:get, "#{WORLDWIDE_API_ENDPOINT}/api/world-locations/#{location_slug}").to_return(status: 404) end |
#stub_worldwide_api_has_location(location_slug, details = nil) ⇒ Object Also known as: worldwide_api_has_location
63 64 65 66 67 |
# File 'lib/gds_api/test_helpers/worldwide.rb', line 63 def stub_worldwide_api_has_location(location_slug, details = nil) details ||= world_location_for_slug(location_slug) stub_request(:get, "#{WORLDWIDE_API_ENDPOINT}/api/world-locations/#{location_slug}"). to_return(status: 200, body: details.to_json) end |
#stub_worldwide_api_has_locations(location_slugs) ⇒ Object Also known as: worldwide_api_has_locations
Sets up the index endpoints for the given country slugs The stubs are setup to paginate in chunks of 20
This also sets up the individual endpoints for each slug by calling stub_worldwide_api_has_location below
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/gds_api/test_helpers/worldwide.rb', line 16 def stub_worldwide_api_has_locations(location_slugs) location_slugs.each { |s| stub_worldwide_api_has_location(s) } pages = [] location_slugs.each_slice(20) do |slugs| pages << slugs.map { |s| world_location_details_for_slug(s) } end pages.each_with_index do |page, i| page_details = plural_response_base.merge("results" => page, "total" => location_slugs.size, "pages" => pages.size, "current_page" => i + 1, "page_size" => 20, "start_index" => i * 20 + 1) links = { self: "#{WORLDWIDE_API_ENDPOINT}/api/world-locations?page=#{i + 1}" } links[:next] = "#{WORLDWIDE_API_ENDPOINT}/api/world-locations?page=#{i + 2}" if pages[i + 1] links[:previous] = "#{WORLDWIDE_API_ENDPOINT}/api/world-locations?page=#{i}" unless i.zero? page_details["_response_info"]["links"] = [] link_headers = [] links.each do |rel, href| page_details["_response_info"]["links"] << { "rel" => rel, "href" => href } link_headers << "<#{href}>; rel=\"#{rel}\"" end stub_request(:get, links[:self]). to_return(status: 200, body: page_details.to_json, headers: { "Link" => link_headers.join(", ") }) if i.zero? # First page exists at URL with and without page param stub_request(:get, links[:self].sub(/\?page=1/, '')). to_return(status: 200, body: page_details.to_json, headers: { "Link" => link_headers.join(", ") }) end end end |
#stub_worldwide_api_has_no_organisations_for_location(location_slug) ⇒ Object Also known as: worldwide_api_has_no_organisations_for_location
80 81 82 83 84 85 |
# File 'lib/gds_api/test_helpers/worldwide.rb', line 80 def stub_worldwide_api_has_no_organisations_for_location(location_slug) details = { "results" => [], "total" => 0, "_response_info" => { "status" => "ok" } } url = "#{WORLDWIDE_API_ENDPOINT}/api/world-locations/#{location_slug}/organisations" stub_request(:get, url). to_return(status: 200, body: details.to_json, headers: { "Link" => "<#{url}; rel\"self\"" }) end |
#stub_worldwide_api_has_organisations_for_location(location_slug, json_or_hash) ⇒ Object Also known as: worldwide_api_has_organisations_for_location
73 74 75 76 77 78 |
# File 'lib/gds_api/test_helpers/worldwide.rb', line 73 def stub_worldwide_api_has_organisations_for_location(location_slug, json_or_hash) json = json_or_hash.is_a?(Hash) ? json_or_hash.to_json : json_or_hash url = "#{WORLDWIDE_API_ENDPOINT}/api/world-locations/#{location_slug}/organisations" stub_request(:get, url). to_return(status: 200, body: json, headers: { "Link" => "<#{url}; rel\"self\"" }) end |
#stub_worldwide_api_has_selection_of_locations ⇒ Object Also known as: worldwide_api_has_selection_of_locations
52 53 54 55 56 57 58 59 60 61 |
# File 'lib/gds_api/test_helpers/worldwide.rb', line 52 def stub_worldwide_api_has_selection_of_locations stub_worldwide_api_has_locations %w( afghanistan angola australia bahamas belarus brazil brunei cambodia chad croatia denmark eritrea france ghana iceland japan laos luxembourg malta micronesia mozambique nicaragua panama portugal sao-tome-and-principe singapore south-korea sri-lanka uk-delegation-to-council-of-europe uk-delegation-to-organization-for-security-and-co-operation-in-europe united-kingdom venezuela vietnam ) end |
#world_location_details_for_slug(slug) ⇒ Object
Constructs a sample world_location
if the slug contains ‘delegation’ or ‘mission’ the format will be set to ‘International delegation’ othersiwe it will be set to ‘World location’
95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
# File 'lib/gds_api/test_helpers/worldwide.rb', line 95 def world_location_details_for_slug(slug) { "id" => "https://www.gov.uk/api/world-locations/#{slug}", "title" => titleize_slug(slug, title_case: true), "format" => (slug =~ /(delegation|mission)/ ? "International delegation" : "World location"), "updated_at" => "2013-03-25T13:06:42+00:00", "web_url" => "https://www.gov.uk/government/world/#{slug}", "details" => { "slug" => slug, "iso2" => slug[0..1].upcase, }, "organisations" => { "id" => "https://www.gov.uk/api/world-locations/#{slug}/organisations", "web_url" => "https://www.gov.uk/government/world/#{slug}#organisations" }, } end |
#world_location_for_slug(slug) ⇒ Object
87 88 89 |
# File 'lib/gds_api/test_helpers/worldwide.rb', line 87 def world_location_for_slug(slug) singular_response_base.merge(world_location_details_for_slug(slug)) end |