Chisel > Test-DBIx-Class-Schema > Test::DBIx::Class::Schema

Download:
Test-DBIx-Class-Schema-1.0.6.tar.gz

Dependencies

Annotate this POD

View/Report Bugs
Module Version: 1.0.6   Source  

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.

syntax highlighting: