That should be all
[dbsrgits/DBIx-Class-Historic.git] / t / 746mssql.t
index 452dfcd..a958986 100644 (file)
@@ -4,13 +4,14 @@ use warnings;
 use Test::More;
 use lib qw(t/lib);
 use DBICTest;
+use DBIC::SqlMakerTest;
 
 my ($dsn, $user, $pass) = @ENV{map { "DBICTEST_MSSQL_ODBC_${_}" } qw/DSN USER PASS/};
 
 plan skip_all => 'Set $ENV{DBICTEST_MSSQL_ODBC_DSN}, _USER and _PASS to run this test'
   unless ($dsn && $user);
 
-plan tests => 21;
+plan tests => 25;
 
 my $schema = DBICTest::Schema->connect($dsn, $user, $pass);
 
@@ -47,7 +48,7 @@ SQL
 my %seen_id;
 
 # fresh $schema so we start unconnected
-$schema = DBICTest::Schema->connect($dsn, $user, $pass, {AutoCommit => 1});
+$schema = DBICTest::Schema->connect($dsn, $user, $pass);
 
 # test primary key handling
 my $new = $schema->resultset('Artist')->create({ name => 'foo' });
@@ -153,6 +154,24 @@ $schema->populate ('BooksInLibrary', [
     local $TODO = 'limit past end of resultset problem';
     is ($owners->page(3)->all, 2, 'has_many prefetch returns correct number of rows');
     is ($owners->page(3)->count, 2, 'has-many prefetch returns correct count');
+    is ($owners->page(3)->count_rs->next, 2, 'has-many prefetch returns correct count_rs');
+
+    # make sure count does not become overly complex FIXME
+    is_same_sql_bind (
+      $owners->page(3)->count_rs->as_query,
+      '(
+        SELECT COUNT( * )
+          FROM (
+            SELECT TOP 3 me.id
+              FROM owners me
+              LEFT JOIN books books ON books.owner = me.id
+            WHERE ( books.id IS NOT NULL )
+            GROUP BY me.id
+            ORDER BY me.id DESC
+          ) count_subq
+      )',
+      [],
+    );
   }
 
   # try a ->belongs_to direction (no select collapse, group_by should work)
@@ -173,7 +192,30 @@ $schema->populate ('BooksInLibrary', [
     local $TODO = 'limit past end of resultset problem';
     is ($books->page(2)->all, 1, 'Prefetched grouped search returns correct number of rows');
     is ($books->page(2)->count, 1, 'Prefetched grouped search returns correct count');
+    is ($books->page(2)->count_rs->next, 1, 'Prefetched grouped search returns correct count_rs');
+
+    # make sure count does not become overly complex FIXME
+    is_same_sql_bind (
+      $books->page(2)->count_rs->as_query,
+      '(
+        SELECT COUNT( * )
+          FROM (
+            SELECT TOP 2 me.id
+              FROM books me
+              JOIN owners owner ON owner.id = me.owner
+            WHERE ( ( ( owner.name = ? OR owner.name = ? ) AND source = ? ) )
+            GROUP BY me.id, me.source, me.owner, me.title, me.price, owner.id, owner.name
+            ORDER BY me.id DESC
+          ) count_subq
+      )',
+      [
+        [ 'owner.name' => 'wiggle' ],
+        [ 'owner.name' => 'woggle' ],
+        [ 'source' => 'Library' ],
+      ],
+    );
   }
+
 }
 
 # clean up our mess