OSDN Git Service

fix sidebar related problems
authorhylom <hylom@users.sourceforge.jp>
Tue, 5 Mar 2019 14:35:24 +0000 (23:35 +0900)
committerhylom <hylom@users.sourceforge.jp>
Tue, 5 Mar 2019 14:35:24 +0000 (23:35 +0900)
src/newslash_web/lib/Newslash/Model/Users/Sidebar.pm
src/newslash_web/lib/Newslash/Web/Controller/API/User.pm
src/newslash_web/t/api/user.t

index 6e409e1..b29405c 100644 (file)
@@ -96,7 +96,7 @@ sub get_sidebar_contents {
     my $users = $self->new_instance_of("Users");
     my $user_sidebar = $self->select(uid => $uid);
 
-    if (!$user_sidebar) {
+    if (!$user_sidebar || @$user_sidebar == 0) {
         $user_sidebar = $self->select(uid => $users->anonymous_user->{uid});
     }
 
index f1a2f6e..649bdd4 100644 (file)
@@ -40,14 +40,14 @@ sub get {
     }
     elsif ($type eq 'sidebar') {
         my $rs = $users->sidebar->select(uid => $uid);
-        if ($rs) {
-            $c->render(json => { items => $rs->{items} });
+        if ($rs && @$rs) {
+            $c->render(json => { items => $rs });
             return;
         }
         # fallback
         $rs = $users->sidebar->select(uid => $users->anonymous_user->{uid});
         if ($rs) {
-            $c->render(json => { items => $rs->{items} });
+            $c->render(json => { items => $rs });
             return;
         }
         $c->render(json => { items => [] });
index b6e6778..8673ea0 100644 (file)
@@ -43,17 +43,32 @@ subtest 'user query' => sub {
 subtest 'get users info' => sub {
     $test_man->login($user);
 
+    # config
     $t->get_ok('/api/v1/user?type=config')
       ->status_is(200)
       ->content_type_like(qr|application/json|)
       ->json_has('/config')
       ->or(sub {diag "message: " . dumper($t->tx->res->json);});
 
+    # message_config
     $t->get_ok('/api/v1/user?type=message_config')
+      ->status_is(200)
       ->content_type_like(qr|application/json|)
       ->json_has('/config')
       ->or(sub {diag "message: " . dumper($t->tx->res->json);});
 
+    # sidebar
+    $t->get_ok('/api/v1/user?type=sidebar')
+      ->status_is(200)
+      ->content_type_like(qr|application/json|)
+      ->json_has('/items')
+      ->or(sub {diag "message: " . dumper($t->tx->res->json);});
+
+    # all
+    # type=all need admin privileges
+    $t->get_ok('/api/v1/user?type=all')
+      ->status_is(403);
+
     $test_man->logout;
 };