better dynamic schema_base_class implementation
[dbsrgits/DBIx-Class-Schema-Loader.git] / t / 70schema_base_dispatched.t
1 use strict;
2 use warnings;
3 no warnings 'once';
4 use Test::More tests => 8;
5 use DBIx::Class::Schema::Loader 'make_schema_at';
6 use lib 't/lib';
7 use make_dbictest_db;
8
9 make_schema_at(
10     'DBICTest::Schema::_test_schema_base',
11     {
12         naming => 'current',
13         schema_base_class => 'TestSchemaBaseClass',
14         schema_components => ['TestSchemaComponent'],
15     },
16     [ $make_dbictest_db::dsn ],
17 );
18
19 ok $TestSchemaBaseClass::test_ok,
20     'connected using schema_base_class';
21
22 ok $DBIx::Class::TestSchemaComponent::test_component_ok,
23     'connected using schema_components';
24
25 # try an explicit dynamic schema
26
27 $TestSchemaBaseClass::test_ok = 0;
28 $DBIx::Class::TestSchemaComponent::test_component_ok = 0;
29
30 {
31     package DBICTest::Schema::_test_schema_base_dynamic;
32     use base 'DBIx::Class::Schema::Loader';
33     __PACKAGE__->loader_options({
34         naming => 'current',
35         schema_base_class => 'TestSchemaBaseClass',
36         schema_components => ['TestSchemaComponent'],
37     });
38     # check that connection doesn't cause an infinite loop
39     sub connection { my $self = shift; return $self->next::method(@_) }
40 }
41
42 ok(my $schema =
43     DBICTest::Schema::_test_schema_base_dynamic->connect($make_dbictest_db::dsn),
44     'connected dynamic schema');
45
46 ok $TestSchemaBaseClass::test_ok,
47     'connected using schema_base_class in dynamic schema';
48
49 ok $DBIx::Class::TestSchemaComponent::test_component_ok,
50     'connected using schema_components in dynamic schema';
51
52 # connect a second time
53
54 $TestSchemaBaseClass::test_ok = 0;
55 $DBIx::Class::TestSchemaComponent::test_component_ok = 0;
56
57 ok($schema =
58     DBICTest::Schema::_test_schema_base_dynamic->connect($make_dbictest_db::dsn),
59     'connected dynamic schema a second time');
60
61 ok $TestSchemaBaseClass::test_ok,
62     'connected using schema_base_class in dynamic schema a second time';
63
64 ok $DBIx::Class::TestSchemaComponent::test_component_ok,
65     'connected using schema_components in dynamic schema a second time';