test/response_test.rb in mwmitchell-rsolr-ext-0.5.8 vs test/response_test.rb in mwmitchell-rsolr-ext-0.5.9

- old
+ new

@@ -14,17 +14,17 @@ test 'standard response class' do raw_response = eval(mock_query_response) r = RSolr::Ext::Response::Standard.new(raw_response) assert r.respond_to?(:response) assert r.ok? - assert_equal 10, r[:response][:docs].size - assert_equal 'EXPLICIT', r[:responseHeader][:params][:echoParams] - assert_equal 1, r[:response][:docs].previous_page - assert_equal 1, r[:response][:docs].next_page + assert_equal 11, r.docs.size + assert_equal 'EXPLICIT', r.params[:echoParams] + assert_equal 1, r.docs.previous_page + assert_equal 2, r.docs.next_page # - assert r[:response][:docs].kind_of?(RSolr::Ext::Response::Pageable) - assert r.kind_of?(RSolr::Ext::Response::Facetable) + assert r.kind_of?(RSolr::Ext::Response::Docs) + assert r.kind_of?(RSolr::Ext::Response::Facets) end test 'standard response doc ext methods' do raw_response = eval(mock_query_response) r = RSolr::Ext::Response::Standard.new(raw_response) @@ -35,7 +35,71 @@ assert 'electronics', doc.get(:cat) assert_nil doc.get(:xyz) assert_equal 'def', doc.get(:xyz, :default=>'def') end + + test 'Response::Standard facets' do + raw_response = eval(mock_query_response) + r = RSolr::Ext::Response::Standard.new(raw_response) + assert_equal 2, r.facets.size + + field_names = r.facets.collect{|facet|facet.name} + assert field_names.include?('cat') + assert field_names.include?('manu') + + first_facet = r.facets.first + assert_equal 'cat', first_facet.name + assert_equal 10, first_facet.items.size + + expected = first_facet.items.collect do |item| + item.value + ' - ' + item.hits.to_s + end.join(', ') + assert_equal "electronics - 14, memory - 3, card - 2, connector - 2, drive - 2, graphics - 2, hard - 2, monitor - 2, search - 2, software - 2", expected + + r.facets.each do |facet| + assert facet.respond_to?(:name) + facet.items.each do |item| + assert item.respond_to?(:value) + assert item.respond_to?(:hits) + end + end + + end + + test 'response::standard facet_by_field_name' do + raw_response = eval(mock_query_response) + r = RSolr::Ext::Response::Standard.new(raw_response) + facet = r.facet_by_field_name('cat') + assert_equal 'cat', facet.name + end + +=begin + + # pagination for facets has been commented out in the response/facets module. + # ...need to think more about how this can be handled + + test 'response::standard facets.paginate' do + raw_response = eval(mock_query_response) + raw_response['responseHeader']['params']['facet.offset'] = 1 + raw_response['responseHeader']['params']['facet.limit'] = 2 + + r = RSolr::Ext::Response::Standard.new(raw_response) + + assert_equal 2, r.facets.current_page + + # always 1 less than facet.limit + assert_equal 1, r.facets.per_page + + assert_equal 3, r.facets.next_page + + assert_equal 1, r.facets.previous_page + + # can't know how many pages there are with facets.... so we set it to -1 + assert_equal -1, r.facets.total_pages + + assert r.facets.has_next? + assert r.facets.has_previous? + end +=end end \ No newline at end of file