update t/25backcompat.t, still needs actual tests
[dbsrgits/DBIx-Class-Schema-Loader.git] / t / 25backcompat.t
index 6acc2ed..23d2c3d 100644 (file)
@@ -47,7 +47,7 @@ sub class_content_like;
 {
     my $res = run_loader(naming => 'current');
     is_deeply $res->{warnings}, [], 'no warnings with naming attribute set';
-    run_v7_tests($res);
+    run_v8_tests($res);
 }
 
 # test upgraded dynamic schema with external content loaded
@@ -84,7 +84,7 @@ sub class_content_like;
 'unsingularized class names in external content from unchanged Result class ' .
 'names are translated';
 
-    run_v7_tests($res);
+    run_v8_tests($res);
 }
 
 # test upgraded dynamic schema with use_namespaces with external content loaded
@@ -118,7 +118,7 @@ sub class_content_like;
 'unsingularized class names in external content from unchanged Result class ' .
 'names are translated';
 
-    run_v7_tests($res);
+    run_v8_tests($res);
 }
 
 # test upgraded static schema with external content loaded
@@ -135,7 +135,7 @@ sub class_content_like;
     my $res = run_loader(static => 1, naming => 'current');
     my $schema = $res->{schema};
 
-    run_v7_tests($res);
+    run_v8_tests($res);
 
     lives_and { is $schema->resultset('Quux')->find(1)->a_method, 'hlagh' }
 'external custom content for unsingularized Result was loaded by upgraded ' .
@@ -203,7 +203,7 @@ sub class_content_like;
 'correct number of warnings on upgrading static schema (with "naming" set)'
         or diag @{ $res->{warnings} };
 
-    run_v7_tests($res);
+    run_v8_tests($res);
 
     is result_count('Result'), $RESULT_COUNT,
         'un-singularized results were replaced during upgrade';
@@ -267,7 +267,7 @@ sub class_content_like;
 'correct number of warnings on upgrading static schema (with "naming" set)'
         or diag @{ $res->{warnings} };
 
-    run_v7_tests($res);
+    run_v8_tests($res);
 
     is result_count(), $RESULT_COUNT,
         'un-singularized results were replaced during upgrade';
@@ -341,7 +341,7 @@ sub class_content_like;
 'correct number of warnings on upgrading static schema (with "naming" set)'
         or diag @{ $res->{warnings} };
 
-    run_v7_tests($res);
+    run_v8_tests($res);
 
     is result_count(), $RESULT_COUNT,
 'un-singularized results were replaced during upgrade and Result dir removed';
@@ -386,6 +386,7 @@ sub class_content_like;
         clean_dumpdir => 1,
         static => 1,
         use_namespaces => 0,
+        naming => 'current',
     );
 
     like $res->{warnings}[0], qr/Dumping manual schema/i,
@@ -398,7 +399,7 @@ sub class_content_like;
 'correct number of warnings on dumping static schema with use_namespaces => 0'
         or diag @{ $res->{warnings} };
 
-    run_v7_tests($res);
+    run_v8_tests($res);
 
     my $schema   = $res->{schema};
     add_custom_content($res->{schema}, {
@@ -407,7 +408,7 @@ sub class_content_like;
 
     # test that with no use_namespaces option, there is a warning and
     # load_classes is preserved
-    $res = run_loader(static => 1);
+    $res = run_loader(static => 1, naming => 'current');
 
     like $res->{warnings}[0], qr/load_classes/i,
 'correct warnings on re-dumping static schema with load_classes';
@@ -425,12 +426,13 @@ sub class_content_like;
     is $res->{classes}{quuxs}, 'DBIXCSL_Test::Schema::Quux',
         'load_classes preserved on re-dump';
 
-    run_v7_tests($res);
+    run_v8_tests($res);
 
     # now upgrade the schema to use_namespaces
     $res = run_loader(
         static => 1,
         use_namespaces => 1,
+        naming => 'current',
     );
     $schema = $res->{schema};
 
@@ -444,7 +446,7 @@ sub class_content_like;
 'correct number of warnings on upgrading to use_namespaces'
         or diag @{ $res->{warnings} };
 
-    run_v7_tests($res);
+    run_v8_tests($res);
 
     my @schema_files = schema_files();
 
@@ -469,7 +471,7 @@ sub class_content_like;
 # test a regular schema with default use_namespaces => 1, redump, and downgrade
 # to load_classes
 {
-    my $res = run_loader(clean_dumpdir => 1, static => 1);
+    my $res = run_loader(clean_dumpdir => 1, static => 1, naming => 'current');
 
     like $res->{warnings}[0], qr/Dumping manual schema/i,
 'correct warnings on dumping static schema';
@@ -481,7 +483,7 @@ sub class_content_like;
 'correct number of warnings on dumping static schema'
         or diag @{ $res->{warnings} };
 
-    run_v7_tests($res);
+    run_v8_tests($res);
 
     is $res->{classes}{quuxs}, 'DBIXCSL_Test::Schema::Result::Quux',
         'defaults to use_namespaces on regular dump';
@@ -489,7 +491,7 @@ sub class_content_like;
     add_custom_content($res->{schema}, { Quux => 'Baz' }, { result_namespace => 'Result' });
 
     # test that with no use_namespaces option, use_namespaces is preserved
-    $res = run_loader(static => 1);
+    $res = run_loader(static => 1, naming => 'current');
 
     like $res->{warnings}[0], qr/Dumping manual schema/i,
 'correct warnings on re-dumping static schema';
@@ -504,12 +506,13 @@ sub class_content_like;
     is $res->{classes}{quuxs}, 'DBIXCSL_Test::Schema::Result::Quux',
         'use_namespaces preserved on re-dump';
 
-    run_v7_tests($res);
+    run_v8_tests($res);
 
     # now downgrade the schema to load_classes
     $res = run_loader(
         static => 1,
         use_namespaces => 0,
+        naming => 'current',
     );
     my $schema = $res->{schema};
 
@@ -523,7 +526,7 @@ sub class_content_like;
 'correct number of warnings on downgrading to load_classes'
         or diag @{ $res->{warnings} };
 
-    run_v7_tests($res);
+    run_v8_tests($res);
 
     is $res->{classes}{quuxs}, 'DBIXCSL_Test::Schema::Quux',
         'load_classes downgrade correct';
@@ -555,6 +558,7 @@ sub class_content_like;
         clean_dumpdir => 1,
         static => 1,
         result_namespace => 'MyResult',
+        naming => 'current',
     );
 
     like $res->{warnings}[0], qr/Dumping manual schema/i,
@@ -567,7 +571,7 @@ sub class_content_like;
 'correct number of warnings on dumping static schema'
         or diag @{ $res->{warnings} };
 
-    run_v7_tests($res);
+    run_v8_tests($res);
 
     is $res->{classes}{quuxs}, 'DBIXCSL_Test::Schema::MyResult::Quux',
         'defaults to use_namespaces and uses custom result_namespace';
@@ -576,7 +580,7 @@ sub class_content_like;
 
     # test that with no use_namespaces option, use_namespaces is preserved, and
     # the custom result_namespace is preserved
-    $res = run_loader(static => 1);
+    $res = run_loader(static => 1, naming => 'current');
 
     like $res->{warnings}[0], qr/Dumping manual schema/i,
 'correct warnings on re-dumping static schema';
@@ -591,12 +595,13 @@ sub class_content_like;
     is $res->{classes}{quuxs}, 'DBIXCSL_Test::Schema::MyResult::Quux',
         'use_namespaces and custom result_namespace preserved on re-dump';
 
-    run_v7_tests($res);
+    run_v8_tests($res);
 
     # now downgrade the schema to load_classes
     $res = run_loader(
         static => 1,
         use_namespaces => 0,
+        naming => 'current',
     );
     my $schema = $res->{schema};
 
@@ -610,7 +615,7 @@ sub class_content_like;
 'correct number of warnings on downgrading to load_classes'
         or diag @{ $res->{warnings} };
 
-    run_v7_tests($res);
+    run_v8_tests($res);
 
     is $res->{classes}{quuxs}, 'DBIXCSL_Test::Schema::Quux',
         'load_classes downgrade correct';
@@ -640,7 +645,7 @@ sub class_content_like;
     clean_dumpdir();
     my $temp_dir = setup_load_external({ Quux => 'Baz', Bar => 'Foo' }, { result_namespace => 'Result' });
 
-    my $res = run_loader(static => 1);
+    my $res = run_loader(static => 1, naming => 'current');
 
     # add some custom content to a Result that will be replaced
     add_custom_content($res->{schema}, { Quux => 'Baz' }, { result_namespace => 'Result', rel_name_map => { QuuxBaz => 'bazrel2' } });
@@ -649,6 +654,7 @@ sub class_content_like;
     $res = run_loader(
         static => 1,
         result_namespace => 'MyResult',
+        naming => 'current',
     );
     my $schema = $res->{schema};
 
@@ -677,6 +683,7 @@ sub class_content_like;
     $res = run_loader(
         static => 1,
         result_namespace => 'Mtfnpy',
+        naming => 'current',
     );
     $schema = $res->{schema};
 
@@ -751,7 +758,7 @@ sub class_content_like;
     # now upgrade the schema
     $res = run_loader(static => 1, naming => 'current');
     $schema = $res->{schema};
-    run_v7_tests($res);
+    run_v8_tests($res);
 
     # check that custom content was preserved
     lives_and { is $schema->resultset('Bar')->find(1)->b_method, 'dongs' }
@@ -795,7 +802,7 @@ sub class_content_like;
     $res = run_loader(static => 1, naming => 'current');
     my $schema = $res->{schema};
 
-    run_v7_tests($res);
+    run_v8_tests($res);
 
     lives_and { is $schema->resultset('Baz')->find(1)->a_method, 'hlagh' }
         'external custom content loaded for v5 -> v6';
@@ -840,7 +847,7 @@ sub class_content_like;
     $res = run_loader(static => 1, naming => 'current');
     my $schema = $res->{schema};
 
-    run_v7_tests($res);
+    run_v8_tests($res);
 
     lives_and { is $schema->resultset('RouteChange')->find(1)->a_method, 'hlagh' }
         'external custom content loaded for v6 -> v7';
@@ -869,6 +876,7 @@ sub run_loader {
     my %loader_opts = @_;
 
     $loader_opts{dump_directory} = $DUMP_DIR if delete $loader_opts{static};
+    $loader_opts{preserve_case}  = 1 if $loader_opts{naming} && $loader_opts{naming} eq 'current';
 
     clean_dumpdir() if delete $loader_opts{clean_dumpdir};
 
@@ -1097,6 +1105,12 @@ sub run_v4_tests {
 
     isa_ok eval { $foo->email_to_ids }, 'DBIx::Class::ResultSet',
         'correct rel name inflection in 0.04006 mode';
+
+    ok (($schema->resultset('Routechange')->find(1)->can('quuxsid')),
+        'correct column accessor in 0.04006 mode');
+
+    is $schema->resultset('Routechange')->find(1)->foo2bar, 3,
+        'correct column accessor for column with word ending with digit in v4 mode';
 }
 
 sub run_v5_tests {
@@ -1121,6 +1135,12 @@ sub run_v5_tests {
 
     isa_ok eval { $foo->email_to_ids }, 'DBIx::Class::ResultSet',
         'correct rel name inflection in v5 mode';
+
+    ok (($schema->resultset('Routechange')->find(1)->can('quuxsid')),
+        'correct column accessor in v5 mode');
+
+    is $schema->resultset('Routechange')->find(1)->foo2bar, 3,
+        'correct column accessor for column with word ending with digit in v5 mode';
 }
 
 sub run_v6_tests {
@@ -1145,6 +1165,17 @@ sub run_v6_tests {
 
     isa_ok eval { $foo->emails_to }, 'DBIx::Class::ResultSet',
         'correct rel name inflection in v6 mode';
+
+    ok my $route_change = eval { $schema->resultset('Routechange')->find(1) };
+
+    isa_ok eval { $route_change->quuxsid }, $res->{classes}{quuxs},
+        'correct rel name in v6 mode';
+
+    ok (($schema->resultset('Routechange')->find(1)->can('quuxsid')),
+        'correct column accessor in v6 mode');
+
+    is $schema->resultset('Routechange')->find(1)->foo2bar, 3,
+        'correct column accessor for column with word ending with digit in v6 mode';
 }
 
 sub run_v7_tests {
@@ -1169,6 +1200,52 @@ sub run_v7_tests {
 
     isa_ok eval { $foo->emails_to }, 'DBIx::Class::ResultSet',
         'correct rel name inflection in current mode';
+
+    ok my $route_change = eval { $schema->resultset('RouteChange')->find(1) };
+
+    isa_ok eval { $route_change->quux }, $res->{classes}{quuxs},
+        'correct rel name based on mixed-case column name in current mode';
+
+    ok (($schema->resultset('RouteChange')->find(1)->can('quuxs_id')),
+        'correct column accessor in current mode');
+
+    is $schema->resultset('RouteChange')->find(1)->foo2_bar, 3,
+        'correct column accessor for column with word ending with digit in current mode';
+}
+
+sub run_v8_tests {
+    my $res = shift;
+    my $schema = $res->{schema};
+
+    is_deeply [ @{ $res->{monikers} }{qw/foos bar bazs quuxs stations_visited RouteChange email/} ],
+        [qw/Foo Bar Baz Quux StationVisited RouteChange Email/],
+        'correct monikers in current mode';
+
+    ok my $bar = eval { $schema->resultset('Bar')->find(1) };
+
+    isa_ok eval { $bar->foo }, $res->{classes}{foos},
+        'correct rel name in current mode';
+
+    ok my $baz  = eval { $schema->resultset('Baz')->find(1) };
+
+    isa_ok eval { $baz->quux }, $res->{classes}{quuxs},
+        'correct rel type and name for UNIQUE FK in current mode';
+
+    ok my $foo = eval { $schema->resultset('Foo')->find(1) };
+
+    isa_ok eval { $foo->emails_to }, 'DBIx::Class::ResultSet',
+        'correct rel name inflection in current mode';
+
+    ok my $route_change = eval { $schema->resultset('RouteChange')->find(1) };
+
+    isa_ok eval { $route_change->quux }, $res->{classes}{quuxs},
+        'correct rel name based on mixed-case column name in current mode';
+
+    ok (($schema->resultset('RouteChange')->find(1)->can('quuxs_id')),
+        'correct column accessor in current mode');
+
+    is $schema->resultset('RouteChange')->find(1)->foo2_bar, 3,
+        'correct column accessor for column with word ending with digit in current mode';
 }
 
 {
@@ -1251,7 +1328,7 @@ sub _rel_condition {
         BarFoo  => q{'foreign.fooid'   => 'self.foo_id'},
         BazStationsvisited => q{'foreign.id' => 'self.stations_visited_id'},
         StationsvisitedQuux => q{'foreign.quuxid' => 'self.quuxs_id'},
-        RoutechangeQuux => q{'foreign.quuxid' => 'self.quuxs_id'},
+        RoutechangeQuux => q{'foreign.quuxid' => 'self.QuuxsId'},
     }->{_rel_key($from, $to)};
 }