NAME
Test::DBIx::Class::Schema - DBIx::Class schema sanity checking tests
VERSION
version 1.0.6
SYNOPSIS
Create a test script that looks like this:
#!/usr/bin/perl
# vim: ts=8 sts=4 et sw=4 sr sta
use strict;
use warnings;
# load the module that provides all of the common test functionality
use Test::DBIx::Class::Schema;
# create a new test object
my $schematest = Test::DBIx::Class::Schema->new(
{
# required
dsn => 'dbi:Pg:dbname=mydb', # or use schema option
namespace => 'MyDB::Schema',
moniker => 'SomeTable',
# optional
username => 'some_user',
password => 'opensesame',
glue => 'Result', # fix class name if needed
# rather than calling diag will test that all columns/relationships
# are accounted for in your test and fail the test if not
test_missing => 1,
}
);
# tell it what to test
$schematest->methods(
{
columns => [
qw[
id
column1
column2
columnX
foo_id
]
],
relations => [
qw[
foo
]
],
custom => [
qw[
some_method
]
],
resultsets => [
qw[
]
],
}
);
# run the tests
$schematest->run_tests();
Run the test script:
prove -l t/schematest/xx.mydb.t
Options
Either "dsn" (eg "dbi:Pg:dbname=mydb") or "schema" (an already created
schema object) must be set.
If the database requires credentials, set "username" and "password".
"namespace", "glue" and "moniker" define the class being tested. For
example, if your class is "MyDB::Schema::Result::SomeTable" then use:
namespace => 'MyDB::Schema',
glue => 'Result,
moniker => 'SomeTable',
"glue" is not required if the combination of "namespace" and "moniker"
is enough to define the class, e.g. "MyDB::Schema::SomeTable".
done_testing
Under normal circumstances there is no need to add "done_testing" to
your test script; it's automatically called at the end of "run_tests()"
*unless* you are running tests under Test::Aggregate.
If you are running aggregated tests you will need to add
done_testing;
to your top-level script.
DESCRIPTION
It's really useful to be able to test and confirm that DBIC classes have
and support a known set of methods.
Testing these one-by-one is more than tedious and likely to discourage
you from writing the relevant test scripts.
As a lazy person myself I don't want to write numerous near-identical
scripts.
Test::DBIx::Class::Schema takes the copy-and-paste out of DBIC schema
class testing.
SEE ALSO
DBIx::Class, Test::More, Test::Aggregate
CONTRIBUTORS
Gianni Ceccarelli "<dakkar@thenautilus.net>", Darius Jokilehto, Jason
Tang "<tang.jason.ch@gmail.com>", Rupert Lane
(<https://github.com/rupertl>)
AUTHOR
Chisel Wright <chisel@chizography.net>
COPYRIGHT AND LICENSE
This software is copyright (c) 2013 by Chisel Wright.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.