The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl

use strict;
use warnings;

use Test::More;

use lib 't/lib';
use aliased
  'DBIx::Class::DeploymentHandler::VersionHandler::DatabaseToSchemaVersions';

{
  my $vh = DatabaseToSchemaVersions->new({
    to_version => '5.0',
    database_version => '1.0',
    schema_version => '1.0',
  });

  ok( $vh, 'VersionHandler gets instantiated' );
  ok(
    eq_array( $vh->next_version_set, [qw( 1.0 5.0 )] ),
    'db version and to_version get correctly put into version set'
  );
  ok( !$vh->next_version_set, 'next_version_set only works once');
  ok( !$vh->next_version_set, 'seriously.');
}

{
  my $vh = DatabaseToSchemaVersions->new({
    database_version => '1.0',
    schema_version => '1.0',
  });

  ok( $vh, 'VersionHandler gets instantiated' );
  ok(
    !$vh->next_version_set,
    'VersionHandler is null when schema_version and db_verison are the same'
  );
}

{
  my $vh = DatabaseToSchemaVersions->new({
    database_version => '1.0',
    schema_version => '1.0',
  });

  ok( $vh, 'VersionHandler gets instantiated' );
  ok(
    !$vh->next_version_set,
    'VersionHandler is null when schema_version and db_verison are the same'
  );
}

{
  my $vh = DatabaseToSchemaVersions->new({
    database_version => '1.0',
    schema_version => '10.0',
  });

  ok( $vh, 'VersionHandler gets instantiated' );
  ok(
    eq_array( $vh->next_version_set, [qw( 1.0 10.0 )] ),
    'db version and schema version get correctly put into version set'
  );
  ok( !$vh->next_version_set, 'VersionHandler is null on next try' );
}

done_testing;
# vim: ts=2 sw=2 expandtab