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::Chado - Unit testing for chado database modules and applications

VERSION

version v4.1.1

SYNOPSIS

Start with a perl module

This means you have a module with namespace(with or without double colons), along with Makefile.PL or Build.PL or even dist.ini. You have your libraries in lib/ folder and going to write tests in t/ folder. This could an existing or new module, anything would work.

Write tests

It should be in your .t file(t/dbtest.t for example)

  use Test::More;
  use Test::Chado;
  use Test::Chado::Common;

  my $schema = chado_schema(load_fixtures => 1);

  has_cv($schema,'sequence', 'should have sequence ontology');
  has_cvterm($schema, 'part_of', 'should have term part_of');
  has_db($schema, 'SO', 'should have SO in db table');
  has_dbxref($schema, '0000010', 'should have 0000010 in dbxref');

  drop_schema();

Run any test commands to test it against chado sqlite

  prove -lv t/dbtest.t

  ./Build test 

  make test

Run against postgresql

  #Make sure you have a database with enough permissions
  
  prove -l --dsn "dbi:Pg:dbname=testchado;host=localhost"  --user tucker --password halo t/dbtest.t

  ./Build test --dsn "dbi:Pg:dbname=testchado;host=localhost"  --user tucker --password halo

  make test  --dsn "dbi:Pg:dbname=testchado;host=localhost"  --user tucker --password halo

Run against postgresql without setting any custom server

  prove -l --postgression t/dbtest.t

  ./Build test --postgression

  make test --postgression

DOCUMENTATION

Use the quick start or pick any of the section below to start your testing. All the source code for this documentation is also available here.

Quick start
Testing perl distribution
Testing web application
Testing with postgresql
Loading custom schema(sql statements) for testing
Loading custom fixtures(test data)

API

Methods

All the methods are available as all export group. There are two more export groups.

schema
chado_schema
reload_schema
drop_schema
manager
get_fixture_loader_instance
set_fixture_loader_instance
get_dbmanager_instance
set_dbmanager_instance
chado_schema(%options)

Return an instance of DBIx::Class::Schema for chado database.

However, because of the way the backends works, for Sqlite it returns a on the fly schema generated from DBIx::Class::Schema::Loader, whereas for Pg backend it returns Bio::Chado::Schema

options

load_fixture : Pass a true value(1) to load the default fixture, default is false.

custom_fixture: Path to a custom fixture file made with DBIx::Class::Fixtures. It should be a compressed tarball. Currently it is recommended to use tc-prepare-fixture script to make custom fixutre so that it fits the expected layout. Remember, only one fixture set could be loaded at one time and if both of them specified, custom_fixture will take precedence.

drop_schema
reload_schema

Drops and then reloads the schema.

set_fixture_loader_type

Sets the type of fixture loader backend it should use, either of preset or flatfile.

get_dbmanager_instance

Returns an instance of backend class that implements the Test::Chado::Role::HasDBManager Role.

set_dbmanager_instance

Sets the dbmanager class that should implement Test::Chado::Role::HasDBManager Role.

get_fixture_loader_instance

Returns an instance of fixture loader class that implements the Test::Chado::Role::Helper::WithBcs Role.

set_fixture_loader_instance

Sets fixture loader class that should implement the Test::Chado::Role::Helper::WithBcs Role.

Build Status

Travis CI status Coverage Status

AUTHOR

Siddhartha Basu <biosidd@gmail.com>

COPYRIGHT AND LICENSE

This software is copyright (c) 2011 by Siddhartha Basu.

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