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