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

use strict;
use warnings;

use lib 't/lib';
use Test::Most;
use DBIx::Class::Migration;
use File::Spec::Functions 'catfile';
use File::Path 'rmtree';
use Local::Schema;

## Create an in-memory sqlite version of the test schema
(my $schema = Local::Schema->connect('dbi:SQLite::memory:'))
  ->deploy;

## Connect a DBIC migration to that
ok my $migration = DBIx::Class::Migration->new(schema => $schema);

## Verify that the connected schema is missing the version storage meta-table

ok my $dbic_dh = $migration->dbic_dh;

is(
  $dbic_dh->schema_version, 1,
    'schema version ok');

is(
  $dbic_dh->version_storage_is_installed, undef,
    'version storage not yet installed');


## Install the version storage and set the version
$migration->prepare;
$migration->install_version_storage;

## Make sure the version is right and the meta table exists

ok(
  $dbic_dh->version_storage_is_installed,
  'version storage installed ok');

is(
  $dbic_dh->database_version, $dbic_dh->schema_version,
  'database version and schema version match');

done_testing;

END {
  rmtree catfile($migration->target_dir, 'migrations');
  rmtree catfile($migration->target_dir, 'fixtures');
  unlink catfile($migration->target_dir, 'local-schema.db');
}