NAME
Test::DBIC - Facilitates Automated Testing for DBIx::Class
SYNOPSIS
In your test script add this block:
BEGIN {
use Test::DBIC;
eval 'require DBD::SQLite';
if ($@) {
plan skip_all => 'DBD::SQLite not installed';
} else {
plan tests => 1; # change this to the correct number of tests
}
};
my $schema = Test::DBIC->init_schema(
sample_data_file => 't/var/sample_data.txt',
);
DESCRIPTION
This module facilitates testing of DBIx::Class components.
It is planned that this module will supercede or be superceeded by the testing module distributed within DBIx::Class. The hope is for this merge to happen in the 0.09x release of DBIx::Class.
This module allows you to use the testing functionality before it is released as a core component of DBIx::Class. In other words, the API might change, but if you need to test, this module is available as a bleeding-edge version before the next major version of DBIx::Class is released.
Methods
- db_dir
-
Gets/sets the directory where SQLite database files will be stored.
Test::DBIC->db_dir(catdir('t', 'var'));
- db_file
-
Gets/sets the name of the main SQLite database file.
Test::DBIC->db_file('test.db');
- init_schema
-
Removes the test database under
db_dir
and then sets up a new test database and returns a DBIx::Class schema object for your test to use.Parameters are:
- existing_namespace
-
Look for ResultSource (table definition) classes under this namespace, rather than in the schema namespace specified by
schema_class
. - namespace
-
Subclass ResultSet objects into this namespace. Objects that you get back will be under this namespace.
- no_deploy
-
If true, will not set up a test database nor populate it with sample data.
- sqlt_deploy
-
If true, will call the experimental $schema->deploy(). Also triggered if the DBICTEST_SQLT_DEPLOY environment variable is set.
The default is to read the file t/lib/sqlite.sql and execute the SQL within.
- eval_deploy
-
If true, and if using
sqlt_deploy
, will not die when the test database fails to initialize. - no_populate
-
If true, will not populate the test database with sample data.
- clear
-
If true, will delete any existing data in the test database before populating with sample data.
- sample_data
-
Specifies data to use when populating the test database.
The format is:
'sample_data' => [ ResultSourceName => [ ['column1', 'column2', 'column3'], ['data1', 'data2', 'data3'], ['data1', 'data2', 'data3'], ], ResultSourceName => [ ... ], ],
The ResultSourceName is the string passed to $schema->resultset.
- sample_data_file
-
Specifies a file which contains data to use when populating the test database.
The format for the file is:
ResultSourceName column1, column2, column3 data1, data2, data3 data1, data2, data3 --- ResultSourceName ...
The ResultSourceName is the string passed to $schema->resultset.
Data for multiple tables may be specified, with a separator line of
---
between them. - schema_class
-
The name of the DBIx::Class schema to use. Defaults to
Test::DBIC::Schema
.
- deploy_schema
-
Called by
init_schema
. Creates tables in the test database. - clear_schema
-
Called before populating the test database, if
clear
has been set to true. Deletes data from known tables. - populate_schema
-
Called by
init_schema
. Loads sample data into the test database.
SEE ALSO
AUTHOR
Nathan Gray <kolibrie@cpan.org>
based on DBICTest (from the testsuite of DBIx::Class) and DBIC::Test (from the testsuite of DBIx::Class::InflateColumn::Currency)
COPYRIGHT AND LICENSE
Copyright (C) 2007 by Nathan Gray
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.8 or, at your option, any later version of Perl 5 you may have available.