You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: t/web/simple_search.t
+33-3Lines changed: 33 additions & 3 deletions
Original file line number
Diff line number
Diff line change
@@ -26,18 +26,48 @@ my $root = RT::Test->load_or_create_user( Name => 'root' );
26
26
Argument=>'',
27
27
);
28
28
is $parser->QueryToSQL("foo"), "( Subject LIKE 'foo' OR Description LIKE 'foo' ) AND ( Status = '__Active__' )", "correct parsing";
29
-
is $parser->QueryToSQL("1 foo"), "( ( Subject LIKE 'foo' OR Description LIKE 'foo' ) AND ( Subject LIKE '1' OR Description LIKE '1' ) ) AND ( Status = '__Active__' )", "correct parsing";
29
+
is $parser->QueryToSQL("1 foo"), "( Subject LIKE '1 foo' OR Description LIKE '1 foo' ) AND ( Status = '__Active__' )", "multi-word input treated as phrase";
30
30
is $parser->QueryToSQL("1"), "( Id = 1 )", "correct parsing";
31
31
is $parser->QueryToSQL("#1"), "( Id = 1 )", "correct parsing";
32
32
is $parser->QueryToSQL("'1'"), "( Subject LIKE '1' OR Description LIKE '1' ) AND ( Status = '__Active__' )", "correct parsing";
33
33
34
34
is $parser->QueryToSQL("foo bar"),
35
-
"( ( Subject LIKE 'foo' OR Description LIKE 'foo' ) AND ( Subject LIKE 'bar' OR Description LIKE 'bar' ) ) AND ( Status = '__Active__' )",
36
-
"correct parsing";
35
+
"( Subject LIKE 'foo bar' OR Description LIKE 'foobar' ) AND ( Status = '__Active__' )",
36
+
"multi-word input treated as phrase";
37
37
is $parser->QueryToSQL("'foo bar'"),
38
38
"( Subject LIKE 'foo bar' OR Description LIKE 'foo bar' ) AND ( Status = '__Active__' )",
39
39
"correct parsing";
40
40
41
+
# Status words in phrase: "open" is a valid status, test position handling
42
+
is $parser->QueryToSQL("error in open search"),
43
+
"( Subject LIKE 'error in open search' OR Description LIKE 'error in open search' ) AND ( Status = '__Active__' )",
44
+
"status word in middle of phrase is part of phrase";
45
+
is $parser->QueryToSQL("error in search open"),
46
+
"( Subject LIKE 'error in search' OR Description LIKE 'error in search' ) AND ( Status = 'open' )",
47
+
"status word at end of phrase is status filter";
48
+
49
+
# Quoted phrases preserve status words as literal text
50
+
is $parser->QueryToSQL("'error in open search'"),
51
+
"( Subject LIKE 'error in open search' OR Description LIKE 'error in open search' ) AND ( Status = '__Active__' )",
52
+
"single-quoted phrase with status word in middle";
53
+
is $parser->QueryToSQL('"error in open search"'),
54
+
"( Subject LIKE 'error in open search' OR Description LIKE 'error in open search' ) AND ( Status = '__Active__' )",
55
+
"double-quoted phrase with status word in middle";
56
+
is $parser->QueryToSQL("'error in search open'"),
57
+
"( Subject LIKE 'error in search open' OR Description LIKE 'error in search open' ) AND ( Status = '__Active__' )",
58
+
"single-quoted phrase with status word at end stays literal";
59
+
is $parser->QueryToSQL('"error in search open"'),
60
+
"( Subject LIKE 'error in search open' OR Description LIKE 'error in search open' ) AND ( Status = '__Active__' )",
61
+
"double-quoted phrase with status word at end stays literal";
62
+
63
+
# Status word outside quotes is treated as status filter
64
+
is $parser->QueryToSQL("'error in search' open"),
65
+
"( Subject LIKE 'error in search' OR Description LIKE 'error in search' ) AND ( Status = 'open' )",
66
+
"single-quoted phrase with status word outside quotes";
67
+
is $parser->QueryToSQL('"error in search" open'),
68
+
"( Subject LIKE 'error in search' OR Description LIKE 'error in search' ) AND ( Status = 'open' )",
69
+
"double-quoted phrase with status word outside quotes";
70
+
41
71
is $parser->QueryToSQL("'foo \\' bar'"),
42
72
"( Subject LIKE 'foo \\' bar' OR Description LIKE 'foo \\' bar' ) AND ( Status = '__Active__' )",
0 commit comments