Centralize remaining uses of Sub::Name within _Util
[dbsrgits/DBIx-Class.git] / t / 72pg.t
index e03cd2b..6c2545f 100644 (file)
--- a/t/72pg.t
+++ b/t/72pg.t
@@ -1,3 +1,4 @@
+BEGIN { do "./t/lib/ANFANG.pm" or die ( $@ || $! ) }
 use DBIx::Class::Optional::Dependencies -skip_all_without => 'test_rdbms_pg';
 
 use strict;
@@ -5,13 +6,11 @@ use warnings;
 
 use Test::More;
 use Test::Exception;
-use Sub::Name;
+use Test::Warn;
 use Config;
-use DBIx::Class::Optional::Dependencies ();
-use lib qw(t/lib);
 use DBICTest;
 use SQL::Abstract 'is_literal_value';
-use DBIx::Class::_Util 'is_exception';
+use DBIx::Class::_Util qw( is_exception set_subname );
 
 my ($dsn, $user, $pass) = @ENV{map { "DBICTEST_PG_${_}" } qw/DSN USER PASS/};
 
@@ -82,7 +81,7 @@ for my $use_insert_returning ($test_server_supports_insert_returning
 
   no warnings qw/once redefine/;
   my $old_connection = DBICTest::Schema->can('connection');
-  local *DBICTest::Schema::connection = subname 'DBICTest::Schema::connection' => sub {
+  local *DBICTest::Schema::connection = set_subname 'DBICTest::Schema::connection' => sub {
     my $s = shift->$old_connection(@_);
     $s->storage->_use_insert_returning ($use_insert_returning);
     $s;
@@ -485,7 +484,24 @@ lives_ok { $cds->update({ year => '2010' }) } 'Update on prefetched rs';
     $schema->resultset('Track')->create({
       trackid => 1, cd => 9999, position => 1, title => 'Track1'
     });
-  } qr/constraint/i, 'with_deferred_fk_checks is off';
+  } qr/violates foreign key constraint/i, 'with_deferred_fk_checks is off outside of TXN';
+
+  # rerun the same under with_deferred_fk_checks
+  # it is expected to fail, hence the eval
+  # but it also should not warn
+  warnings_like {
+    eval {
+      $schema->storage->with_deferred_fk_checks(sub {
+        $schema->resultset('Track')->create({
+          trackid => 1, cd => 9999, position => 1, title => 'Track1'
+        });
+      } )
+    };
+
+    like $@, qr/violates foreign key constraint/i,
+      "Still expected exception on deferred failure at commit time";
+
+  } [], 'No warnings on deferred rollback';
 }
 
 done_testing;