Provided by: libtest-database-perl_1.11-2_all
NAME
Test::Database::Driver - Base class for Test::Database drivers
SYNOPSIS
package Test::Database::Driver::MyDatabase; use strict; use warnings; use Test::Database::Driver; our @ISA = qw( Test::Database::Driver ); sub _version { my ($class) = @_; ...; return $version; } sub create_database { my ( $self ) = @_; ...; return $handle; } sub drop_database { my ( $self, $name ) = @_; ...; } sub databases { my ($self) = @_; ...; return @databases; }
DESCRIPTION
"Test::Database::Driver" is a base class for creating "Test::Database" drivers.
METHODS
The class provides the following methods: new( %args ) Create a new "Test::Database::Driver" object. If called as "Test::Database::Driver->new()", requires a "driver" parameter to define the actual object class. make_handle() Create a new "Test::Database::Handle" object, attached to an existing database or to a newly created one. The decision whether to create a new database or not is made by "Test::Database::Driver" based on the information in the mapper. See "TEMPORARY STORAGE ORGANIZATION" for details. make_dsn( %args ) Return a Data Source Name based on the driver's DSN, with the key/value pairs contained in %args as additional parameters. This is typically used by "dsn()" to make a DSN for a specific database, based on the driver's DSN. name() dbd() The driver's short name (everything after "Test::Database::Driver::"). base_dir() The directory where the driver should store all the files for its databases, if needed. Typically used by file-based database drivers. version() "version" object representing the version of the underlying database enginge. This object is build with the return value of "_version()". version_string() Version string representing the version of the underlying database enginge. This string is the actual return value of "_version()". dbd_version() The version of the DBD used to connect to the database engine, as returned by "VERSION()". driver_dsn() Return a driver Data Source Name, sufficient to connect to the database engine without specifying an actual database. username() Return the connection username. password() Return the connection password. connection_info() Return the connection information triplet ("driver_dsn", "username", "password"). version_matches( $request ) Return a boolean indicating if the driver's version matches the version constraints in the given request (see Test::Database documentation's section about requests). The class also provides a few helpful commands that may be useful for driver authors: available_dbname() Return an unused database name that can be used to create a new database for the driver. dsn( $dbname ) Build a Data Source Name for the database with the given $dbname, based on the driver's DSN.
WRITING A DRIVER FOR YOUR DATABASE OF CHOICE
The SYNOPSIS contains a good template for writing a "Test::Database::Driver" class. Creating a driver requires writing the following methods: _version() Return the version of the underlying database engine. create_database( $name ) Create the database for the corresponding DBD driver. Return a "Test::Database::Handle" in case of success, and nothing in case of failure to create the database. drop_database( $name ) Drop the database named $name. Some methods have defaults implementations in "Test::Database::Driver", but those can be overridden in the derived class: is_filebased() Return a boolean value indicating if the database engine is file-based or not, i.e. if all the database information is stored in a file or a directory, and no external database server is needed. databases() Return the names of all existing databases for this driver as a list (the default implementation is only valid for file-based drivers).
TEMPORARY STORAGE ORGANIZATION
Subclasses of "Test::Database::Driver" store useful information in the system's temporary directory, under a directory named Test-Database-$user ($user being the current user's name). That directory contains the following files: database files The database files and directories created by file-based drivers controlled by "Test::Database" are stored here, under names matching tdd_DRIVER_N, where DRIVER is the lowercased name of the driver and N is a number. the mapping.yml file A YAML file containing a "cwd()" / database name mapping, to enable a given test suite to receive the same database handles in all the test scripts that call the "Test::Database-"handles()> method.
AUTHOR
Philippe Bruhat (BooK), "<book@cpan.org>"
COPYRIGHT
Copyright 2008-2010 Philippe Bruhat (BooK), all rights reserved.
LICENSE
This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.