Commit | Line | Data |
3467d1a5 |
1 | #!perl |
2 | |
3 | use strict; |
4 | use warnings; |
5 | |
6 | use Test::More; |
7 | use DBIx::Class::DeploymentHandler::DeployMethod::SQL::Translator::ScriptHelpers ':all';; |
ae521c55 |
8 | use Test::Fatal; |
3467d1a5 |
9 | |
10 | use lib 't/lib'; |
11 | |
12 | use DBICVersion_v1; |
13 | use DBICDHTest; |
14 | |
15 | my $dbh = DBICDHTest->dbh; |
16 | my @connection = (sub { $dbh }, { ignore_version => 1 }); |
17 | my $schema = DBICVersion::Schema->connect(@connection); |
18 | $schema->deploy; |
19 | |
20 | subtest dbh => sub { |
21 | my $ran; |
22 | dbh(sub { |
23 | my ($dbh, $versions) = @_; |
24 | |
25 | $ran = 1; |
26 | |
27 | is($dbh, $schema->storage->dbh, 'dbh is correctly reused'); |
28 | is_deeply $versions, [1,2], 'version correctly passed'; |
29 | isa_ok($dbh, 'DBI::db'); |
30 | })->($schema, [1,2]); |
31 | |
32 | ok $ran, 'coderef ran'; |
33 | }; |
34 | |
35 | subtest schema_from_schema_loader => sub { |
36 | use Test::Requires; |
37 | test_requires('DBIx::Class::Schema::Loader'); |
38 | my $build_sl_test = sub { |
39 | my @connection = @_; |
40 | |
41 | return sub { |
42 | my $ran; |
43 | my $outer_schema = DBICVersion::Schema->connect(@connection); |
44 | $outer_schema->deploy; |
45 | schema_from_schema_loader({ naming => 'v4' }, sub { |
46 | my ($schema, $versions) = @_; |
47 | |
48 | $ran = 1; |
49 | |
50 | is( |
51 | $outer_schema->storage->dbh, |
52 | $schema->storage->dbh, |
53 | 'dbh is correctly reused', |
54 | ); |
55 | is_deeply $versions, [2,3], 'version correctly passed'; |
56 | like(ref $schema, qr/SHSchema::\d+/, 'schema has expected type'); |
57 | isa_ok($schema, 'DBIx::Class::Schema', 'and schema is not totally worthless -'); |
58 | })->($outer_schema, [2,3]); |
59 | |
60 | ok $ran, 'coderef ran'; |
61 | } |
62 | }; |
63 | |
64 | subtest 'sub { $dbh }, ...' => $build_sl_test->( |
65 | sub { DBICDHTest->dbh }, |
66 | { ignore_version => 1 }, |
67 | ); |
68 | subtest '$dsn, $user, $pass, ...' => $build_sl_test->( |
69 | 'dbi:SQLite::memory:', undef, undef, |
70 | { RaiseError => 1 }, |
71 | { ignore_version => 1 } |
72 | ); |
73 | |
74 | subtest '({ dsn => ..., ... })' => $build_sl_test->({ |
75 | dsn => 'dbi:SQLite::memory:', |
76 | user => undef, |
77 | password => undef, |
78 | RaiseError => 1, |
79 | ignore_version => 1, |
80 | }); |
81 | |
82 | subtest '({ dbh_maker => ..., ... })' => $build_sl_test->({ |
83 | dbh_maker => sub { DBICDHTest->dbh }, |
84 | RaiseError => 1, |
85 | ignore_version => 1, |
86 | }); |
ae521c55 |
87 | |
88 | subtest '({ dbh_maker => ..., ... })' => $build_sl_test->({ |
89 | dbh_maker => sub { DBICDHTest->dbh }, |
90 | RaiseError => 1, |
91 | ignore_version => 1, |
92 | }); |
93 | |
94 | subtest 'error handling' => sub { |
95 | my $outer_schema = DBICVersion::Schema->connect( |
96 | 'dbi:SQLite::memory:', undef, undef, |
97 | { RaiseError => 1 }, |
98 | { ignore_version => 1 }, |
99 | ); |
100 | $outer_schema->deploy; |
101 | like(exception { |
102 | schema_from_schema_loader({ naming => 'v4' }, sub { |
103 | my ($schema, $versions) = @_; |
104 | |
105 | $schema->resultset('foo') |
106 | })->($outer_schema, [2,3]); |
107 | }, qr/Foo <== Possible Match/, 'correct error'); |
108 | }; |
3467d1a5 |
109 | }; |
110 | |
111 | done_testing; |
112 | |