Commit | Line | Data |
325d9f41 |
1 | package stemmaweb::Test::DB; |
2 | |
3 | use warnings; |
4 | use strict; |
5 | |
6 | use FindBin; |
7 | |
8 | sub 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' }); |
5d784709 |
41 | my $openid_user = $dir->add_user({ username => 'http://localhost/' }); |
325d9f41 |
42 | |
43 | |
44 | my $t2 = Text::Tradition->new( input => 'Tabular', sep_char => ',', |
45 | file => 't/data/florilegium.csv' ); |
46 | $t2->add_stemma( dotfile => 't/data/florilegium.dot' ); |
47 | |
48 | $user->add_tradition($t2); |
5d784709 |
49 | |
50 | return $dir; |
325d9f41 |
51 | } |
52 | |
53 | 1; |