The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
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.