Added missing space in error message
[dbsrgits/DBIx-Class-Schema-Loader.git] / t / lib / dbixcsl_common_tests.pm
index 32c9076..d1a66fd 100644 (file)
@@ -34,10 +34,16 @@ sub skip_tests {
     plan skip_all => $why;
 }
 
+sub _monikerize {
+    my $name = shift;
+    return 'LoaderTest2X' if $name =~ /^loader_test2$/i;
+    return undef;
+}
+
 sub run_tests {
     my $self = shift;
 
-    plan tests => 50;
+    plan tests => 54;
 
     $self->create();
 
@@ -46,16 +52,17 @@ sub run_tests {
     my $debug = ($self->{verbose} > 1) ? 1 : 0;
 
     my %loader_opts = (
-        dsn                     => $self->{dsn},
-        user                    => $self->{user},
-        password                => $self->{password},
+        connect_info            => [ $self->{dsn}, $self->{user},
+                                     $self->{password} ],
         constraint              => '^(?:\S+\.)?(?i:loader_test)[0-9]+$',
         relationships           => 1,
         additional_classes      => 'TestAdditional',
         additional_base_classes => 'TestAdditionalBase',
         left_base_classes       => [ qw/TestLeftBase/ ],
-       components              => [ qw/TestComponent/ ],
-       resultset_components    => [ qw/TestRSComponent/ ],
+        components              => [ qw/TestComponent/ ],
+        resultset_components    => [ qw/TestRSComponent/ ],
+        inflect_map             => { loader_test4 => 'loader_test4zes' },
+        moniker_map             => \&_monikerize,
         debug                   => $debug,
     );
 
@@ -85,58 +92,65 @@ sub run_tests {
     isa_ok( $rsobj1, "DBIx::Class::ResultSet" );
     isa_ok( $rsobj2, "DBIx::Class::ResultSet" );
 
+    is($moniker2, 'LoaderTest2X', "moniker_map testing");
+
     {
         my ($skip_tab, $skip_tabo, $skip_taba, $skip_cmeth,
-           $skip_rsmeth, $skip_tcomp, $skip_trscomp);
+            $skip_rsmeth, $skip_tcomp, $skip_trscomp);
 
         can_ok( $class1, 'test_additional_base' ) or $skip_tab = 1;
         can_ok( $class1, 'test_additional_base_override' ) or $skip_tabo = 1;
         can_ok( $class1, 'test_additional_base_additional' ) or $skip_taba = 1;
-       can_ok( $class1, 'dbix_class_testcomponent' ) or $skip_tcomp = 1;
-       can_ok( $class1, 'dbix_class_testrscomponent' ) or $skip_trscomp = 1;
+        can_ok( $class1, 'dbix_class_testcomponent' ) or $skip_tcomp = 1;
+        can_ok( $rsobj1, 'dbix_class_testrscomponent' ) or $skip_trscomp = 1;
         can_ok( $class1, 'loader_test1_classmeth' ) or $skip_cmeth = 1;
-        can_ok( $rsobj1, 'loader_test1_rsmeth' ) or $skip_rsmeth = 1;
+
+        TODO: {
+            local $TODO = "Not yet supported by ResultSetManger code";
+            can_ok( $rsobj1, 'loader_test1_rsmeth' ) or $skip_rsmeth = 1;
+        }
 
         SKIP: {
-           skip "Pre-requisite test failed", 1 if $skip_tab;
+            skip "Pre-requisite test failed", 1 if $skip_tab;
             is( $class1->test_additional_base, "test_additional_base",
                 "Additional Base method" );
-       }
+        }
 
         SKIP: {
-           skip "Pre-requisite test failed", 1 if $skip_tabo;
+            skip "Pre-requisite test failed", 1 if $skip_tabo;
             is( $class1->test_additional_base_override,
-               "test_left_base_override",
+                "test_left_base_override",
                 "Left Base overrides Additional Base method" );
         }
 
         SKIP: {
-           skip "Pre-requisite test failed", 1 if $skip_taba;
+            skip "Pre-requisite test failed", 1 if $skip_taba;
             is( $class1->test_additional_base_additional, "test_additional",
                 "Additional Base can use Additional package method" );
         }
 
-       SKIP: {
-           skip "Pre-requisite test failed", 1 if $skip_tcomp;
+        SKIP: {
+            skip "Pre-requisite test failed", 1 if $skip_tcomp;
             is( $class1->dbix_class_testcomponent,
-               'dbix_class_testcomponent works' );
-       }
+                'dbix_class_testcomponent works' );
+        }
 
-       SKIP: {
-           skip "Pre-requisite test failed", 1 if $skip_trscomp;
+        SKIP: {
+            skip "Pre-requisite test failed", 1 if $skip_trscomp;
             is( $rsobj1->dbix_class_testrscomponent,
-               'dbix_class_testrscomponent works' );
-       }
+                'dbix_class_testrscomponent works' );
+        }
 
-       SKIP: {
-           skip "Pre-requisite test failed", 1 if $skip_cmeth;
+        SKIP: {
+            skip "Pre-requisite test failed", 1 if $skip_cmeth;
             is( $class1->loader_test1_classmeth, 'all is well' );
-       }
+        }
 
-       SKIP: {
-           skip "Pre-requisite test failed", 1 if $skip_rsmeth;
-            is( $rsobj1->loader_test1_rsmeth, 'all is still well' );
-       }
+        # XXX put this back in when the TODO above works...
+        #SKIP: {
+        #    skip "Pre-requisite test failed", 1 if $skip_rsmeth;
+        #    is( $rsobj1->loader_test1_rsmeth, 'all is still well' );
+        #}
     }
 
 
@@ -144,6 +158,17 @@ sub run_tests {
     is( $obj->id,  1 );
     is( $obj->dat, "foo" );
     is( $rsobj2->count, 4 );
+    my $saved_id;
+    eval {
+        my $new_obj1 = $rsobj1->create({ dat => 'newthing' });
+       $saved_id = $new_obj1->id;
+    };
+    ok(!$@) or diag "Died during create new record using a PK::Auto key: $@";
+    ok($saved_id) or diag "Failed to get PK::Auto-generated id";
+
+    my $new_obj1 = $rsobj1->search({ dat => 'newthing' })->first;
+    ok($new_obj1) or diag "Cannot find newly inserted PK::Auto record";
+    is($new_obj1->id, $saved_id);
 
     my ($obj2) = $rsobj2->find( dat => 'bbb' );
     is( $obj2->id, 2 );
@@ -191,9 +216,9 @@ sub run_tests {
         my $obj4 = $rsobj4->find(123);
         isa_ok( $obj4->fkid, $class3);
 
-       my $obj3 = $rsobj3->find(1);
-       my $rs_rel4 = $obj3->search_related('loader_test4s');
-       isa_ok( $rs_rel4->first, $class4);
+        my $obj3 = $rsobj3->find(1);
+        my $rs_rel4 = $obj3->search_related('loader_test4zes');
+        isa_ok( $rs_rel4->first, $class4);
 
         # fk def in comments should not be parsed
         my $obj5 = $rsobj5->find( id1 => 1, id2 => 1 );