7 use Text::Tradition::Directory;
10 my $DBNAME = 'traditions.db';
12 # Make the directory on the filesystem if necessary
15 or die "Could not make database director $DBDIR";
16 say "Created directory for test database";
18 # Delete the old db if it exists
19 if( -f "$DBDIR/$DBNAME.$DBEXT" ) {
20 unlink( "$DBDIR/$DBNAME.$DBEXT" );
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";
29 # Set up the test directory
30 symlink( "$DBNAME.$DBEXT", "$DBDIR/$DBNAME" ) or die "Could not set up testing db symlink";
32 my $dir = Text::Tradition::Directory->new(
33 dsn => "dbi:SQLite:dbname=$DBDIR/$DBNAME",
34 extra_args => { create => 1 }
36 my $scope = $dir->new_scope();
37 say "Created test database";
40 my $user = $dir->add_user({ username => 'user@example.org', password => 'UserPass' });
41 my $admin = $dir->add_user({ username => 'admin@example.org',
42 password => 'AdminPass', role => 'admin' });
43 die "Failed to create test users" unless $user && $admin;
46 my $t1 = Text::Tradition->new( input => 'Self', file => 't/data/besoin.xml' );
47 die "Failed to create test tradition #1" unless $t1;
48 $t1->add_stemma( dotfile => 't/data/besoin_stemweb.dot' );
49 $user->add_tradition( $t1 );
51 say "Created test user tradition";
53 my $t2 = Text::Tradition->new( input => 'Tabular', sep_char => ',',
54 file => 't/data/florilegium.csv' );
55 $t2->add_stemma( dotfile => 't/data/florilegium.dot' );
56 die "Failed to create test tradition #2" unless $t2;
59 my $t3 = Text::Tradition->new( input => 'Self', file => 't/data/john.xml' );
61 $t3->name( 'John verse' );
63 my $t4 = Text::Tradition->new( input => 'Self', file => 't/data/collatecorr.xml' );
65 $user->add_tradition( $t4 );
69 say "Created test public traditions";