X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=rt%2Ft%2Fticket%2Fsearch_by_watcher.t;h=4fbc2617bbbeda93def736c04bcf94e26efe2c7f;hb=919e930aa9279b3c5cd12b593889cd6de79d67bf;hp=809450b56e6ee8fe4f3b541ae732082e976b0057;hpb=a6fe07e49e3fc12169e801b1ed6874c3a5bd8500;p=freeside.git diff --git a/rt/t/ticket/search_by_watcher.t b/rt/t/ticket/search_by_watcher.t index 809450b56..4fbc2617b 100644 --- a/rt/t/ticket/search_by_watcher.t +++ b/rt/t/ticket/search_by_watcher.t @@ -1,9 +1,8 @@ -#!/usr/bin/perl -w use strict; use warnings; -use RT::Test nodata => 1, tests => 2108; +use RT::Test nodata => 1, tests => undef; use RT::Ticket; my $q = RT::Test->load_or_create_queue( Name => 'Regression' ); @@ -102,48 +101,49 @@ sub run_auto_tests { run_test( $query, %checks ); } } } -# XXX: It -# @queries = ( -# '? AND ? AND ?' => sub { $_[0] and $_[1] and $_[2] }, -# '(? OR ?) AND ?' => sub { return (($_[0] or $_[1]) and $_[2]) }, -# '? OR (? AND ?)' => sub { $_[0] or ($_[1] and $_[2]) }, -# '(? AND ?) OR ?' => sub { ($_[0] and $_[1]) or $_[2] }, -# '? AND (? OR ?)' => sub { $_[0] and ($_[1] or $_[2]) }, -# '? OR ? OR ?' => sub { $_[0] or $_[1] or $_[2] }, -# ); -# while ( my ($template, $t_cb) = splice @queries, 0, 2 ) { -# my @atmp = @conditions; -# while ( my ($a, $a_cb) = splice @atmp, 0, 2 ) { -# my @btmp = @conditions; -# while ( my ($b, $b_cb) = splice @btmp, 0, 2 ) { -# next if $a eq $b; -# my @ctmp = @conditions; -# while ( my ($c, $c_cb) = splice @ctmp, 0, 2 ) { -# next if $a eq $c; -# next if $b eq $c; -# -# my %checks = (); -# foreach my $ticket ( @tickets ) { -# my $s = $ticket->Subject; -# $checks{ $s } = $t_cb->( scalar $a_cb->($s), scalar $b_cb->($s), scalar $c_cb->($s) ); -# } -# -# my $query = $template; -# foreach my $tmp ($a, $b, $c) { -# $query =~ s/\?/$tmp/; -# } -# -# run_test( $query, %checks ); -# } } } -# } + return unless $ENV{'RT_TEST_HEAVY'}; + + @queries = ( + '? AND ? AND ?' => sub { $_[0] and $_[1] and $_[2] }, + '(? OR ?) AND ?' => sub { return (($_[0] or $_[1]) and $_[2]) }, + '? OR (? AND ?)' => sub { $_[0] or ($_[1] and $_[2]) }, + '(? AND ?) OR ?' => sub { ($_[0] and $_[1]) or $_[2] }, + '? AND (? OR ?)' => sub { $_[0] and ($_[1] or $_[2]) }, + '? OR ? OR ?' => sub { $_[0] or $_[1] or $_[2] }, + ); + while ( my ($template, $t_cb) = splice @queries, 0, 2 ) { + my @atmp = @conditions; + while ( my ($a, $a_cb) = splice @atmp, 0, 2 ) { + my @btmp = @conditions; + while ( my ($b, $b_cb) = splice @btmp, 0, 2 ) { + next if $a eq $b; + my @ctmp = @conditions; + while ( my ($c, $c_cb) = splice @ctmp, 0, 2 ) { + next if $a eq $c; + next if $b eq $c; + + my %checks = (); + foreach my $ticket ( @tickets ) { + my $s = $ticket->Subject; + $checks{ $s } = $t_cb->( scalar $a_cb->($s), scalar $b_cb->($s), scalar $c_cb->($s) ); + } + + my $query = $template; + foreach my $tmp ($a, $b, $c) { + $query =~ s/\?/$tmp/; + } + + run_test( $query, %checks ); + } } } + } } @conditions = ( 'Cc = "not@exist"' => sub { 0 }, 'Cc != "not@exist"' => sub { 1 }, - 'Cc IS NULL' => sub { $_[0] =~ 'c:-;' }, - 'Cc IS NOT NULL' => sub { $_[0] !~ 'c:-;' }, + 'Cc IS NULL' => sub { $_[0] =~ /c:-;/ }, + 'Cc IS NOT NULL' => sub { $_[0] !~ /c:-;/ }, 'Cc = "x@foo.com"' => sub { $_[0] =~ /c:[^;]*x/ }, 'Cc != "x@foo.com"' => sub { $_[0] !~ /c:[^;]*x/ }, 'Cc LIKE "@bar.com"' => sub { $_[0] =~ /c:[^;]*(?:y|z)/ }, @@ -152,8 +152,8 @@ sub run_auto_tests { 'Requestor = "not@exist"' => sub { 0 }, 'Requestor != "not@exist"' => sub { 1 }, - 'Requestor IS NULL' => sub { $_[0] =~ 'r:-;' }, - 'Requestor IS NOT NULL' => sub { $_[0] !~ 'r:-;' }, + 'Requestor IS NULL' => sub { $_[0] =~ /r:-;/ }, + 'Requestor IS NOT NULL' => sub { $_[0] !~ /r:-;/ }, 'Requestor = "x@foo.com"' => sub { $_[0] =~ /r:[^;]*x/ }, 'Requestor != "x@foo.com"' => sub { $_[0] !~ /r:[^;]*x/ }, 'Requestor LIKE "@bar.com"' => sub { $_[0] =~ /r:[^;]*(?:y|z)/ }, @@ -174,7 +174,7 @@ sub run_auto_tests { 'Subject LIKE "ne"' => sub { 0 }, 'Subject NOT LIKE "ne"' => sub { 1 }, 'Subject = "r:x;c:y;"' => sub { $_[0] eq 'r:x;c:y;' }, - 'Subject LIKE "x"' => sub { $_[0] =~ 'x' }, + 'Subject LIKE "x"' => sub { $_[0] =~ /x/ }, ); @tickets = generate_tix(); @@ -267,4 +267,4 @@ my $nobody = RT::Nobody(); } @tickets = (); - +done_testing();