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