lib/gds_api/test_helpers/business_support_helper.rb
require 'gds_api/test_helpers/json_client_helper' require 'cgi' require 'gds_api/test_helpers/common_responses' module GdsApi module TestHelpers module BusinessSupportHelper def setup_business_support_stubs(endpoint, path) @stubbed_business_supports = [] stub_request(:get, %r{\A#{endpoint}/#{path}\.json}).to_return do |request| if request.uri.query_values facets = sanitise_facets(request.uri.query_values) results = stubs_for_facets(facets) || [] else results = @stubbed_business_supports end {:body => plural_response_base.merge("results" => results, "total" => results.size).to_json} end end def api_has_business_support(business_support, facets={}) facets = sanitise_facets(facets) if business_support.is_a?(Symbol) bs_with_facets = facets.merge(:title => business_support) else bs_with_facets = facets.merge(business_support) end @stubbed_business_supports << bs_with_facets unless @stubbed_business_supports.include?(bs_with_facets) end private def stubs_for_facets(facets) @stubbed_business_supports.select do |bs| facet_matches = 0 facets.each do |k,v| if bs[k] and (v & bs[k]).any? facet_matches += 1 end end facet_matches == facets.keys.size end end def sanitise_facets(facets) Hash[facets.map{ |k, v| v = v.split(',') if v.is_a?(String) [k.to_sym, v] }] end end end end