Commit | Line | Data |
2c627d9e |
1 | #!perl |
2 | |
3 | use Test::More; |
4 | use Test::Exception; |
5 | |
6 | use lib 't/lib'; |
b539a216 |
7 | use aliased |
8 | 'DBIx::Class::DeploymentHandler::VersionHandler::ExplicitVersions'; |
2c627d9e |
9 | |
10 | my $versions = [map "$_.0", 0..100]; |
11 | |
12 | { |
b539a216 |
13 | my $vh = ExplicitVersions->new({ |
2c627d9e |
14 | ordered_versions => $versions, |
ddfea806 |
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, |
2c627d9e |
34 | to_version => '1.0', |
b539a216 |
35 | schema_version => '1.0', |
36 | database_version => '1.0', |
2c627d9e |
37 | }); |
38 | |
39 | ok $vh, 'VersionHandler gets instantiated'; |
40 | |
b539a216 |
41 | ok( |
42 | !$vh->next_version_set, |
43 | 'next version set returns undef if we are at the version requested' |
44 | ); |
2c627d9e |
45 | } |
46 | |
47 | { |
b539a216 |
48 | my $vh = ExplicitVersions->new({ |
2c627d9e |
49 | ordered_versions => $versions, |
50 | to_version => '5.0', |
b539a216 |
51 | schema_version => '1.0', |
52 | database_version => '1.0', |
2c627d9e |
53 | }); |
54 | |
55 | ok $vh, 'VersionHandler gets instantiated'; |
b539a216 |
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 | ); |
2c627d9e |
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 | |
8fdf6269 |
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( |
86a86493 |
86 | eq_array($vh->previous_version_set, [qw( 4.0 5.0 )]), |
8fdf6269 |
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 | |
2c627d9e |
105 | dies_ok { |
b539a216 |
106 | my $vh = ExplicitVersions->new({ |
2c627d9e |
107 | ordered_versions => $versions, |
58a5e27f |
108 | schema_version => '2.0', |
ddfea806 |
109 | database_version => '1.1', |
110 | }); |
8fdf6269 |
111 | $vh->next_version_set |
ddfea806 |
112 | } 'dies if database version not found in ordered_versions'; |
113 | |
114 | dies_ok { |
115 | my $vh = ExplicitVersions->new({ |
116 | ordered_versions => $versions, |
2c627d9e |
117 | to_version => '0.0', |
b539a216 |
118 | schema_version => '1.0', |
119 | database_version => '1.0', |
2c627d9e |
120 | }); |
8fdf6269 |
121 | $vh->next_version_set; |
4a65f60b |
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'; |
2c627d9e |
133 | |
134 | done_testing; |
b539a216 |
135 | #vim: ts=2 sw=2 expandtab |