cleanup test by wreis
[dbsrgits/DBIx-Class.git] / t / sqlahacks / order_by_func.t
index 51968ed..1caac14 100644 (file)
@@ -7,29 +7,45 @@ use DBICTest;
 use DBIC::SqlMakerTest;
 
 my $schema = DBICTest->init_schema();
+$schema->storage->sql_maker->quote_char ('"');
+$schema->storage->sql_maker->name_sep ('.');
 
 my $rs = $schema->resultset('CD')->search({}, {
     'join' => 'tracks',
-    order_by => {
+    order_by => [
+      { -length => 'me.title' },
+      {
         -desc => {
-            count => 'tracks.track_id',
+            count => 'tracks.trackid',
         },
-    },
+      },
+    ],
     distinct => 1,
     rows => 2,
-    page => 1,
+    page => 2,
 });
-my $match = q{
-    SELECT me.cdid, me.artist, me.title, me.year, me.genreid, me.single_track FROM cd me
-    GROUP BY me.cdid, me.artist, me.title, me.year, me.genreid, me.single_track
-    ORDER BY COUNT(tracks.trackid) DESC
-};
 
-TODO: {
-    todo_skip 'order_by using function', 2;
-    is_same_sql($rs->as_query, $match, 'order by with func query');
+is_same_sql_bind(
+  $rs->as_query,
+  '(
+    SELECT "me"."cdid", "me"."artist", "me"."title", "me"."year", "me"."genreid", "me"."single_track"
+      FROM cd "me"
+      LEFT JOIN "track" "tracks" ON "tracks"."cd" = "me"."cdid"
+    GROUP BY "me"."cdid", "me"."artist", "me"."title", "me"."year", "me"."genreid", "me"."single_track"
+    ORDER BY
+      LENGTH( "me"."title" ),
+      COUNT( "tracks"."trackid" ) DESC
+    LIMIT 2 OFFSET 2
+  )',
+  [],
+  'order by with func query',
+);
 
-    ok($rs->count == 2, 'amount of rows return in order by func query');
-}
+ok($rs->count_rs->next == 2, 'amount of rows return in order by func query');
+is_deeply (
+  [ $rs->get_column ('me.title')->all ],
+  [ "Caterwaulin' Blues", "Come Be Depressed With Us" ],
+  'Correctly ordered stuff by title-length',
+);
 
 done_testing;