From 04871c9097e4d5108f17f316c78f35c25c32a0b1 Mon Sep 17 00:00:00 2001 From: Max Kanat-Alexander Date: Sun, 3 Oct 2010 16:35:35 -0700 Subject: Bug 601519 - Test pronouns (like %user%, %reporter%, etc.) in xt/search.t r=mkanat, a=mkanat (module owner) --- xt/lib/Bugzilla/Test/Search.pm | 12 +++++++++--- xt/lib/Bugzilla/Test/Search/Constants.pm | 27 ++++++++++++++++++++++++++- xt/lib/Bugzilla/Test/Search/FieldTest.pm | 8 +++++++- 3 files changed, 42 insertions(+), 5 deletions(-) (limited to 'xt/lib/Bugzilla') diff --git a/xt/lib/Bugzilla/Test/Search.pm b/xt/lib/Bugzilla/Test/Search.pm index 5137302b7..02ff48a80 100644 --- a/xt/lib/Bugzilla/Test/Search.pm +++ b/xt/lib/Bugzilla/Test/Search.pm @@ -592,6 +592,7 @@ sub _create_one_bug { my $update_alias = $self->bug_update_value($number, 'alias'); # Otherwise, make bug 6 a clone of bug 1. + my $real_number = $number; $number = 1 if $number == 6; my $reporter = $self->bug_create_value($number, 'reporter'); @@ -689,9 +690,14 @@ sub _create_one_bug { $update_params{groups} = { add => $update_params{groups}, remove => $bug->groups_in }; my @cc_remove = map { $_->login } @{ $bug->cc_users }; - my $cc_add = $update_params{cc}; - $cc_add = [$cc_add] if !ref $cc_add; - $update_params{cc} = { add => $cc_add, remove => \@cc_remove }; + my $cc_new = $update_params{cc}; + my @cc_add = ref($cc_new) ? @$cc_new : ($cc_new); + # We make the admin an explicit CC on bug 1 (but not on bug 6), so + # that we can test the %user% pronoun properly. + if ($real_number == 1) { + push(@cc_add, $self->admin->login); + } + $update_params{cc} = { add => \@cc_add, remove => \@cc_remove }; my $see_also_remove = $bug->see_also; my $see_also_add = [$update_params{see_also}]; $update_params{see_also} = { add => $see_also_add, diff --git a/xt/lib/Bugzilla/Test/Search/Constants.pm b/xt/lib/Bugzilla/Test/Search/Constants.pm index e001ad6a5..aeb392c70 100644 --- a/xt/lib/Bugzilla/Test/Search/Constants.pm +++ b/xt/lib/Bugzilla/Test/Search/Constants.pm @@ -336,6 +336,9 @@ use constant CHANGED_VALUE_BROKEN => ( # while the other fails. In this case, we have a special override for # "operator-value", which uniquely identifies tests. use constant KNOWN_BROKEN => { + "equals-%group.<1-bug_group>%" => { + commenter => { contains => [1,2,3,4,5] }, + }, notequals => { NEGATIVE_BROKEN }, notsubstring => { NEGATIVE_BROKEN }, notregexp => { NEGATIVE_BROKEN }, @@ -1262,6 +1265,7 @@ use constant SPECIAL_PARAM_TESTS => ( { field => 'resolution', operator => 'anyexact', value => '---', contains => [5] }, + # email* query parameters. { field => 'assigned_to', operator => 'anyexact', value => '<1>, <2-reporter>', contains => [1,2], extra_params => { emailreporter1 => 1 } }, @@ -1270,7 +1274,28 @@ use constant SPECIAL_PARAM_TESTS => ( extra_params => { email2 => generate_random_password(100), emaillongdesc2 => 1, }, - } + }, + + # standard pronouns + { field => 'assigned_to', operator => 'equals', value => '%assignee%', + contains => [1,2,3,4,5] }, + { field => 'reporter', operator => 'equals', value => '%reporter%', + contains => [1,2,3,4,5] }, + { field => 'qa_contact', operator => 'equals', value => '%qacontact%', + contains => [1,2,3,4,5] }, + { field => 'cc', operator => 'equals', value => '%user%', + contains => [1] }, + # group pronouns + { field => 'reporter', operator => 'equals', + value => '%group.<1-bug_group>%', contains => [1,2,3,4,5] }, + { field => 'assigned_to', operator => 'equals', + value => '%group.<1-bug_group>%', contains => [1,2,3,4,5] }, + { field => 'qa_contact', operator => 'equals', + value => '%group.<1-bug_group>%', contains => [1,2,3,4] }, + { field => 'cc', operator => 'equals', + value => '%group.<1-bug_group>%', contains => [1,2,3,4] }, + { field => 'commenter', operator => 'equals', + value => '%group.<1-bug_group>%', contains => [1,2,3,4,5] }, ); 1; diff --git a/xt/lib/Bugzilla/Test/Search/FieldTest.pm b/xt/lib/Bugzilla/Test/Search/FieldTest.pm index f73facb19..3e7fd2521 100644 --- a/xt/lib/Bugzilla/Test/Search/FieldTest.pm +++ b/xt/lib/Bugzilla/Test/Search/FieldTest.pm @@ -431,7 +431,13 @@ sub _translate_value_for_bug { $value =~ s/<$number-delta>/$bug_delta/g; my $reporter = $bug->reporter->login; $value =~ s/<$number-reporter>/$reporter/g; - + if ($value =~ /<$number-bug_group>/) { + my @bug_groups = map { $_->name } @{ $bug->groups_in }; + @bug_groups = grep { $_ =~ /^\d+-group-/ } @bug_groups; + my $group = $bug_groups[0]; + $value =~ s/<$number-bug_group>/$group/g; + } + my @bug_values = $self->bug_values($number); return $value if !@bug_values; -- cgit v1.2.1