module GdsApi::TestHelpers::Organisations

def organisations_api_has_organisations(organisation_slugs)

by calling organisations_api_has_organisation below
This also sets up the individual endpoints for each slug

The stubs are setup to paginate in chunks of 20
Sets up the index endpoints for the given organisation slugs
def organisations_api_has_organisations(organisation_slugs)
  organisation_slugs.each {|s| organisations_api_has_organisation(s) }
  pages = []
  organisation_slugs.each_slice(20) do |slugs|
    pages << slugs.map {|s| organisation_details_for_slug(s) }
  end
  pages.each_with_index do |page, i|
    page_details = plural_response_base.merge({
      "results" => page,
      "total" => organisation_slugs.size,
      "pages" => pages.size,
      "current_page" => i + 1,
      "page_size" => 20,
      "start_index" => i * 20 + 1,
    })
    links = {:self => "#{ORGANISATIONS_API_ENDPOINT}/api/organisations?page=#{i + 1}" }
    links[:next] = "#{ORGANISATIONS_API_ENDPOINT}/api/organisations?page=#{i + 2}" if pages[i+1]
    links[:previous] = "#{ORGANISATIONS_API_ENDPOINT}/api/organisations?page=#{i}" unless i == 0
    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 == 0
      # 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