Register test
[scpubgit/stemmaweb.git] / t / lib / stemmaweb / Test / DB.pm
CommitLineData
325d9f41 1package stemmaweb::Test::DB;
2
3use warnings;
4use strict;
5
6use FindBin;
7
8sub new_db {
bf3397df 9 my $DBDIR = "$FindBin::Bin/../db";
325d9f41 10 my $DBNAME = 'traditions.db';
11 my $DBEXT = 'test';
12
13 # Make the directory on the filesystem if necessary
14 unless( -d $DBDIR ) {
15 mkdir $DBDIR
16 or die "Could not make database director $DBDIR";
17 }
18 # Delete the old db if it exists
19 if( -f "$DBDIR/$DBNAME.$DBEXT" ) {
20 unlink( "$DBDIR/$DBNAME.$DBEXT" );
21 }
22 if( -l "$DBDIR/$DBNAME" ) {
23 unlink( "$DBDIR/$DBNAME" );
24 } elsif( -e "$DBDIR/$DBNAME" ) {
25 unlink( "$DBDIR/$DBNAME.bak" ) if -f "$DBDIR/$DBNAME.bak";
26 rename( "$DBDIR/$DBNAME", "$DBDIR/$DBNAME.bak" )
27 or die "Could not rename existing $DBNAME";
28 }
29
30 # Set up the test directory
31 symlink( "$DBNAME.$DBEXT", "$DBDIR/$DBNAME" ) or die "Could not set up testing db symlink";
32
33 my $dir = Text::Tradition::Directory->new(
34 dsn => "dbi:SQLite:dbname=$DBDIR/$DBNAME",
35 extra_args => { create => 1 }
36 );
37 my $scope = $dir->new_scope();
38
39 # Create users
40 my $user = $dir->add_user({ username => 'user@example.org', password => 'UserPass' });
41
42
43 my $t2 = Text::Tradition->new( input => 'Tabular', sep_char => ',',
44 file => 't/data/florilegium.csv' );
45 $t2->add_stemma( dotfile => 't/data/florilegium.dot' );
46
47 $user->add_tradition($t2);
48}
49
501;