Add user_traditionlist
Jess Robinson [Mon, 21 May 2012 10:49:01 +0000 (10:49 +0000)]
Test user_traditionlist and add_tradition on user

lib/Text/Tradition/Directory.pm
lib/Text/Tradition/User.pm
t/text_tradition_user.t

index b697f7c..55b7986 100644 (file)
@@ -274,11 +274,37 @@ sub tradition {
        return $obj;
 }
 
+sub user_traditionlist {
+    my ($self, $user) = @_;
+
+    my @tlist;
+    if($user && $user ne 'public') {
+        ## We have a user object already, so just fetch its traditions and use tose
+        foreach my $t (@{ $self->lookup($user)->traditions }) {
+            push( @tlist, { 'id' => $self->object_to_id( $t ), 
+                            'name' => $t->name } );
+        }
+        return @tlist;
+    }
+    
+    ## Search for all traditions which allow public viewing
+    ## When they exist!
+    # $self->search({ public => 1 });
+    
+    ## For now, just fetch all
+    ## (could use all_objects or grep down there?)
+    return $self->traditionlist();
+}
+
 sub traditionlist {
        my $self = shift;
+    my ($user) = @_;
+
+    return $self->user_traditionlist($user) if($user);
+
+       my @tlist;
        # If we are using DBI, we can do it the easy way; if not, the hard way.
        # Easy way still involves making a separate DBI connection. Ew.
-       my @tlist;
        if( $self->dsn =~ /^dbi:(\w+):/ ) {
                my $dbtype = $1;
                my @connection = @{$self->directory->backend->connect_info};
index c78b8e2..e57b8b8 100644 (file)
@@ -85,3 +85,4 @@ Returns an ArrayRef of L<Text::Tradition> objects belonging to this user.
 
 Inherited from KiokuX::User, verifies a given password string against
 the stored encrypted version.
+
index 7dfa930..62520de 100644 (file)
@@ -78,3 +78,25 @@ ok($changed->check_password('passbloggs'), 'Modified & retrieved with correct ne
     ok($gone && !$d_user, 'Deleted user completely from store');
 }
 
+{
+## add_tradition
+    use Text::Tradition;
+    my $t = Text::Tradition->new( 
+        'name'  => 'inline', 
+        'input' => 'Tabular',
+        'file'  => 't/data/simple.txt',
+       );
+
+    my $uuid = $user_store->save($t);
+    my $user = $user_store->add_user({ username => 'testadd',
+                                       password => 'testingtraditions' });
+    $user->add_tradition($t);
+    $user_store->update($user);
+#     $userstore->update($t);
+
+    is( scalar @{$user->traditions}, 1, 'Added one tradition');
+
+    my @tlist = $user_store->traditionlist($user->kiokudb_object_id);
+    is($tlist[0]->name, $t->name, 'Traditionlist returns stored user->tradition');
+}
+