highlight_test.rb
4.58 KB
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
require_relative "test_helper"
class HighlightTest < Minitest::Test
def test_basic
store_names ["Two Door Cinema Club"]
assert_equal "Two Door <em>Cinema</em> Club", Product.search("cinema", highlight: true).highlights.first[:name]
assert_equal "Two Door <em>Cinema</em> Club", Product.search("cinema").highlight(true).highlights.first[:name]
end
def test_with_highlights
store_names ["Two Door Cinema Club"]
assert_equal "Two Door <em>Cinema</em> Club", Product.search("cinema", highlight: true).with_highlights.first.last[:name]
end
def test_tag
store_names ["Two Door Cinema Club"]
assert_equal "Two Door <strong>Cinema</strong> Club", Product.search("cinema", highlight: {tag: "<strong>"}).highlights.first[:name]
end
def test_tag_class
store_names ["Two Door Cinema Club"]
assert_equal "Two Door <strong class='classy'>Cinema</strong> Club", Product.search("cinema", highlight: {tag: "<strong class='classy'>"}).highlights.first[:name]
end
def test_very_long
store_names [("Two Door Cinema Club " * 100).strip]
assert_equal ("Two Door <em>Cinema</em> Club " * 100).strip, Product.search("cinema", highlight: true).highlights.first[:name]
end
def test_multiple_fields
store [{name: "Two Door Cinema Club", color: "Cinema Orange"}]
highlights = Product.search("cinema", fields: [:name, :color], highlight: true).highlights.first
assert_equal "Two Door <em>Cinema</em> Club", highlights[:name]
assert_equal "<em>Cinema</em> Orange", highlights[:color]
end
def test_fields
store [{name: "Two Door Cinema Club", color: "Cinema Orange"}]
highlights = Product.search("cinema", fields: [:name, :color], highlight: {fields: [:name]}).highlights.first
assert_equal "Two Door <em>Cinema</em> Club", highlights[:name]
assert_nil highlights[:color]
end
def test_field_options
store_names ["Two Door Cinema Club are a Northern Irish indie rock band"]
fragment_size = ENV["MATCH"] == "word_start" ? 26 : 21
assert_equal "Two Door <em>Cinema</em> Club are", Product.search("cinema", highlight: {fields: {name: {fragment_size: fragment_size}}}).highlights.first[:name]
end
def test_multiple_words
store_names ["Hello World Hello"]
assert_equal "<em>Hello</em> World <em>Hello</em>", Product.search("hello", highlight: true).highlights.first[:name]
assert_equal "<em>Hello</em> World <em>Hello</em>", Product.search("hello").highlight(true).highlights.first[:name]
end
def test_encoder
store_names ["<b>Hello</b>"]
assert_equal "<b><em>Hello</em></b>", Product.search("hello", highlight: {encoder: "html"}, misspellings: false).highlights.first[:name]
end
def test_word_middle
store_names ["Two Door Cinema Club"]
assert_equal "Two Door <em>Cinema</em> Club", Product.search("ine", match: :word_middle, highlight: true).highlights.first[:name]
assert_equal "Two Door <em>Cinema</em> Club", Product.search("ine").match(:word_middle).highlight(true).highlights.first[:name]
end
def test_body
skip if ENV["MATCH"] == "word_start"
store_names ["Two Door Cinema Club"]
body = {
query: {
match: {
"name.analyzed" => "cinema"
}
},
highlight: {
pre_tags: ["<strong>"],
post_tags: ["</strong>"],
fields: {
"name.analyzed" => {}
}
}
}
assert_equal "Two Door <strong>Cinema</strong> Club", Product.search(body: body).highlights.first[:"name.analyzed"]
end
def test_multiple_highlights
store_names ["Two Door Cinema Club Some Other Words And Much More Doors Cinema Club"]
highlights = Product.search("cinema", highlight: {fragment_size: 20}).highlights(multiple: true).first[:name]
assert highlights.is_a?(Array)
assert_equal highlights.count, 2
refute_equal highlights.first, highlights.last
highlights.each do |highlight|
assert highlight.include?("<em>Cinema</em>")
end
end
def test_search_highlights_method
store_names ["Two Door Cinema Club"]
assert_equal "Two Door <em>Cinema</em> Club", Product.search("cinema", highlight: true).first.search_highlights[:name]
end
def test_match_all
store_names ["Two Door Cinema Club"]
assert_nil Product.search("*", highlight: true).highlights.first[:name]
end
def test_match_all_load_false
store_names ["Two Door Cinema Club"]
assert_nil Product.search("*", highlight: true, load: false).highlights.first[:name]
end
def test_match_all_search_highlights
store_names ["Two Door Cinema Club"]
assert_nil Product.search("*", highlight: true).first.search_highlights[:name]
end
end