X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F25backcompat.t;h=57a9c04ebb2a6a3b74923f33fa1ca723dc8abd27;hb=e238996895ab47aaf7fa837eff1d86f3c2c8db20;hp=6acc2ed2c57a822b824ab926f3ada4f89ea66448;hpb=9990e58f49603b81e3c1195c0e83595b0333c8df;p=dbsrgits%2FDBIx-Class-Schema-Loader.git diff --git a/t/25backcompat.t b/t/25backcompat.t index 6acc2ed..57a9c04 100644 --- a/t/25backcompat.t +++ b/t/25backcompat.t @@ -6,13 +6,14 @@ use File::Path qw/rmtree make_path/; use Class::Unload; use File::Temp qw/tempfile tempdir/; use IO::File; -use File::Slurp 'slurp'; use DBIx::Class::Schema::Loader (); +use DBIx::Class::Schema::Loader::Utils 'slurp_file'; use Lingua::EN::Inflect::Number (); use lib qw(t/lib); use make_dbictest_db_with_unique; +use dbixcsl_test_dir qw/$tdir/; -my $DUMP_DIR = './t/_common_dump'; +my $DUMP_DIR = "$tdir/common_dump"; rmtree $DUMP_DIR; my $SCHEMA_CLASS = 'DBIXCSL_Test::Schema'; @@ -57,7 +58,7 @@ sub class_content_like; Bar => 'Foos', }); - my $res = run_loader(naming => 'current'); + my $res = run_loader(naming => 'current', use_namespaces => 0); my $schema = $res->{schema}; is scalar @{ $res->{warnings} }, 1, @@ -386,6 +387,7 @@ sub class_content_like; clean_dumpdir => 1, static => 1, use_namespaces => 0, + naming => 'current', ); like $res->{warnings}[0], qr/Dumping manual schema/i, @@ -407,7 +409,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'; @@ -431,6 +433,7 @@ sub class_content_like; $res = run_loader( static => 1, use_namespaces => 1, + naming => 'current', ); $schema = $res->{schema}; @@ -469,7 +472,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'; @@ -489,7 +492,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'; @@ -510,6 +513,7 @@ sub class_content_like; $res = run_loader( static => 1, use_namespaces => 0, + naming => 'current', ); my $schema = $res->{schema}; @@ -555,6 +559,7 @@ sub class_content_like; clean_dumpdir => 1, static => 1, result_namespace => 'MyResult', + naming => 'current', ); like $res->{warnings}[0], qr/Dumping manual schema/i, @@ -576,7 +581,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'; @@ -597,6 +602,7 @@ sub class_content_like; $res = run_loader( static => 1, use_namespaces => 0, + naming => 'current', ); my $schema = $res->{schema}; @@ -640,7 +646,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 +655,7 @@ sub class_content_like; $res = run_loader( static => 1, result_namespace => 'MyResult', + naming => 'current', ); my $schema = $res->{schema}; @@ -677,6 +684,7 @@ sub class_content_like; $res = run_loader( static => 1, result_namespace => 'Mtfnpy', + naming => 'current', ); $schema = $res->{schema}; @@ -726,8 +734,8 @@ sub class_content_like; my $res = run_loader(static => 1, naming => 'current'); my $schema = $res->{schema}; - my $file = $schema->_loader->_get_dump_filename($SCHEMA_CLASS); - my $code = slurp $file; + my $file = $schema->loader->get_dump_filename($SCHEMA_CLASS); + my $code = slurp_file $file; my ($dumped_ver) = $code =~ /^# Created by DBIx::Class::Schema::Loader v(\S+)/m; @@ -869,6 +877,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}; @@ -883,7 +892,7 @@ sub run_loader { my @connect_info = $make_dbictest_db_with_unique::dsn; my @loader_warnings; - local $SIG{__WARN__} = sub { push(@loader_warnings, $_[0]); }; + local $SIG{__WARN__} = sub { push(@loader_warnings, @_); }; eval qq{ package $SCHEMA_CLASS; use base qw/DBIx::Class::Schema::Loader/; @@ -1097,6 +1106,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 +1136,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 +1166,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 +1201,17 @@ 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'; } { @@ -1251,15 +1294,15 @@ 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)}; } sub class_content_like { my ($schema, $class, $re, $test_name) = @_; - my $file = $schema->_loader->_get_dump_filename($class); - my $code = slurp $file; + my $file = $schema->loader->get_dump_filename($class); + my $code = slurp_file $file; like $code, $re, $test_name; } @@ -1290,7 +1333,7 @@ EOF sub _write_custom_content { my ($schema, $class, $content) = @_; - my $pm = $schema->_loader->_get_dump_filename($class); + my $pm = $schema->loader->get_dump_filename($class); { local ($^I, @ARGV) = ('.bak', $pm); while (<>) {