lib/gds_api/test_helpers/content_store.rb
require 'gds_api/test_helpers/json_client_helper' require 'gds_api/test_helpers/common_responses' require 'json' module GdsApi module TestHelpers module ContentStore include CommonResponses CONTENT_STORE_ENDPOINT = Plek.current.find('content-store') def content_store_has_item(base_path, body = item_for_base_path(base_path)) url = CONTENT_STORE_ENDPOINT + "/content" + base_path body = body.to_json unless body.is_a?(String) stub_request(:get, url).to_return(status: 200, body: body, headers: {}) end def content_store_does_not_have_item(base_path) url = CONTENT_STORE_ENDPOINT + "/content" + base_path stub_request(:get, url).to_return(status: 404, headers: {}) end def stub_content_store_put_item(base_path, body = item_for_base_path(base_path)) url = CONTENT_STORE_ENDPOINT + "/content" + base_path body = body.to_json unless body.is_a?(String) stub_request(:put, url).with(body: body).to_return(status: 201, body: body, headers: {}) end def stub_default_content_store_put() stub_request(:put, %r{\A#{CONTENT_STORE_ENDPOINT}/content}) end def item_for_base_path(base_path) { "title" => titleize_slug(base_path), "description" => "Description for #{base_path}", "format" => "guide", "need_ids" => ["100001"], "public_updated_at" => "2014-05-06T12:01:00+00:00", "base_path" => base_path, "details" => { "body" => "Some content for #{base_path}", } } end def assert_content_store_put_item(base_path, attributes = {}) url = CONTENT_STORE_ENDPOINT + "/content" + base_path if attributes.empty? assert_requested(:put, url) else assert_requested(:put, url) do |req| data = JSON.parse(req.body) attributes.to_a.all? do |key, value| data[key.to_s] == value end end end end end end end