use DBIx::Class::Schema::Loader::Optional::Dependencies
-skip_all_without => 'test_backcompat';
use strict;
use warnings;
use Test::More;
use lib qw(t/backcompat/0.04006/lib);
use make_dbictest_db;
local $SIG{__WARN__} = sub {
warn @_ unless $_[0] =~ /Dynamic schema|really_erase_my_files/;
};
# Takes a $schema as input, runs 4 basic tests
sub test_schema {
my ($testname, $schema) = @_;
$schema = $schema->clone if !ref $schema;
isa_ok($schema, 'DBIx::Class::Schema', $testname);
my $foo_rs = $schema->resultset('Bar')->search({ barid => 3})->search_related('fooref');
isa_ok($foo_rs, 'DBIx::Class::ResultSet', $testname);
my $foo_first = $foo_rs->first;
like(ref $foo_first, qr/DBICTest::Schema::\d+::Foo/, $testname);
my $foo_first_text = $foo_first->footext;
is($foo_first_text, 'Foo record associated with the Bar with barid 3');
}
my @invocations = (
'hardcode' => sub {
package DBICTest::Schema::5;
use base qw/ DBIx::Class::Schema::Loader /;
__PACKAGE__->connection($make_dbictest_db::dsn);
__PACKAGE__;
},
'normal' => sub {
package DBICTest::Schema::6;
use base qw/ DBIx::Class::Schema::Loader /;
__PACKAGE__->loader_options();
__PACKAGE__->connect($make_dbictest_db::dsn);
},
'make_schema_at' => sub {
use DBIx::Class::Schema::Loader qw/ make_schema_at /;
make_schema_at(
'DBICTest::Schema::7',
{ really_erase_my_files => 1 },
[ $make_dbictest_db::dsn ],
);
DBICTest::Schema::7->clone;
},
'embedded_options' => sub {
package DBICTest::Schema::8;
use base qw/ DBIx::Class::Schema::Loader /;
__PACKAGE__->connect(
$make_dbictest_db::dsn,
{ loader_options => { really_erase_my_files => 1 } }
);
},
'embedded_options_in_attrs' => sub {
package DBICTest::Schema::9;
use base qw/ DBIx::Class::Schema::Loader /;
__PACKAGE__->connect(
$make_dbictest_db::dsn,
undef,
undef,
{ AutoCommit => 1, loader_options => { really_erase_my_files => 1 } }
);
},
'embedded_options_make_schema_at' => sub {
use DBIx::Class::Schema::Loader qw/ make_schema_at /;
make_schema_at(
'DBICTest::Schema::10',
{ },
[
$make_dbictest_db::dsn,
{ loader_options => { really_erase_my_files => 1 } },
],
);
"DBICTest::Schema::10";
},
'almost_embedded' => sub {
package DBICTest::Schema::11;
use base qw/ DBIx::Class::Schema::Loader /;
__PACKAGE__->loader_options( really_erase_my_files => 1 );
__PACKAGE__->connect(
$make_dbictest_db::dsn,
undef, undef, { AutoCommit => 1 }
);
},
'make_schema_at_explicit' => sub {
use DBIx::Class::Schema::Loader;
DBIx::Class::Schema::Loader::make_schema_at(
'DBICTest::Schema::12',
{ really_erase_my_files => 1 },
[ $make_dbictest_db::dsn ],
);
DBICTest::Schema::12->clone;
}
);
# 4 tests per k/v pair
plan tests => 2 * @invocations;
while(@invocations >= 2) {
my $style = shift @invocations;
my $subref = shift @invocations;
test_schema($style, &$subref);
}