[Rt-commit] r4503 - rt/branches/3.5-TESTING/lib/RT

ruz at bestpractical.com ruz at bestpractical.com
Wed Feb 8 05:29:34 EST 2006


Author: ruz
Date: Wed Feb  8 05:29:33 2006
New Revision: 4503

Modified:
   rt/branches/3.5-TESTING/lib/RT/Tickets_Overlay.pm
   rt/branches/3.5-TESTING/lib/RT/Tickets_Overlay_SQL.pm

Log:
* make tests reintrant in lib/RT/Tickets_Overlay_SQL.pm
* queries changes broke several things, for example
  "id = 123 OR MemberOf = 123", all breakages covered allready
  in tests.


Modified: rt/branches/3.5-TESTING/lib/RT/Tickets_Overlay.pm
==============================================================================
--- rt/branches/3.5-TESTING/lib/RT/Tickets_Overlay.pm	(original)
+++ rt/branches/3.5-TESTING/lib/RT/Tickets_Overlay.pm	Wed Feb  8 05:29:33 2006
@@ -370,33 +370,43 @@
 #                                      AND(main.id = Links_1.LocalTarget))
 #        WHERE Links_1.LocalBase IS NULL;
 
-    my $linkalias = $sb->Join(
-        TYPE   => ($is_null || $is_negative)? 'LEFT': 'NORMAL',
-        ALIAS1 => 'main',
-        FIELD1 => 'id',
-        TABLE2 => 'Links',
-        FIELD2 => 'Local' . $linkfield
-    );
-    $sb->_OpenParen();
-    $sb->SUPER::Limit(
-        @rest,
-        ($is_null || $is_negative)? (LEFTJOIN => $linkalias): (),
-        FIELD    => 'Type',
-        OPERATOR => '=',
-        VALUE    => $meta->[2],
-    );
     if ($is_null) {
-
+        my $linkalias = $sb->Join(
+            TYPE   => 'LEFT',
+            ALIAS1 => 'main',
+            FIELD1 => 'id',
+            TABLE2 => 'Links',
+            FIELD2 => 'Local' . $linkfield
+        );
+        $sb->SUPER::Limit(
+            LEFTJOIN => $linkalias,
+            FIELD    => 'Type',
+            OPERATOR => '=',
+            VALUE    => $meta->[2],
+        );
         $sb->_SQLLimit(
-            ALIAS           => $linkalias,
-            ENTRYAGGREGATOR => 'AND',
-            FIELD           => $matchfield,
-            OPERATOR        => $op,
-            VALUE           => 'NULL',
-            QUOTEVALUE      => 0,
+            @rest,
+            ALIAS      => $linkalias,
+            FIELD      => $matchfield,
+            OPERATOR   => $op,
+            VALUE      => 'NULL',
+            QUOTEVALUE => 0,
         );
     }
     elsif ( $is_negative ) {
+        my $linkalias = $sb->Join(
+            TYPE   => 'LEFT',
+            ALIAS1 => 'main',
+            FIELD1 => 'id',
+            TABLE2 => 'Links',
+            FIELD2 => 'Local' . $linkfield
+        );
+        $sb->SUPER::Limit(
+            LEFTJOIN => $linkalias,
+            FIELD    => 'Type',
+            OPERATOR => '=',
+            VALUE    => $meta->[2],
+        );
         $sb->SUPER::Limit(
             LEFTJOIN => $linkalias,
             FIELD    => $matchfield,
@@ -404,27 +414,41 @@
             VALUE    => $value,
         );
         $sb->_SQLLimit(
-            ALIAS           => $linkalias,
-            ENTRYAGGREGATOR => 'AND',
-            FIELD           => $matchfield,
-            OPERATOR        => 'IS',
-            VALUE           => 'NULL',
-            QUOTEVALUE      => 0,
+            @rest,
+            ALIAS      => $linkalias,
+            FIELD      => $matchfield,
+            OPERATOR   => 'IS',
+            VALUE      => 'NULL',
+            QUOTEVALUE => 0,
         );
     }
     else {
-
-
+        my $linkalias = $sb->NewAlias('Links');
+        $sb->_OpenParen();
+        $sb->_SQLLimit(
+            @rest,
+            ALIAS    => $linkalias,
+            FIELD    => 'Type',
+            OPERATOR => '=',
+            VALUE    => $meta->[2],
+        );
         $sb->_SQLLimit(
             ALIAS           => $linkalias,
+            FIELD           => 'Local' . $linkfield,
+            OPERATOR        => '=',
+            VALUE           => 'main.id',
+            QUOTEVALUE      => 0,
             ENTRYAGGREGATOR => 'AND',
-            FIELD    => $matchfield,
-            OPERATOR => $op,
-            VALUE    => $value,
         );
-
+        $sb->_SQLLimit(
+            ALIAS           => $linkalias,
+            FIELD           => $matchfield,
+            OPERATOR        => $op,
+            VALUE           => $value,
+            ENTRYAGGREGATOR => 'AND',
+        );
+        $sb->_CloseParen();
     }
-    $sb->_CloseParen();
 }
 
 =head2 _DateLimit

Modified: rt/branches/3.5-TESTING/lib/RT/Tickets_Overlay_SQL.pm
==============================================================================
--- rt/branches/3.5-TESTING/lib/RT/Tickets_Overlay_SQL.pm	(original)
+++ rt/branches/3.5-TESTING/lib/RT/Tickets_Overlay_SQL.pm	Wed Feb  8 05:29:33 2006
@@ -403,66 +403,66 @@
 =begin testing
 
 use RT::Tickets;
-
-
+use strict;
 
 my $tix = RT::Tickets->new($RT::SystemUser);
+{
+    my $query = "Status = 'open'";
+    my ($status, $msg)  = $tix->FromSQL($query);
+    ok ($status, "correct query") or diag("error: $msg");
+}
 
-my $query = "Status = 'open'";
-my ($id, $msg)  = $tix->FromSQL($query);
-
-ok ($id, $msg);
-
-
-my (@ids, @expectedids);
-
-my $t = RT::Ticket->new($RT::SystemUser);
 
+my (@created,%created);
 my $string = 'subject/content SQL test';
-ok( $t->Create(Queue => 'General', Subject => $string), "Ticket Created");
-
-push @ids, $t->Id;
-
-my $Message = MIME::Entity->build(
-			     Subject     => 'this is my subject',
-			     From        => 'jesse at example.com',
-			     Data        => [ $string ],
-        );
-
-ok( $t->Create(Queue => 'General', Subject => 'another ticket', MIMEObj => $Message, MemberOf => $ids[0]), "Ticket Created");
-
-push @ids, $t->Id;
-
-$query = ("Subject LIKE '$string' OR Content LIKE '$string'");
-
-my ($id, $msg) = $tix->FromSQL($query);
-
-
-ok ($id, $msg);
-
-is ($tix->Count, scalar @ids, "number of returned tickets same as entered");
-while (my $tick = $tix->Next) {
-    push @expectedids, $tick->Id;
+{
+    my $t = RT::Ticket->new($RT::SystemUser);
+    ok( $t->Create(Queue => 'General', Subject => $string), "Ticket Created");
+    $created{ $t->Id }++; push @created, $t->Id;
 }
-ok (eq_array(\@ids, \@expectedids), "returned expected tickets");
-#
-$query = ("id = $ids[0] OR MemberOf = $ids[0]");
-
-my ($id, $msg) = $tix->FromSQL($query);
-
-ok ($id, $msg);
 
-is ($tix->Count, scalar @ids, "number of returned tickets same as entered");
-
-my ($id, $msg) = $tix->FromSQL($query);
- at expectedids = ();
+{
+    my $Message = MIME::Entity->build(
+                     Subject     => 'this is my subject',
+                     From        => 'jesse at example.com',
+                     Data        => [ $string ],
+            );
+
+    my $t = RT::Ticket->new($RT::SystemUser);
+    ok( $t->Create( Queue => 'General',
+                    Subject => 'another ticket',
+                    MIMEObj => $Message,
+                    MemberOf => $created[0]
+                  ),
+        "Ticket Created"
+    );
+    $created{ $t->Id }++; push @created, $t->Id;
+}
 
+{
+    my $query = ("Subject LIKE '$string' OR Content LIKE '$string'");
+    my ($status, $msg) = $tix->FromSQL($query);
+    ok ($status, "correct query") or diag("error: $msg");
+
+    my $count = 0;
+    while (my $tick = $tix->Next) {
+        $count++ if $created{ $tick->id };
+    }
+    is ($count, scalar @created, "number of returned tickets same as entered");
+}
 
-while (my $tick = $tix->Next) {
-    push @expectedids, $tick->Id;
+{
+    my $query = "id = $created[0] OR MemberOf = $created[0]";
+    my ($status, $msg) = $tix->FromSQL($query);
+    ok ($status, "correct query") or diag("error: $msg");
+
+    my $count = 0;
+    while (my $tick = $tix->Next) {
+        $count++ if $created{ $tick->id };
+    }
+    is ($count, scalar @created, "number of returned tickets same as entered");
 }
 
-ok (eq_array(\@ids, \@expectedids), "returned expected tickets". join(",", at ids) . "==".join(",", at expectedids));
 
 =end testing
 


More information about the Rt-commit mailing list