The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Test::DBIC::SQLite - Connect to and deploy a DBIx::Class::Schema on SQLite

SYNOPSIS

The preferred way:

    #! perl -w
    use Test::More;
    use Test::DBIC::SQLite;

    my $t = Test::DBIC::SQLite->new(schema_class => 'My::Schema');
    my $schema = $t->connect_dbic_ok();
    ...
    $schema->disconnect();
    $t->drop_dbic_ok();
    done_testing();

The compatible with v0.01 way:

    #! perl -w
    use Test::More;
    use Test::DBIC::SQLite;
    my $schema = connect_dbic_sqlite_ok('My::Schema');
    ...
    drop_dbic_sqlite_ok();
    done_testing();

DESCRIPTION

This is a re-implementation of Test::DBIC::SQLite v0.01 that uses the Moo::Role: Test::DBIC::DBDConnector.

It will import() warnings and strict for you.

Test::DBIC::SQLite->new

    my $t = Test::DBIC::SQLite->new(%parameters);
    my $schema = $t->connect_dbic_ok();
    ...
    $schema->disconnect();
    $t->drop_dbic_ok();

Parameters

Named, list:

schema_class => $schema_class (Required)

The class name of the DBIx::Class::Schema to use.

dbi_connect_info => $sqlite_dbname (Optional, :memory:)

The default is :memory: which will create a temporary in-memory database. One can also pass a file name for a database on disk. See MyDBD_connection_parameters.i

pre_deploy_hook => $pre_deploy_hook (Optional)

This is an optional CodeRef that will be executed right after the connection is established but before $schema->deploy is called. The CodeRef will only be called if deploy is also needed. See MyDBD_check_wants_deploy.

post_connect_hook => $post_connect_hook (Optional)

This is an optional `CodeRef` that will be executed right after deploy (if any) and just before returning the schema instance. Useful for populating the database.

$td->connect_dbic_ok

This method is inherited from Test::DBIC::DBDConnoctor.

Returns

An initialised instance of $schema_class.

$td->drop_dbic_ok

This method implements rm $dbname, in order not to letter your test directory with left over test databases.

NOTE: Make sure you called $schema->storage->disconnect() first.

connect_dbic_sqlite_ok(@parameters)

Create a SQLite3 database and deploy a dbic_schema. This function is provided for compatibility with v0.01 of this module.

See Test::DBIC::SQLite->new for further information, although only these 3 arguments are supported.

Parameters

Positional:

1. $schema_class (Required)
2. $sqlite_dbname (Optional)
3. $post_connect_hook (Optional)

drop_dbic_sqlite_ok()

This function uses the cached information of the call to connect_dbic_sqlite_ok() and clears it after the database is dropped, using another temporary connection to the template database.

See the drop_dbic_ok() method.

Implementation of MyDBD_connection_parameters

The value of the dbi_connect_info parameter to the `new()` constructor, is passed to this method. For this SQLite3 implementation this is a single string that should contain the name of the database on disk, that can be accessed with sqlite3 (1). By default we use the "special" value of :memory: to create a temporary in-memory database.

This method returns a list of parameters to be passed to DBIx::Class::Schema->connect(). Keep in mind that the last argument (options-hash) will always be augmented with key-value pair: skip_version => 1.

### Note

At this moment we do not support the uri=file:$db_file_name?mode=rwc style of dsn, only the dbname=$db_file_name style, as we only support $sqlite_dbname as a single parameter.

Implementation of MyDBD_check_wants_deploy

For in-memory databases this will always return true. For databases on disk this will return true if the file does not exist and false if it does.

AUTHOR

© MMXV-MMXXI - Abe Timmerman <abeltje@cpan.org>

LICENSE

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.