Commit | Line | Data |
c9d2e0a2 |
1 | #!/usr/bin/perl |
2 | use strict; |
3 | use warnings; |
4 | use Test::More; |
86ef9f0d |
5 | use File::Spec; |
f925f7cb |
6 | use File::Copy; |
c9d2e0a2 |
7 | |
8 | BEGIN { |
40dce2a5 |
9 | eval "use DBD::SQLite; use SQL::Translator 0.08;"; |
c9d2e0a2 |
10 | plan $@ |
40dce2a5 |
11 | ? ( skip_all => 'needs DBD::SQLite and SQL::Translator 0.08 for testing' ) |
c9d2e0a2 |
12 | : ( tests => 6 ); |
13 | } |
14 | |
15 | use lib qw(t/lib); |
16 | |
17 | use_ok('DBICVersionOrig'); |
18 | |
19 | my $db_file = "t/var/versioning.db"; |
20 | unlink($db_file) if -e $db_file; |
21 | unlink($db_file . "-journal") if -e $db_file . "-journal"; |
22 | mkdir("t/var") unless -d "t/var"; |
23 | unlink('t/var/DBICVersion-Schema-1.0-SQLite.sql'); |
24 | |
77d76d0f |
25 | my $schema_orig = DBICVersion::Schema->connect( |
26 | "dbi:SQLite:$db_file", |
27 | undef, |
28 | undef, |
29 | { AutoCommit => 1 }, |
30 | ); |
c9d2e0a2 |
31 | # $schema->storage->ensure_connected(); |
32 | |
339e3fd0 |
33 | is($schema_orig->ddl_filename('SQLite', 't/var', '1.0'), File::Spec->catfile('t', 'var', 'DBICVersion-Schema-1.0-SQLite.sql'), 'Filename creation working'); |
e2c0df8e |
34 | $schema_orig->create_ddl_dir('SQLite', undef, 't/var'); |
c9d2e0a2 |
35 | |
36 | ok(-f 't/var/DBICVersion-Schema-1.0-SQLite.sql', 'Created DDL file'); |
37 | ## do this here or let Versioned.pm do it? |
38 | # $schema->deploy(); |
39 | |
e2c0df8e |
40 | my $tvrs = $schema_orig->resultset('Table'); |
a2800991 |
41 | is($schema_orig->_source_exists($tvrs), 1, 'Created schema from DDL file'); |
c9d2e0a2 |
42 | |
43 | eval "use DBICVersionNew"; |
77d76d0f |
44 | my $schema_new = DBICVersion::Schema->connect( |
45 | "dbi:SQLite:$db_file", |
46 | undef, |
47 | undef, |
48 | { AutoCommit => 1 }, |
49 | ); |
c9d2e0a2 |
50 | |
e2c0df8e |
51 | ## create new to pick up filedata for upgrade files we just made (on_connect) |
e2c0df8e |
52 | |
f925f7cb |
53 | # { |
54 | # unlink('t/var/DBICVersion-Schema-1.0-2.0-SQLite.sql'); |
55 | # copy('t/var/DBICVersion-Schema-1.0-2.0-SQLite-erroneous.sql', 't/var/DBICVersion-Schema-1.0-2.0-SQLite.sql'); |
56 | |
57 | # my $schema_upgrade = DBICVersion::Schema->connect( |
58 | # "dbi:SQLite:$db_file", |
59 | # undef, |
60 | # undef, |
61 | # { AutoCommit => 1 }, |
62 | # ); |
63 | |
64 | |
65 | # is($schema_upgrade->get_db_version(), '1.0', 'get_db_version ok'); |
66 | |
67 | # eval { |
68 | # # this will die with errors |
69 | # $schema_upgrade->upgrade(); |
70 | # }; |
71 | # isnt($@, '', 'dodgy upgrade dies'); |
72 | |
73 | # eval { |
74 | # my @results = $schema_upgrade->storage->dbh->do('select VersionName from TestVersion'); |
75 | # }; |
76 | # is($@, '', 'partial upgrade properly rolledback'); |
77 | # is($schema_upgrade->get_db_version(), '1.0', 'db version number not upgraded'); |
78 | # } |
79 | |
80 | { |
81 | unlink('t/var/DBICVersion-Schema-2.0-SQLite.sql'); |
82 | unlink('t/var/DBICVersion-Schema-1.0-2.0-SQLite.sql'); |
83 | |
84 | # $schema_new->create_ddl_dir('SQLite', undef, 't/var', '1.0'); |
85 | # ok(-f 't/var/DBICVersion-Schema-1.0-2.0-SQLite.sql', 'Created DDL upgrade file'); |
86 | |
87 | copy('t/var/DBICVersion-Schema-1.0-2.0-SQLite-proper.sql', 't/var/DBICVersion-Schema-1.0-2.0-SQLite.sql'); |
88 | |
89 | my $schema_upgrade = DBICVersion::Schema->connect( |
90 | "dbi:SQLite:$db_file", |
91 | undef, |
92 | undef, |
93 | { AutoCommit => 1 }, |
94 | ); |
95 | |
96 | |
97 | is($schema_upgrade->get_db_version(), '1.0', 'get_db_version ok'); |
98 | |
99 | eval { |
100 | # this should be okay |
101 | $schema_upgrade->upgrade(); |
102 | }; |
103 | is($@, '', 'proper upgrade okay'); |
104 | eval { |
105 | $schema_upgrade->storage->dbh->do('select NewVersionName from TestVersion'); |
106 | }; |
107 | is($@, '', 'new column created'); |
108 | is($schema_upgrade->get_db_version(), '2.0', 'db version number successfully upgraded'); |
109 | } |
8795fefb |
110 | |
f925f7cb |
111 | exit; |
8795fefb |
112 | unlink($db_file) if -e $db_file; |
113 | unlink($db_file . "-journal") if -e $db_file . "-journal"; |
114 | unlink('t/var/DBICVersion-Schema-1.0-SQLite.sql'); |
115 | unlink('t/var/DBICVersion-Schema-2.0-SQLite.sql'); |
116 | unlink('t/var/DBICVersion-Schema-1.0-2.0-SQLite.sql'); |
117 | unlink(<t/var/backup/*>); |