better dynamic schema_base_class implementation
[dbsrgits/DBIx-Class-Schema-Loader.git] / t / 70schema_base_dispatched.t
CommitLineData
cc15b78f 1use strict;
2use warnings;
3no warnings 'once';
de89deba 4use Test::More tests => 8;
cc15b78f 5use DBIx::Class::Schema::Loader 'make_schema_at';
6use lib 't/lib';
7use make_dbictest_db;
8
9make_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
19ok $TestSchemaBaseClass::test_ok,
20 'connected using schema_base_class';
21
22ok $DBIx::Class::TestSchemaComponent::test_component_ok,
23 'connected using schema_components';
de89deba 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
42ok(my $schema =
43 DBICTest::Schema::_test_schema_base_dynamic->connect($make_dbictest_db::dsn),
44 'connected dynamic schema');
45
46ok $TestSchemaBaseClass::test_ok,
47 'connected using schema_base_class in dynamic schema';
48
49ok $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
57ok($schema =
58 DBICTest::Schema::_test_schema_base_dynamic->connect($make_dbictest_db::dsn),
59 'connected dynamic schema a second time');
60
61ok $TestSchemaBaseClass::test_ok,
62 'connected using schema_base_class in dynamic schema a second time';
63
64ok $DBIx::Class::TestSchemaComponent::test_component_ok,
65 'connected using schema_components in dynamic schema a second time';