module GdsApi::TestHelpers::LocalLinksManager
def convert_to_query_string_params(parameters)
def convert_to_query_string_params(parameters) # convert nil to an empty string, otherwise query param is not expressed correctly parameters.each_key { |key| parameters[key] = "" if parameters[key].nil? } parameters end
def stub_local_links_manager_does_not_have_a_custodian_code(local_custodian_code)
def stub_local_links_manager_does_not_have_a_custodian_code(local_custodian_code) stub_request(:get, "#{LOCAL_LINKS_MANAGER_ENDPOINT}/api/local-authority") .with(query: { local_custodian_code: }) .to_return(body: {}.to_json, status: 404) end
def stub_local_links_manager_does_not_have_an_authority(authority_slug)
def stub_local_links_manager_does_not_have_an_authority(authority_slug) stub_request(:get, "#{LOCAL_LINKS_MANAGER_ENDPOINT}/api/local-authority") .with(query: { authority_slug: }) .to_return(body: {}.to_json, status: 404) end
def stub_local_links_manager_has_a_district_and_county_local_authority(district_slug, county_slug, district_snac: "00AG", county_snac: "00LC", district_gss: "EE06000063", county_gss: "EE06000064", local_custodian_code: nil)
def stub_local_links_manager_has_a_district_and_county_local_authority(district_slug, county_slug, district_snac: "00AG", county_snac: "00LC", district_gss: "EE06000063", county_gss: "EE06000064", local_custodian_code: nil) response = { "local_authorities" => [ { "name" => district_slug.capitalize, "homepage_url" => "http://#{district_slug}.example.com", "country_name" => "England", "tier" => "district", "slug" => district_slug, "gss" => district_gss, }, { "name" => county_slug.capitalize, "homepage_url" => "http://#{county_slug}.example.com", "country_name" => "England", "tier" => "county", "slug" => county_slug, "gss" => county_gss, }, ], } response["local_authorities"][0]["snac"] = district_snac if district_snac response["local_authorities"][1]["snac"] = county_snac if county_snac stub_request(:get, "#{LOCAL_LINKS_MANAGER_ENDPOINT}/api/local-authority") .with(query: { authority_slug: district_slug }) .to_return(body: response.to_json, status: 200) unless local_custodian_code.nil? stub_request(:get, "#{LOCAL_LINKS_MANAGER_ENDPOINT}/api/local-authority") .with(query: { local_custodian_code: }) .to_return(body: response.to_json, status: 200) end end
def stub_local_links_manager_has_a_link(authority_slug:, lgsl:, lgil:, url:, country_name: "England", status: "ok", snac: "00AG", gss: "EE06000063", local_custodian_code: nil)
def stub_local_links_manager_has_a_link(authority_slug:, lgsl:, lgil:, url:, country_name: "England", status: "ok", snac: "00AG", gss: "EE06000063", local_custodian_code: nil) response = { "local_authority" => { "name" => authority_slug.capitalize, "gss" => gss, "tier" => "unitary", "homepage_url" => "http://#{authority_slug}.example.com", "country_name" => country_name, "slug" => authority_slug, }, "local_interaction" => { "lgsl_code" => lgsl, "lgil_code" => lgil, "url" => url, "status" => status, }, } response["local_authority"]["snac"] = snac if snac stub_request(:get, "#{LOCAL_LINKS_MANAGER_ENDPOINT}/api/link") .with(query: { authority_slug:, lgsl:, lgil: }) .to_return(body: response.to_json, status: 200) unless local_custodian_code.nil? stub_request(:get, "#{LOCAL_LINKS_MANAGER_ENDPOINT}/api/link") .with(query: { local_custodian_code:, lgsl:, lgil: }) .to_return(body: response.to_json, status: 200) end end
def stub_local_links_manager_has_a_local_authority(authority_slug, country_name: "England", snac: "00AG", gss: "EE06000063", local_custodian_code: nil)
def stub_local_links_manager_has_a_local_authority(authority_slug, country_name: "England", snac: "00AG", gss: "EE06000063", local_custodian_code: nil) response = { "local_authorities" => [ { "name" => authority_slug.capitalize, "homepage_url" => "http://#{authority_slug}.example.com", "country_name" => country_name, "tier" => "unitary", "slug" => authority_slug, "gss" => gss, }, ], } response["local_authorities"][0]["snac"] = snac if snac stub_request(:get, "#{LOCAL_LINKS_MANAGER_ENDPOINT}/api/local-authority") .with(query: { authority_slug: }) .to_return(body: response.to_json, status: 200) unless local_custodian_code.nil? stub_request(:get, "#{LOCAL_LINKS_MANAGER_ENDPOINT}/api/local-authority") .with(query: { local_custodian_code: }) .to_return(body: response.to_json, status: 200) end end
def stub_local_links_manager_has_a_local_authority_without_homepage(authority_slug, country_name: "England", snac: "00AG", gss: "EE06000063", local_custodian_code: nil)
def stub_local_links_manager_has_a_local_authority_without_homepage(authority_slug, country_name: "England", snac: "00AG", gss: "EE06000063", local_custodian_code: nil) response = { "local_authorities" => [ { "name" => authority_slug.capitalize, "homepage_url" => "", "country_name" => country_name, "tier" => "unitary", "slug" => authority_slug, "gss" => gss, }, ], } response["local_authorities"][0]["snac"] = snac if snac stub_request(:get, "#{LOCAL_LINKS_MANAGER_ENDPOINT}/api/local-authority") .with(query: { authority_slug: }) .to_return(body: response.to_json, status: 200) unless local_custodian_code.nil? stub_request(:get, "#{LOCAL_LINKS_MANAGER_ENDPOINT}/api/local-authority") .with(query: { local_custodian_code: }) .to_return(body: response.to_json, status: 200) end end
def stub_local_links_manager_has_no_link(authority_slug:, lgsl:, lgil:, country_name: "England", snac: "00AG", gss: "EE06000063", local_custodian_code: nil)
def stub_local_links_manager_has_no_link(authority_slug:, lgsl:, lgil:, country_name: "England", snac: "00AG", gss: "EE06000063", local_custodian_code: nil) response = { "local_authority" => { "name" => authority_slug.capitalize, "gss" => gss, "tier" => "unitary", "homepage_url" => "http://#{authority_slug}.example.com", "country_name" => country_name, "slug" => authority_slug, }, } response["local_authority"]["snac"] = snac if snac stub_request(:get, "#{LOCAL_LINKS_MANAGER_ENDPOINT}/api/link") .with(query: { authority_slug:, lgsl:, lgil: }) .to_return(body: response.to_json, status: 200) unless local_custodian_code.nil? stub_request(:get, "#{LOCAL_LINKS_MANAGER_ENDPOINT}/api/link") .with(query: { local_custodian_code:, lgsl:, lgil: }) .to_return(body: response.to_json, status: 200) end end
def stub_local_links_manager_has_no_link_and_no_homepage_url(authority_slug:, lgsl:, lgil:, country_name: "England", snac: "00AG", gss: "EE06000063", local_custodian_code: nil)
def stub_local_links_manager_has_no_link_and_no_homepage_url(authority_slug:, lgsl:, lgil:, country_name: "England", snac: "00AG", gss: "EE06000063", local_custodian_code: nil) response = { "local_authority" => { "name" => authority_slug.capitalize, "gss" => gss, "tier" => "unitary", "homepage_url" => nil, "country_name" => country_name, "slug" => authority_slug, }, } response["local_authority"]["snac"] = snac if snac stub_request(:get, "#{LOCAL_LINKS_MANAGER_ENDPOINT}/api/link") .with(query: { authority_slug:, lgsl:, lgil: }) .to_return(body: response.to_json, status: 200) unless local_custodian_code.nil? stub_request(:get, "#{LOCAL_LINKS_MANAGER_ENDPOINT}/api/link") .with(query: { local_custodian_code:, lgsl:, lgil: }) .to_return(body: response.to_json, status: 200) end end
def stub_local_links_manager_request_with_invalid_parameters(**parameters)
def stub_local_links_manager_request_with_invalid_parameters(**parameters) stub_request(:get, "#{LOCAL_LINKS_MANAGER_ENDPOINT}/api/link") .with(query: convert_to_query_string_params(parameters)) .to_return(body: {}.to_json, status: 404) end
def stub_local_links_manager_request_with_missing_parameters(**parameters)
def stub_local_links_manager_request_with_missing_parameters(**parameters) stub_request(:get, "#{LOCAL_LINKS_MANAGER_ENDPOINT}/api/link") .with(query: convert_to_query_string_params(parameters)) .to_return(body: {}.to_json, status: 400) end
def stub_local_links_manager_request_without_local_authority_slug
def stub_local_links_manager_request_without_local_authority_slug stub_request(:get, "#{LOCAL_LINKS_MANAGER_ENDPOINT}/api/local-authority") .with(query: { authority_slug: "" }) .to_return(body: {}.to_json, status: 400) end
def stub_local_links_manager_request_without_local_custodian_code
def stub_local_links_manager_request_without_local_custodian_code stub_request(:get, "#{LOCAL_LINKS_MANAGER_ENDPOINT}/api/local-authority") .with(query: { local_custodian_code: "" }) .to_return(body: {}.to_json, status: 400) end