module GdsApi::TestHelpers::BusinessSupportHelper

def api_has_business_support(business_support, facets={})

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

def sanitise_facets(facets)

def sanitise_facets(facets)
  Hash[facets.map{ |k, v|
    v = v.split(',') if v.is_a?(String)
    [k.to_sym, v]
  }]
end

def setup_business_support_stubs(endpoint, path)

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 stubs_for_facets(facets)

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