test/unit/util/test_query.rb (1375B) - raw
1 # encoding: utf-8
2
3 require "test_helper"
4
5 require "sup/util/query"
6 require "xapian"
7
8 describe Redwood::Util::Query do
9 describe ".describe" do
10 it "returns a UTF-8 description of query" do
11 query = Xapian::Query.new "テスト"
12 life = "生活: "
13
14 assert_raises Encoding::CompatibilityError do
15 _ = life + query.description
16 end
17
18 desc = Redwood::Util::Query.describe(query)
19 _ = (life + desc) # No exception thrown
20 end
21
22 it "returns a valid UTF-8 description of bad input" do
23 msg = "asdfa \xc3\x28 åasdf"
24 query = Xapian::Query.new msg
25 life = 'hæi'
26
27 if query.description.force_encoding("UTF-8").valid_encoding?
28 # xapian 1.4 internally handles this bad input
29 assert true
30 else
31 # xapian 1.2 doesn't handle this bad input, so we do
32 assert_raises Redwood::Util::Query::QueryDescriptionError do
33 _desc = Redwood::Util::Query.describe (query)
34 end
35 end
36
37 assert_raises Encoding::CompatibilityError do
38 _ = life + query.description
39 end
40 end
41
42 it "returns a valid UTF-8 fallback description of bad input" do
43 msg = "asdfa \xc3\x28 åasdf"
44 query = Xapian::Query.new msg
45
46 desc = Redwood::Util::Query.describe(query, "invalid query")
47
48 assert desc.force_encoding("UTF-8").valid_encoding?
49
50 end
51 end
52 end