require 'spec_helper' describe MultiSolr::SearchResult do SAMPLE_SOLR_RESULT = { 'responseHeader'=>{ 'status'=>0,'QTime'=>61, 'params'=>{'facet.missing'=>'true','facet'=>'true','facet.mincount'=>'1','q'=>'*:*','facet.range.start'=>'2011-10-01T00:00:00Z','facet.range'=>'movement_date','facet.range.end'=>'2011-10-11T00:00:00Z','facet.range.gap'=>'+1DAY','facet.field'=>'movement_code','wt'=>'ruby','fq'=>'lager_id:8','rows'=>'3'} }, 'response'=>{ 'numFound'=>2101,'start'=>0, 'docs'=>[ {'movement_code'=>129,'firma_nr'=>8,'transaction_id'=>3439846077,'groesse'=>'0','paletten_no'=>'C252935055','container_no'=>'C252935065','movement_date'=>'2011-08-01T14:03:04Z','artikelnr'=>'891454','menge'=>1,'lagerort'=>'1.0.15.066.4.0','id'=>649970561,'lager_id'=>8,'teile_nr'=>1,'type_code'=>2}, {'movement_code'=>129,'firma_nr'=>8,'transaction_id'=>3439846077,'groesse'=>'0','paletten_no'=>'C252935055','container_no'=>'C252935066','movement_date'=>'2011-08-01T14:03:04Z','artikelnr'=>'891454','menge'=>1,'lagerort'=>'1.0.15.066.4.0','id'=>649970562,'lager_id'=>8,'teile_nr'=>2,'type_code'=>2}, {'movement_code'=>129,'firma_nr'=>8,'transaction_id'=>3439846077,'groesse'=>'0','paletten_no'=>'C252935055','container_no'=>'C252935067','movement_date'=>'2011-08-01T14:03:04Z','artikelnr'=>'891454','menge'=>1,'lagerort'=>'1.0.15.066.4.0','id'=>649970563,'lager_id'=>8,'teile_nr'=>2,'type_code'=>2} ] }, 'facet_counts'=>{ 'facet_queries'=>{}, 'facet_fields'=>{ 'movement_code'=>[['109',1088651],['33',939104],['105',617888],['29',329941],['158',128853], ['157',125759],['272',103530],['135',103011],['101',79111],[nil,0]] }, 'facet_dates'=>{}, 'facet_ranges'=>{'movement_date'=>{'counts'=> [ ['2011-10-01T00:00:00Z',7910], ['2011-10-04T00:00:00Z',59650], ['2011-10-05T00:00:00Z',57882], ['2011-10-06T00:00:00Z',59728], ['2011-10-07T00:00:00Z',67143], ['2011-10-08T00:00:00Z',8721], ['2011-10-10T00:00:00Z',60442]], 'gap'=>'+1DAY','start'=>'2011-10-01T00:00:00Z','end'=>'2011-10-11T00:00:00Z'} } }, 'stats'=>{ 'stats_fields'=>{ 'volumen'=>{'min'=>0.0, 'max'=>1350.0, 'count'=>256039, 'missing'=>0, 'sum'=>7741425.599999999, 'sumOfSquares'=>1.33107281946E9, 'mean'=>30.235337585289734, 'stddev'=>65.45649169441819, 'facets'=>{ 'saison'=>{ '125'=>{'min'=>0.0, 'max'=>1296.0, 'count'=>161440, 'missing'=>0, 'sum'=>5462257.3999999985, 'sumOfSquares'=>1.08454124544E9, 'mean'=>33.83459737363726, 'stddev'=>74.65370742839168}, '121'=>{'min'=>1.0, 'max'=>27.0, 'count'=>740, 'missing'=>0, 'sum'=>10592.9, 'sumOfSquares'=>161604.85, 'mean'=>14.314729729729729, 'stddev'=>3.6731018490414336} } } }, 'menge'=>{'min'=>1.0, 'max'=>62.0, 'count'=>256039, 'missing'=>0, 'sum'=>385627.0, 'sumOfSquares'=>3057757.0, 'mean'=>1.5061260198641613, 'stddev'=>3.1103321535761506, 'facets'=>{ 'saison'=>{ '125'=>{'min'=>1.0, 'max'=>62.0, 'count'=>161440, 'missing'=>0, 'sum'=>271215.0, 'sumOfSquares'=>2532609.0, 'mean'=>1.6799739841427155, 'stddev'=>3.5868349271772577}, '121'=>{'min'=>1.0, 'max'=>1.0, 'count'=>740, 'missing'=>0, 'sum'=>740.0, 'sumOfSquares'=>740.0, 'mean'=>1.0, 'stddev'=>0.0} } } } } } } context "non grouping result" do before(:all) do @search_result = MultiSolr::SearchResult.new SAMPLE_SOLR_RESULT, MultiSolr::SearchRequest.new, nil end it "should set the correct hits" do @search_result.hits.should == 2101 end it "should set the correct data_rows" do @search_result.data_rows.should have(3).entries end it "should set the correct facet fields" do @search_result.facet_fields.should have(1).entries @search_result.facet_fields['movement_code'].should have(10).entries @search_result.facet_fields['movement_code'].first.should == ['109',1088651] end it "should set the correct facet ranges" do @search_result.facet_ranges.should have(1).entries @search_result.facet_ranges['movement_date']['counts'].should have(7).entries @search_result.facet_ranges['movement_date']['counts'].first.should == ['2011-10-01T00:00:00Z',7910] end it "should have global stats" do stats = @search_result.stats stats.should be_a(Hash) stats['volumen'].should be_a(Hash) stats['menge'].should be_a(Hash) end it "should have facet stats" do stats_facets = @search_result.stats_facets stats_facets.should be_a(Hash) saison_facet_stats = stats_facets['saison'] saison_facet_stats.should be_a(Hash) saison_121 = saison_facet_stats['121'] saison_121.should be_a(Hash) saison_121['menge']['sum'].should > 100 saison_121['volumen']['sum'].should > 100 end end context "Page-Data" do before(:all) do @search_result = MultiSolr::SearchResult.new SAMPLE_SOLR_RESULT, MultiSolr::SearchRequest.new(:page => 2, :page_size => 100), nil end it {@search_result.page.should == 2} it {@search_result.total_pages.should == 22} end end