* convert over to Module::Build
[bioperl-db.git] / t / 16obda.t
blob7d609bcb0e0d802c380699cc602ee4e2bc1ce8eb
1 # -*-Perl-*-
2 # $Id$
4 use vars qw($old_obda_path);
6 BEGIN {
7     use lib 't';
8     use Bio::Root::Test;
9     test_begin(-tests => 16);
11         $old_obda_path = $ENV{OBDA_SEARCH_PATH} 
12            if defined $ENV{OBDA_SEARCH_PATH};
13         $ENV{OBDA_SEARCH_PATH} = 't/data/';
15         use_ok('DBTestHarness');
16         use_ok('Bio::SeqIO');
17         use_ok('Bio::DB::Persistent::BioNamespace');
18         use_ok('Bio::DB::Registry');
21 my $biosql = DBTestHarness->new("biosql");
22 my $db = $biosql->get_DBAdaptor();
23 ok $db;
25 my $registry_file = test_input_file("seqdatabase.ini");
26 my $obda_name = "mytestbiosql";
27 # create a temporary seqdatabase.ini file specific for this test database
28 write_registry($registry_file);
30 my $seqio = Bio::SeqIO->new('-format' => 'genbank',
31                             '-file' => test_input_file('parkin.gb'));
32 my $seq = $seqio->next_seq();
33 ok $seq;
34 my $pseq = $db->create_persistent($seq);
35 $pseq->namespace("mytestnamespace");
36 $pseq->store(); # this will raise warnings if there are duplicates
37 ok $pseq->primary_key();
38 $pseq->commit;
40 # try/finally block
41 eval {
42         my $registry = Bio::DB::Registry->new;
43         ok $registry;
44         my $biodb = $registry->get_database($obda_name);
45         ok $biodb;
46         my $seq = $biodb->get_Seq_by_acc('AB019558');
47         is $seq->primary_id, 5456929;
48         $seq = $biodb->get_Seq_by_id(5456929);
49         is $seq->accession, "AB019558";
50         $seq = $biodb->get_Seq_by_version('AB019558.1');
51         is $seq->primary_id, 5456929;
54 print STDERR $@ if $@;
56 # delete seq
57 is ($pseq->remove(), 1);
58 my $ns = Bio::DB::Persistent::BioNamespace->new(-identifiable => $pseq);
59 ok $ns = $db->get_object_adaptor($ns)->find_by_unique_key($ns);
60 ok $ns->primary_key();
61 is ($ns->remove(), 1);
62 $ns->commit;
64 END {
65         unlink $registry_file if (-e $registry_file);
66         $ENV{OBDA_SEARCH_PATH} = $old_obda_path if defined $old_obda_path;
69 sub write_registry {
70         my $file = shift;
71         my $c = $db->dbcontext;
72         my ($host,$port,$dbname,$pass,$user,$driver) =
73          ($c->host||'',$c->port||'',$c->dbname||'',$c->password||'',$c->username||'',$c->driver||'');
75         open my $F,">$file";
76         print $F <<OBDA;
77 VERSION=1.00
79 [$obda_name]
80 protocol=biosql
81 location=$host:$port
82 dbname=$dbname
83 passwd=$pass
84 user=$user
85 driver=$driver
86 OBDA
87     close $F;