ZOMG use strict and warnings in tests
[dbsrgits/DBIx-Class-DeploymentHandler.git] / t / version_handlers / explict_versions.t
CommitLineData
2c627d9e 1#!perl
2
cbbd1b5f 3use strict;
4use warnings;
5
2c627d9e 6use Test::More;
7use Test::Exception;
8
9use lib 't/lib';
b539a216 10use aliased
11 'DBIx::Class::DeploymentHandler::VersionHandler::ExplicitVersions';
2c627d9e 12
13my $versions = [map "$_.0", 0..100];
14
15{
b539a216 16 my $vh = ExplicitVersions->new({
2c627d9e 17 ordered_versions => $versions,
ddfea806 18 schema_version => '2.0',
19 database_version => '1.0',
20 });
21
22 ok $vh, 'VersionHandler gets instantiated';
23
24 ok(
25 eq_array($vh->next_version_set, [qw( 1.0 2.0 )]),
26 'first version pair works'
27 );
28 ok(
29 !$vh->next_version_set,
30 'next version set returns undef when we are done'
31 );
32}
33
34{
35 my $vh = ExplicitVersions->new({
36 ordered_versions => $versions,
2c627d9e 37 to_version => '1.0',
b539a216 38 schema_version => '1.0',
39 database_version => '1.0',
2c627d9e 40 });
41
42 ok $vh, 'VersionHandler gets instantiated';
43
b539a216 44 ok(
45 !$vh->next_version_set,
46 'next version set returns undef if we are at the version requested'
47 );
2c627d9e 48}
49
50{
b539a216 51 my $vh = ExplicitVersions->new({
2c627d9e 52 ordered_versions => $versions,
53 to_version => '5.0',
b539a216 54 schema_version => '1.0',
55 database_version => '1.0',
2c627d9e 56 });
57
58 ok $vh, 'VersionHandler gets instantiated';
b539a216 59 ok(
60 eq_array($vh->next_version_set, [qw( 1.0 2.0 )]),
61 'first version pair works'
62 );
63 ok(
64 eq_array($vh->next_version_set, [qw( 2.0 3.0 )]),
65 'second version pair works'
66 );
67 ok(
68 eq_array($vh->next_version_set, [qw( 3.0 4.0 )]),
69 'third version pair works'
70 );
71 ok(
72 eq_array($vh->next_version_set, [qw( 4.0 5.0 )]),
73 'fourth version pair works'
74 );
2c627d9e 75 ok( !$vh->next_version_set, 'no more versions after final pair' );
76 ok( !$vh->next_version_set, 'still no more versions after final pair' );
77}
78
8fdf6269 79{
80 my $vh = ExplicitVersions->new({
81 ordered_versions => $versions,
82 to_version => '1.0',
83 schema_version => '5.0',
84 database_version => '5.0',
85 });
86
87 ok $vh, 'VersionHandler gets instantiated';
88 ok(
faefe109 89 eq_array($vh->previous_version_set, [qw( 5.0 4.0 )]),
8fdf6269 90 'first version pair works'
91 );
92 ok(
faefe109 93 eq_array($vh->previous_version_set, [qw( 4.0 3.0 )]),
8fdf6269 94 'second version pair works'
95 );
96 ok(
faefe109 97 eq_array($vh->previous_version_set, [qw( 3.0 2.0 )]),
8fdf6269 98 'third version pair works'
99 );
100 ok(
faefe109 101 eq_array($vh->previous_version_set, [qw( 2.0 1.0 )]),
8fdf6269 102 'fourth version pair works'
103 );
104 ok( !$vh->previous_version_set, 'no more versions after final pair' );
105 ok( !$vh->previous_version_set, 'still no more versions after final pair' );
106}
107
2c627d9e 108dies_ok {
b539a216 109 my $vh = ExplicitVersions->new({
2c627d9e 110 ordered_versions => $versions,
58a5e27f 111 schema_version => '2.0',
ddfea806 112 database_version => '1.1',
113 });
8fdf6269 114 $vh->next_version_set
ddfea806 115} 'dies if database version not found in ordered_versions';
116
117dies_ok {
118 my $vh = ExplicitVersions->new({
119 ordered_versions => $versions,
2c627d9e 120 to_version => '0.0',
b539a216 121 schema_version => '1.0',
122 database_version => '1.0',
2c627d9e 123 });
8fdf6269 124 $vh->next_version_set;
4a65f60b 125} 'cannot request an upgrade before the current version';
126
127dies_ok {
128 my $vh = ExplicitVersions->new({
129 ordered_versions => $versions,
130 to_version => '2.0',
131 schema_version => '1.0',
132 database_version => '1.0',
133 });
134 $vh->previous_version_set;
135} 'cannot request a downgrade after the current version';
2c627d9e 136
137done_testing;
b539a216 138#vim: ts=2 sw=2 expandtab