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