require "chef_zero/solr/solr_parser" require "chef_zero/solr/solr_doc" describe ChefZero::Solr::SolrParser do let(:all_docs) do docs = [] [{ "foo" => "a" }, { "foo" => "d" }].each_with_index do |h, i| docs.push ChefZero::Solr::SolrDoc.new(h, i) end docs end def search_for(query) q = ChefZero::Solr::SolrParser.new(query).parse all_docs.select { |doc| q.matches_doc?(doc) } end it "handles terms" do search_for("foo:d").size.should eq(1) end it "handles ranges" do search_for("foo:[a TO c]").size.should eq(1) end it "handles -" do search_for("-foo:a").size.should eq(1) end it "handles wildcard ranges" do search_for("foo:[* TO c]").size.should eq(1) search_for("foo:[c TO *]").size.should eq(1) search_for("foo:[* TO *]").size.should eq(2) end end