summaryrefslogtreecommitdiff
path: root/spec/search_spec.rb
blob: 72e4b5356e9bf202f3d5036f48877f29d426c176 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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