File: standard.t

package info (click to toggle)
libdbix-class-deploymenthandler-perl 0.002233-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 540 kB
  • sloc: perl: 4,139; makefile: 2
file content (105 lines) | stat: -rw-r--r-- 2,780 bytes parent folder | download | duplicates (3)
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
#!perl

use strict;
use warnings;

use Test::More;

use lib 't/lib';
use DBICDHTest;
use aliased 'DBIx::Class::DeploymentHandler::VersionStorage::Standard';
use aliased 'DBIx::Class::DeploymentHandler::DeployMethod::SQL::Translator';
use File::Temp 'tempdir';
use File::Find;

use DBICVersion_v1;
use DBIx::Class::DeploymentHandler;
my $dbh = DBICDHTest::dbh();
my @connection = (sub { $dbh }, { ignore_version => 1 });
my $sql_dir = tempdir( CLEANUP => 1 );

my $s = DBICVersion::Schema->connect(@connection);
{
   my $warning;
   local $SIG{__WARN__} = sub {$warning = shift};
   my $t = DBICVersion::Schema->connect('frewfrew', '', '');
   like( $warning, qr/Your DB is currently unversioned. Please call upgrade on your schema to sync the DB/, 'warning when database is unversioned');
}

my $dm = Translator->new({
   schema            => $s,
   script_directory => $sql_dir,
   databases         => ['SQLite'],
   sql_translator_args          => { add_drop_table => 0 },
});

my $vs = Standard->new({ schema => $s });

$dm->prepare_resultsource_install({
   result_source => $vs->version_rs->result_source
});

ok( $vs, 'DBIC::DH::VersionStorage::Standard instantiates correctly' );

ok( !$vs->version_storage_is_installed, 'VersionStorage is not yet installed' );

$dm->install_resultsource({
   result_source => $vs->version_rs->result_source,
   version => '1.0',
});

ok( $vs->version_storage_is_installed, 'VersionStorage is now installed' );


$vs->add_database_version({
   version => '1.0',
});

ok(
   eq_array(
      [ $vs->version_rs->search(undef, {order_by => 'id'})->get_column('version')->all],
      [ '1.0' ],
   ),
   'initial version works correctly'
);

is( $vs->database_version, '1.0', 'database version is 1.0');
$vs->add_database_version({
   version => '2.0',
});
is( $vs->database_version, '2.0', 'database version is 2.0');

ok(
   eq_array(
      [ $vs->version_rs->search(undef, {order_by => 'id'})->get_column('version')->all],
      [ '1.0', '2.0', ],
   ),
   'adding another version works correctly'
);

my $u;
{
   my $warning;
   local $SIG{__WARN__} = sub {$warning = shift};
   $u = DBICVersion::Schema->connect(sub { $dbh });
   like( $warning, qr/Versions out of sync. This is 1\.0, your database contains version 2\.0, please call upgrade on your Schema\./, 'warning when database/schema mismatch');
}


$vs->version_rs->delete;

ok( $vs->version_storage_is_installed, 'VersionStorage is still installed even if all versions are deleted' );

my @resulting_files;
find(sub { -f and push @resulting_files, $File::Find::name }, $sql_dir);
for (@resulting_files) {
  my $contents = do {
    local $/;
    open my $fh, $_ or die;
    binmode $fh, ':raw';
    <$fh>
  };
  is index($contents, "\015\012"), -1, "$_ no CRLF";
}

done_testing;