The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

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

VERSION

version 0.02

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.

LICENSE AND COPYRIGHT

Copyright (C) 2014 "spudsoup"

This program is released under the Artistic License version 2.0