8 use Test::Requires qw(Test::postgresql);
9 use Test::Requires qw(Test::mysqld);
10 use File::Spec::Functions 'catdir', 'catfile';
11 use File::Path 'remove_tree';
12 use DBIx::Class::DeploymentHandler;
17 ok my $testdb = build_test_mysql(),
20 my $dbh = DBI->connect("DBI:mysql:test;mysql_socket=${\$testdb->base_dir}/tmp/mysql.sock",'root','');
22 use_ok 'DBICVersion_v1';
23 $DBICVersion::Schema1::VERSION = 1;
24 ok my $schema = DBICVersion::Schema1->connect(sub { $dbh }),
27 ok my $dbic_dh = build_dh($schema),
30 $dbic_dh->prepare_install;
33 is $dbic_dh->database_version, 1, 'correct db version';
37 ok my $testdb = build_test_mysql(),
40 my $dbh = DBI->connect("DBI:mysql:test;mysql_socket=${\$testdb->base_dir}/tmp/mysql.sock",'root','');
42 use_ok 'DBICVersion_v2';
43 $DBICVersion::Schema2::VERSION = 2;
44 ok my $schema = DBICVersion::Schema2->connect(sub { $dbh }),
47 ok my $dbic_dh = build_dh($schema,1),
50 $dbic_dh->prepare_install();
51 $dbic_dh->prepare_upgrade();
52 $dbic_dh->prepare_downgrade();
55 is $dbic_dh->database_version, 2, 'correct db version';
59 ok -d catdir('t','share','var','mysql-deploy','MySQL','downgrade','2-1'),
60 'reasonable defaults properly creates a downgrade';
64 remove_tree catdir('t','share','var','mysql');
66 ok my $testdb = build_test_mysql(),
69 my $dbh = DBI->connect("DBI:mysql:test;mysql_socket=${\$testdb->base_dir}/tmp/mysql.sock",'root','');
71 use_ok 'DBICVersion_v2';
72 $DBICVersion::Schema2::VERSION = 2;
73 ok my $schema = DBICVersion::Schema2->connect(sub { $dbh }),
76 my $dbic_dh = DBIx::Class::DeploymentHandler->new({
77 script_directory => catdir('t','share','var','mysql-deploy'),
80 databases => ['MySQL']});
84 is $dbic_dh->database_version, 1, 'correct db version';
90 DBIx::Class::DeploymentHandler->new({
91 script_directory => catdir('t','share','var','mysql-deploy'),
93 databases => ['MySQL']});
96 sub build_test_mysql {
97 my $base_dir = catdir('t','share','var','mysql');
98 my $auto_start = -d $base_dir ? 1:2;
100 base_dir => $base_dir,
101 auto_start => $auto_start);
103 return Test::mysqld->new(
104 auto_start => $auto_start,
105 base_dir => $base_dir);
108 if(my $testdb = Test::mysqld->new(%config)) {
111 die $Test::mysqld::errstr;
116 remove_tree catdir('t','share','var','mysql');
117 remove_tree catdir('t','share','var','mysql-deploy');