make Stemweb listener for result notification (#27) Relies on tla/stemmatology@79c81b...
[scpubgit/stemmaweb.git] / script / maketestdb.pl
1 #!/usr/bin/env perl
2
3 use strict;
4 use warnings;
5 use feature 'say';
6 use Text::Tradition;
7 use Text::Tradition::Directory;
8
9 my $DBDIR = 'db';
10 my $DBNAME = 'traditions.db';
11 my $DBEXT = 'test';
12 # Delete the old directory if it exists
13 if( -f "$DBDIR/$DBNAME.$DBEXT" ) {
14         unlink( "$DBDIR/$DBNAME.$DBEXT" );
15 }
16 if( -l "$DBDIR/$DBNAME" ) {
17         unlink( "$DBDIR/$DBNAME" );
18 } elsif( -e "$DBDIR/$DBNAME" ) {
19         unlink( "$DBDIR/$DBNAME.bak" ) if -f "$DBDIR/$DBNAME.bak";
20         rename( "$DBDIR/$DBNAME", "$DBDIR/$DBNAME.bak" ) 
21                 or die "Could not rename existing $DBNAME";
22
23 # Set up the test directory
24 symlink( "$DBNAME.$DBEXT", "$DBDIR/$DBNAME" ) or die "Could not set up testing db symlink";
25
26 my $dir = Text::Tradition::Directory->new(
27         dsn => "dbi:SQLite:dbname=$DBDIR/$DBNAME",
28         extra_args => { create => 1 } 
29         );
30 my $scope = $dir->new_scope();
31 say "Created test directory";
32
33 # Create users
34 my $user = $dir->add_user({ username => 'user@example.org', password => 'UserPass' });
35 my $admin = $dir->add_user({ username => 'admin@example.org', 
36         password => 'AdminPass', role => 'admin' });
37 die "Failed to create test users" unless $user && $admin;
38 say "Created users";
39
40 my $t1 = Text::Tradition->new( input => 'Self', file => 't/data/besoin.xml' );
41 die "Failed to create test tradition #1" unless $t1;
42 $t1->add_stemma( dotfile => 't/data/besoin_stemweb.dot' );
43 $user->add_tradition( $t1 );
44 $dir->store( $user );
45 say "Created test user tradition";
46
47 my $t2 = Text::Tradition->new( input => 'Tabular', sep_char => ',', 
48         file => 't/data/florilegium.csv' );
49 $t2->add_stemma( dotfile => 't/data/florilegium.dot' );
50 die "Failed to create test tradition #2" unless $t2;
51 $t2->public( 1 );
52 $dir->store( $t2 );
53 my $t3 = Text::Tradition->new( input => 'Self', file => 't/data/john.xml' );
54 $t3->public( 1 );
55 $t3->name( 'John verse' );
56 $dir->store( $t3 );
57 my $t4 = Text::Tradition->new( input => 'Self', file => 't/data/collatecorr.xml' );
58 $t4->public( 1 );
59 $user->add_tradition( $t4 );
60 $dir->store( $t4 );
61 $dir->store( $user );
62
63 say "Created test public traditions";
64