start of backcompat tests
[dbsrgits/DBIx-Class-Schema-Loader.git] / t / 25backcompat_v4.t
CommitLineData
66afce69 1use strict;
2use warnings;
3use Test::More;
4use File::Path;
5use Class::Unload;
6use lib qw(t/lib);
7use make_dbictest_db2;
8
9my $DUMP_DIR = './t/_common_dump';
10rmtree $DUMP_DIR;
11
12sub run_loader {
13 my %loader_opts = @_;
14
15 my $schema_class = 'DBIXCSL_Test::Schema';
16 Class::Unload->unload($schema_class);
17
18 my @connect_info = $make_dbictest_db2::dsn;
19 my @loader_warnings;
20 local $SIG{__WARN__} = sub { push(@loader_warnings, $_[0]); };
21 eval qq{
22 package $schema_class;
23 use base qw/DBIx::Class::Schema::Loader/;
24
25 __PACKAGE__->loader_options(\%loader_opts);
26 __PACKAGE__->connection(\@connect_info);
27 };
28
29 ok(!$@, "Loader initialization") or diag $@;
30
31 my $schema = $schema_class->clone;
32 my (%monikers, %classes);
33 foreach my $source_name ($schema->sources) {
34 my $table_name = $schema->source($source_name)->from;
35 $monikers{$table_name} = $source_name;
36 $classes{$table_name} = "${schema_class}::${source_name}";
37 }
38
39 return {
40 schema => $schema,
41 warnings => \@loader_warnings,
42 monikers => \%monikers,
43 classes => \%classes,
44 };
45}
46
47# test dynamic schema in 0.04006 mode
48{
49 my $res = run_loader();
50
51 like $res->{warnings}[0], qr/dynamic schema/i,
52 'dynamic schema in backcompat mode detected';
53 like $res->{warnings}[0], qr/run in 0\.04006 mode/,
54 'dynamic schema in 0.04006 mode warning';
55
56 is_deeply [ @{ $res->{monikers} }{qw/foos bar bazes quuxes/} ],
57 [qw/Foos Bar Bazes Quuxes/],
58 'correct monikers in 0.04006 mode';
59
60 ok my $bar = eval { $res->{schema}->resultset('Bar')->find(1) };
61
62 isa_ok eval { $bar->fooref }, $res->{classes}{foos},
63 'correct rel name';
64
65 ok my $baz = eval { $res->{schema}->resultset('Bazes')->find(1) };
66
67 isa_ok eval { $baz->quuxes }, 'DBIx::Class::ResultSet',
68 'correct rel type and name for UNIQUE FK';
69}
70
71done_testing;
72
73END { rmtree $DUMP_DIR }