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';
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,
clean_dumpdir => 1,
static => 1,
use_namespaces => 0,
+ naming => 'current',
);
like $res->{warnings}[0], qr/Dumping manual schema/i,
# 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';
$res = run_loader(
static => 1,
use_namespaces => 1,
+ naming => 'current',
);
$schema = $res->{schema};
# 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';
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';
$res = run_loader(
static => 1,
use_namespaces => 0,
+ naming => 'current',
);
my $schema = $res->{schema};
clean_dumpdir => 1,
static => 1,
result_namespace => 'MyResult',
+ naming => 'current',
);
like $res->{warnings}[0], qr/Dumping manual schema/i,
# 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';
$res = run_loader(
static => 1,
use_namespaces => 0,
+ naming => 'current',
);
my $schema = $res->{schema};
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' } });
$res = run_loader(
static => 1,
result_namespace => 'MyResult',
+ naming => 'current',
);
my $schema = $res->{schema};
$res = run_loader(
static => 1,
result_namespace => 'Mtfnpy',
+ naming => 'current',
);
$schema = $res->{schema};
my $res = run_loader(static => 1, naming => 'current');
my $schema = $res->{schema};
- my $file = $schema->_loader->_get_dump_filename($SCHEMA_CLASS);
+ my $file = $schema->loader->get_dump_filename($SCHEMA_CLASS);
my $code = slurp $file;
my ($dumped_ver) =
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};
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/;
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 {
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 {
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 {
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';
}
{
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 $file = $schema->loader->get_dump_filename($class);
my $code = slurp $file;
like $code, $re, $test_name;
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 (<>) {