NAME

Test::DBIC::Versioned - Test upgrade scripts for DBIx::Class::Schema::Versioned

VERSION

version 0.01

SYNOPSIS

use Test::More;
use Test::DBIC::Versioned;
use Test::DBIC::Versioned::MySQL;

my $old_DB = Test::DBIC::Versioned::MySQL->new();
my $new_DB = Test::DBIC::Versioned::MySQL->new();

is $old_DB->run_sql('sql/DB-21-MySQL.sql'), '',
  'No errors deploying at version 21';
is $new_DB->run_sql('sql/DB-22-MySQL.sql'), '',
  'No errors deploying at version 22';

my $errors = $old_DB->run_sql('upgrades/RL-DB-21-22-MySQL.sql';
is $errors, '', 'No errors upgrading from 21 to 22';

is_deeply $old_DB->describe_tables, $new_DB->describe_tables,
  'Upgrade of version 21 to 22 matches a fresh deploy of 22';

done_testing();

DESCRIPTION

This module provides helpful a wrapper for testing the correctness of DBIx::Class::Schema::Versioned upgrade scripts. Currently only MySQL is supported.

METHODS

new

A standard Moose constructor. Takes no arguments. A temporary database of the appropriate type will be lazy built when needed.

run_sql

Runs some SQL commands on the database. Normally this will be the deployment script to set-up the database schema, or an upgrade script to modify the schema.

The commands can be in a file, file-handle, or be supplied in a scalar reference.

Returns any errors as a string, or an empty string if there where none.

describe_tables

Probes all tables in the database and returns a data structure describing the schema (columns and indexes) on each table. The structure is intended to be passed to is_deeply for comparison.

FIELDS

dsn

The database dsn string. It can be used to connect to the database.

dbh

The database dbh handle. It contains a connection to the database.

test_db

The test database. The details of it are dependent on the database specific subclass. For example in Test::DBIC::Versioned::MySQL it is an instance of Test::mysqld.