Import the latest ::Optional::Dependencies from DBIC
[dbsrgits/DBIx-Class-Schema-Loader.git] / t / backcompat / 0.04006 / 20invocations.t
CommitLineData
406a97c2 1use DBIx::Class::Schema::Loader::Optional::Dependencies
2 -skip_all_without => 'test_backcompat';
3
9a95164d 4use strict;
5use Test::More;
1c94fb11 6use lib qw(t/backcompat/0.04006/lib);
9a95164d 7use make_dbictest_db;
818c6a0c 8
8b7749d6 9local $SIG{__WARN__} = sub {
10 warn @_ unless $_[0] =~ /Dynamic schema|really_erase_my_files/;
11};
12
9a95164d 13# Takes a $schema as input, runs 4 basic tests
14sub test_schema {
15 my ($testname, $schema) = @_;
16
17 $schema = $schema->clone if !ref $schema;
18 isa_ok($schema, 'DBIx::Class::Schema', $testname);
19
20 my $foo_rs = $schema->resultset('Bar')->search({ barid => 3})->search_related('fooref');
21 isa_ok($foo_rs, 'DBIx::Class::ResultSet', $testname);
22
23 my $foo_first = $foo_rs->first;
24 like(ref $foo_first, qr/DBICTest::Schema::\d+::Foo/, $testname);
25
26 my $foo_first_text = $foo_first->footext;
27 is($foo_first_text, 'Foo record associated with the Bar with barid 3');
28}
29
30my @invocations = (
31 'hardcode' => sub {
32 package DBICTest::Schema::5;
33 use base qw/ DBIx::Class::Schema::Loader /;
34 __PACKAGE__->connection($make_dbictest_db::dsn);
35 __PACKAGE__;
36 },
37 'normal' => sub {
38 package DBICTest::Schema::6;
39 use base qw/ DBIx::Class::Schema::Loader /;
40 __PACKAGE__->loader_options();
41 __PACKAGE__->connect($make_dbictest_db::dsn);
42 },
43 'make_schema_at' => sub {
44 use DBIx::Class::Schema::Loader qw/ make_schema_at /;
45 make_schema_at(
46 'DBICTest::Schema::7',
47 { really_erase_my_files => 1 },
48 [ $make_dbictest_db::dsn ],
49 );
50 DBICTest::Schema::7->clone;
51 },
52 'embedded_options' => sub {
53 package DBICTest::Schema::8;
54 use base qw/ DBIx::Class::Schema::Loader /;
55 __PACKAGE__->connect(
56 $make_dbictest_db::dsn,
57 { loader_options => { really_erase_my_files => 1 } }
58 );
59 },
60 'embedded_options_in_attrs' => sub {
61 package DBICTest::Schema::9;
62 use base qw/ DBIx::Class::Schema::Loader /;
63 __PACKAGE__->connect(
64 $make_dbictest_db::dsn,
65 undef,
66 undef,
67 { AutoCommit => 1, loader_options => { really_erase_my_files => 1 } }
68 );
69 },
70 'embedded_options_make_schema_at' => sub {
71 use DBIx::Class::Schema::Loader qw/ make_schema_at /;
72 make_schema_at(
73 'DBICTest::Schema::10',
74 { },
75 [
76 $make_dbictest_db::dsn,
77 { loader_options => { really_erase_my_files => 1 } },
78 ],
79 );
80 "DBICTest::Schema::10";
81 },
82 'almost_embedded' => sub {
83 package DBICTest::Schema::11;
84 use base qw/ DBIx::Class::Schema::Loader /;
85 __PACKAGE__->loader_options( really_erase_my_files => 1 );
86 __PACKAGE__->connect(
87 $make_dbictest_db::dsn,
88 undef, undef, { AutoCommit => 1 }
89 );
90 },
91 'make_schema_at_explicit' => sub {
92 use DBIx::Class::Schema::Loader;
93 DBIx::Class::Schema::Loader::make_schema_at(
94 'DBICTest::Schema::12',
95 { really_erase_my_files => 1 },
96 [ $make_dbictest_db::dsn ],
97 );
98 DBICTest::Schema::12->clone;
99 }
100);
101
102# 4 tests per k/v pair
103plan tests => 2 * @invocations;
104
105while(@invocations >= 2) {
106 my $style = shift @invocations;
107 my $subref = shift @invocations;
108 test_schema($style, &$subref);
109}