module GdsApi::TestHelpers::ContentStore

def content_item_for_base_path(base_path)

def content_item_for_base_path(base_path)
  super.merge("base_path" => base_path)
end

def content_store_does_not_have_item(base_path, options = {})

def content_store_does_not_have_item(base_path, options = {})
  url = content_store_endpoint(options[:draft]) + "/content" + base_path
  stub_request(:get, url).to_return(status: 404, headers: {})
  url = content_store_endpoint(options[:draft]) + "/incoming-links" + base_path
  stub_request(:get, url).to_return(status: 404, headers: {})
end

def content_store_endpoint(draft = false)

def content_store_endpoint(draft = false)
  draft ? Plek.current.find('draft-content-store') : Plek.current.find('content-store')
end

def content_store_has_gone_item(base_path, body = gone_content_item_for_base_path(base_path), options = {})

Options Hash: (**options)
  • draft (String) -- Will point to the draft content store if set to true

Parameters:
  • options (Hash) --
  • body (Hash) --
  • base_path (String) --
def content_store_has_gone_item(base_path, body = gone_content_item_for_base_path(base_path), options = {})
  url = content_store_endpoint(options[:draft]) + "/content" + base_path
  body = body.to_json unless body.is_a?(String)
  stub_request(:get, url).to_return(
    status: 410,
    body: body,
    headers: {}
  )
end

def content_store_has_incoming_links(base_path, links)

def content_store_has_incoming_links(base_path, links)
  url = content_store_endpoint + "/incoming-links" + base_path
  body = links.to_json
  stub_request(:get, url).to_return(body: body)
end

def content_store_has_item(base_path, body = content_item_for_base_path(base_path), options = {})

def content_store_has_item(base_path, body = content_item_for_base_path(base_path), options = {})
  max_age = options.fetch(:max_age, 900)
  visibility = options[:private] ? "private" : "public"
  url = content_store_endpoint(options[:draft]) + "/content" + base_path
  body = body.to_json unless body.is_a?(String)
  stub_request(:get, url).to_return(
    status: 200,
    body: body,
    headers: {
      cache_control: "#{visibility}, max-age=#{max_age}",
      date: Time.now.httpdate
    }
  )
end

def content_store_isnt_available

def content_store_isnt_available
  stub_request(:any, /#{content_store_endpoint}\/.*/).to_return(status: 503)
end