remove dep on File::Touch
[dbsrgits/DBIx-Class-DeploymentHandler.git] / t / deploy_methods / sql_translator_protoschema_transform.t
1 #!perl
2
3 use strict;
4 use warnings;
5
6 use Test::More;
7 use Test::Exception;
8
9 use lib 't/lib';
10 use DBICDHTest;
11 use aliased 'DBIx::Class::DeploymentHandler::DeployMethod::SQL::Translator';
12 use File::Spec::Functions;
13 use File::Path qw(rmtree mkpath);
14
15 my $dbh = DBICDHTest::dbh();
16 my @connection = (sub { $dbh }, { ignore_version => 1 });
17 my $sql_dir = 't/sql';
18
19 DBICDHTest::ready;
20
21 VERSION1: {
22    use_ok 'DBICVersion_v1';
23    my $s = DBICVersion::Schema->connect(@connection);
24    my $dm = Translator->new({
25       schema            => $s,
26       script_directory => $sql_dir,
27       databases         => ['SQLite'],
28       sql_translator_args          => { add_drop_table => 0 },
29    });
30
31    $dm->prepare_deploy;
32    $dm->deploy;
33 }
34
35 VERSION2: {
36    use_ok 'DBICVersion_v2';
37    my $s = DBICVersion::Schema->connect(@connection);
38    my $dm = Translator->new({
39       schema            => $s,
40       script_directory => $sql_dir,
41       databases         => ['SQLite'],
42       sql_translator_args          => { add_drop_table => 0 },
43       txn_wrap          => 1,
44    });
45
46    $dm->prepare_deploy;
47    mkpath(catfile(qw( t sql _preprocess_schema upgrade 1.0-2.0 )));
48    open my $prerun, '>',
49       catfile(qw( t sql _preprocess_schema upgrade 1.0-2.0 003-semiautomatic.pl ));
50    print {$prerun}
51       'sub {
52          open my $fh, ">", q(robotparty)
53             if $_[0]->isa("SQL::Translator::Schema")
54             && $_[1]->isa("SQL::Translator::Schema");
55       }';
56    close $prerun;
57    $dm->prepare_upgrade({
58      from_version => '1.0',
59      to_version => '2.0',
60      version_set => [qw(1.0 2.0)]
61    });
62    ok -e 'robotparty', 'intermediate script ran with the right args';
63    $dm->upgrade_single_step({ version_set => [qw( 1.0 2.0 )] });
64 }
65 done_testing;
66 #vim: ts=2 sw=2 expandtab