X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=scpubgit%2Fstemmatology.git;a=blobdiff_plain;f=t%2Ftext_tradition_parser_self.t;fp=t%2Ftext_tradition_parser_self.t;h=00c973d837774535c5a55c6bdbc2de8a5529d165;hp=0a1ec1011b3ad195c3b7e1220863e99c75c342bf;hb=9fef629bd3a741a6d74d130f10056898d504fb47;hpb=f7ff202ce1b5c064d0851ad8338e0c1802e988ce diff --git a/t/text_tradition_parser_self.t b/t/text_tradition_parser_self.t index 0a1ec10..00c973d 100644 --- a/t/text_tradition_parser_self.t +++ b/t/text_tradition_parser_self.t @@ -8,6 +8,8 @@ $| = 1; # =begin testing { +use File::Temp; +use Test::Warn; use Text::Tradition; binmode STDOUT, ":utf8"; binmode STDERR, ":utf8"; @@ -51,6 +53,28 @@ if( $newt ) { is( scalar $newt->stemmata, 1, "Tradition has its stemma" ); is( $newt->stemma(0)->witnesses, $t->stemma(0)->witnesses, "Stemma has correct length witness list" ); } + +# Test user save / restore +my $fh = File::Temp->new(); +my $file = $fh->filename; +$fh->close; +my $dsn = "dbi:SQLite:dbname=$file"; +my $userstore = Text::Tradition::UserStore->new( { dsn => $dsn, + extra_args => { create => 1 } } ); +my $scope = $userstore->new_scope(); +my $testuser = $userstore->add_user( { url => 'http://example.com' } ); +is( ref( $testuser ), 'Text::Tradition::User', "Created test user via userstore" ); +$testuser->add_tradition( $newt ); +is( $newt->user->id, $testuser->id, "Assigned tradition to test user" ); +$graphml_str = $newt->collation->as_graphml; +my $usert; +warning_is { + $usert = Text::Tradition->new( 'input' => 'Self', 'string' => $graphml_str ); +} 'DROPPING user assignment without a specified userstore', + "Got expected user drop warning on parse"; +$usert = Text::Tradition->new( 'input' => 'Self', 'string' => $graphml_str, + 'userstore' => { 'dsn' => $dsn } ); +is( $usert->user->id, $testuser->id, "Parsed tradition with userstore points to correct user" ); }