From 61ae8e8bdab6c60b7824d46615a37aa359a79e1a Mon Sep 17 00:00:00 2001 From: Max Kanat-Alexander Date: Fri, 13 May 2011 13:01:42 -0700 Subject: Bug 656994: Test custom search more thoroughly in xt/search.t. r=mkanat, a=mkanat (module owner) --- xt/lib/Bugzilla/Test/Search/Constants.pm | 135 ++++++++++++++++++++++++++++++- 1 file changed, 132 insertions(+), 3 deletions(-) (limited to 'xt/lib/Bugzilla/Test/Search/Constants.pm') diff --git a/xt/lib/Bugzilla/Test/Search/Constants.pm b/xt/lib/Bugzilla/Test/Search/Constants.pm index 5558238df..a06ceecc7 100644 --- a/xt/lib/Bugzilla/Test/Search/Constants.pm +++ b/xt/lib/Bugzilla/Test/Search/Constants.pm @@ -1023,13 +1023,142 @@ use constant SPECIAL_PARAM_TESTS => ( ); use constant CUSTOM_SEARCH_TESTS => ( - { name => 'bug_id AND assigned_to', contains => [1], + { name => 'OP without CP', contains => [1], + params => [ + { f => 'OP' }, + { f => 'bug_id', o => 'equals', v => '<1>' }, + ] + }, + + { name => 'Empty OP/CP pair before criteria', contains => [1], + params => [ + { f => 'OP' }, { f => 'CP' }, + { f => 'bug_id', o => 'equals', v => '<1>' }, + ] + }, + + { name => 'Empty OP/CP pair after criteria', contains => [1], + params => [ + { f => 'bug_id', o => 'equals', v => '<1>' }, + { f => 'OP' }, { f => 'CP' }, + ] + }, + + { name => 'empty OP/CP mid criteria', contains => [1], columns => ['assigned_to'], params => [ - { f => 'bug_id', o => 'equals', v => '<1>' }, - { f => 'assigned_to', o => 'equals', v => '<1>' }, + { f => 'bug_id', o => 'equals', v => '<1>' }, + { f => 'OP' }, { f => 'CP' }, + { f => 'assigned_to', o => 'substr', v => '@' }, ] }, + + { name => 'bug_id = 1 AND assigned_to contains @', contains => [1], + columns => ['assigned_to'], + params => [ + { f => 'bug_id', o => 'equals', v => '<1>' }, + { f => 'assigned_to', o => 'substr', v => '@' }, + ] + }, + + { name => 'NOT(bug_id = 1) AND NOT(assigned_to = 2)', + contains => [3,4,5], + columns => ['assigned_to'], + params => [ + { n => 1, f => 'bug_id', o => 'equals', v => '<1>' }, + { n => 1, f => 'assigned_to', o => 'equals', v => '<2>' }, + ] + }, + + { name => 'bug_id = 1 OR assigned_to = 2', contains => [1,2], + columns => ['assigned_to'], top_params => { j_top => 'OR' }, + params => [ + { f => 'bug_id', o => 'equals', v => '<1>' }, + { f => 'assigned_to', o => 'equals', v => '<2>' }, + ] + }, + + { name => 'NOT(bug_id = 1 AND assigned_to = 1)', contains => [2,3,4,5], + columns => ['assigned_to'], + params => [ + { f => 'OP', n => 1 }, + { f => 'bug_id', o => 'equals', v => '<1>' }, + { f => 'assigned_to', o => 'equals', v => '<1>' }, + { f => 'CP' }, + ] + }, + + + { name => '(bug_id = 1 AND assigned_to contains @) ' + . ' OR (bug_id = 2 AND assigned_to contains @)', + contains => [1,2], columns => ['assigned_to'], + top_params => { j_top => 'OR' }, + params => [ + { f => 'OP' }, + { f => 'bug_id', o => 'equals', v => '<1>' }, + { f => 'assigned_to', o => 'substr', v => '@' }, + { f => 'CP' }, + { f => 'OP' }, + { f => 'bug_id', o => 'equals', v => '<2>' }, + { f => 'assigned_to', o => 'substr', v => '@' }, + { f => 'CP' }, + ] + }, + + { name => '(bug_id = 1 OR assigned_to = 2) ' + . ' AND (bug_id = 2 OR assigned_to = 1)', + contains => [1,2], columns => ['assigned_to'], + params => [ + { f => 'OP', j => 'OR' }, + { f => 'bug_id', o => 'equals', v => '<1>' }, + { f => 'assigned_to', o => 'equals', v => '<2>' }, + { f => 'CP' }, + { f => 'OP', j => 'OR' }, + { f => 'bug_id', o => 'equals', v => '<2>' }, + { f => 'assigned_to', o => 'equals', v => '<1>' }, + { f => 'CP' }, + ] + }, + + { name => 'bug_id = 3 OR ( (bug_id = 1 OR assigned_to = 2) ' + . ' AND (bug_id = 2 OR assigned_to = 1) )', + contains => [1,2,3], columns => ['assigned_to'], + top_params => { j_top => 'OR' }, + params => [ + { f => 'bug_id', o => 'equals', v => '<3>' }, + { f => 'OP' }, + { f => 'OP', j => 'OR' }, + { f => 'bug_id', o => 'equals', v => '<1>' }, + { f => 'assigned_to', o => 'equals', v => '<2>' }, + { f => 'CP' }, + { f => 'OP', j => 'OR' }, + { f => 'bug_id', o => 'equals', v => '<2>' }, + { f => 'assigned_to', o => 'equals', v => '<1>' }, + { f => 'CP' }, + { f => 'CP' }, + ] + }, + + { name => 'bug_id = 3 OR ( (bug_id = 1 OR assigned_to = 2) ' + . ' AND (bug_id = 2 OR assigned_to = 1) ) OR bug_id = 4', + contains => [1,2,3,4], columns => ['assigned_to'], + top_params => { j_top => 'OR' }, + params => [ + { f => 'bug_id', o => 'equals', v => '<3>' }, + { f => 'OP' }, + { f => 'OP', j => 'OR' }, + { f => 'bug_id', o => 'equals', v => '<1>' }, + { f => 'assigned_to', o => 'equals', v => '<2>' }, + { f => 'CP' }, + { f => 'OP', j => 'OR' }, + { f => 'bug_id', o => 'equals', v => '<2>' }, + { f => 'assigned_to', o => 'equals', v => '<1>' }, + { f => 'CP' }, + { f => 'CP' }, + { f => 'bug_id', o => 'equals', v => '<4>' }, + ] + }, + ); 1; -- cgit v1.2.3-24-g4f1b