Commit | Line | Data |
cc15b78f |
1 | use strict; |
2 | use warnings; |
50b95db6 |
3 | use Test::More tests => 10; |
cc15b78f |
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 | { |
494e0205 |
11 | naming => 'current', |
12 | schema_base_class => 'TestSchemaBaseClass', |
cc15b78f |
13 | schema_components => ['TestSchemaComponent'], |
14 | }, |
15 | [ $make_dbictest_db::dsn ], |
16 | ); |
17 | |
50b95db6 |
18 | is $TestSchemaBaseClass::test_ok, 1, |
cc15b78f |
19 | 'connected using schema_base_class'; |
20 | |
50b95db6 |
21 | is $DBIx::Class::TestSchemaComponent::test_component_ok, 1, |
cc15b78f |
22 | 'connected using schema_components'; |
de89deba |
23 | |
24 | # try an explicit dynamic schema |
25 | |
de89deba |
26 | { |
27 | package DBICTest::Schema::_test_schema_base_dynamic; |
28 | use base 'DBIx::Class::Schema::Loader'; |
50b95db6 |
29 | our $ran_connection = 0; |
de89deba |
30 | __PACKAGE__->loader_options({ |
31 | naming => 'current', |
32 | schema_base_class => 'TestSchemaBaseClass', |
33 | schema_components => ['TestSchemaComponent'], |
34 | }); |
35 | # check that connection doesn't cause an infinite loop |
50b95db6 |
36 | sub connection { my $self = shift; $ran_connection++; return $self->next::method(@_) } |
de89deba |
37 | } |
38 | |
50b95db6 |
39 | $TestSchemaBaseClass::test_ok = 0; |
40 | $DBIx::Class::TestSchemaComponent::test_component_ok = 0; |
41 | |
de89deba |
42 | ok(my $schema = |
43 | DBICTest::Schema::_test_schema_base_dynamic->connect($make_dbictest_db::dsn), |
44 | 'connected dynamic schema'); |
45 | |
50b95db6 |
46 | is $DBICTest::Schema::_test_schema_base_dynamic::ran_connection, 1, |
47 | 'schema class connection method ran only once'; |
48 | |
49 | is $TestSchemaBaseClass::test_ok, 1, |
de89deba |
50 | 'connected using schema_base_class in dynamic schema'; |
51 | |
50b95db6 |
52 | is $DBIx::Class::TestSchemaComponent::test_component_ok, 1, |
de89deba |
53 | 'connected using schema_components in dynamic schema'; |
54 | |
55 | # connect a second time |
56 | |
57 | $TestSchemaBaseClass::test_ok = 0; |
58 | $DBIx::Class::TestSchemaComponent::test_component_ok = 0; |
50b95db6 |
59 | $DBICTest::Schema::_test_schema_base_dynamic::ran_connection = 0; |
de89deba |
60 | |
61 | ok($schema = |
62 | DBICTest::Schema::_test_schema_base_dynamic->connect($make_dbictest_db::dsn), |
63 | 'connected dynamic schema a second time'); |
64 | |
50b95db6 |
65 | is $DBICTest::Schema::_test_schema_base_dynamic::ran_connection, 1, |
66 | 'schema class connection method ran only once when connecting a second time'; |
67 | |
68 | is $TestSchemaBaseClass::test_ok, 1, |
de89deba |
69 | 'connected using schema_base_class in dynamic schema a second time'; |
70 | |
50b95db6 |
71 | is $DBIx::Class::TestSchemaComponent::test_component_ok, 1, |
de89deba |
72 | 'connected using schema_components in dynamic schema a second time'; |