# NAME
Test::DBIx::Class::Schema - DBIx::Class schema sanity checking tests
# VERSION
version 1.0.9
# 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](
https://metacpan.org/pod/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](
https://metacpan.org/pod/DBIx::Class),
[Test::More](
https://metacpan.org/pod/Test::More),
[Test::Aggregate](
https://metacpan.org/pod/Test::Aggregate)
# AUTHOR
Chisel Wright <
[email protected]>
# COPYRIGHT AND LICENSE
This software is copyright (c) 2015 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.
# CONTRIBUTORS
- Chisel <
[email protected]>
- Chisel <
[email protected]>
- Chisel Wright <
[email protected]>
- Chisel Wright <
[email protected]>
- Chisel Wright <
[email protected]>
- Darius Jokilehto <
[email protected]>
- Dave Cross <
[email protected]>
- Jason Tang <
[email protected]>
- Rupert Lane <
[email protected]>