b53fb59850ead060279e525e41b9c4131bfc4686
[dbsrgits/DBIx-Class.git] / t / 94versioning.t
1 #!/usr/bin/perl
2 use strict;
3 use warnings;
4 use Test::More;
5 use File::Spec;
6 use File::Copy;
7
8 BEGIN {
9     eval "use DBD::SQLite; use SQL::Translator 0.08;";
10     plan $@
11         ? ( skip_all => 'needs DBD::SQLite and SQL::Translator 0.08 for testing' )
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
25 my $schema_orig = DBICVersion::Schema->connect(
26   "dbi:SQLite:$db_file",
27   undef,
28   undef,
29   { AutoCommit => 1 },
30 );
31 # $schema->storage->ensure_connected();
32
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');
34 $schema_orig->create_ddl_dir('SQLite', undef, 't/var');
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
40 my $tvrs = $schema_orig->resultset('Table');
41 is($schema_orig->_source_exists($tvrs), 1, 'Created schema from DDL file');
42
43 eval "use DBICVersionNew";
44 my $schema_new = DBICVersion::Schema->connect(
45   "dbi:SQLite:$db_file",
46   undef,
47   undef,
48   { AutoCommit => 1 },
49 );
50
51 ## create new to pick up filedata for upgrade files we just made (on_connect)
52
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 }
110
111 exit;
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/*>);