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