diff --git a/lib/LANraragi/Model/Tankoubon.pm b/lib/LANraragi/Model/Tankoubon.pm index 0a0f23e87..91e1ff9b5 100644 --- a/lib/LANraragi/Model/Tankoubon.pm +++ b/lib/LANraragi/Model/Tankoubon.pm @@ -166,7 +166,7 @@ sub get_tankoubon ( $tank_id, $fulldata = 0, $page = 0 ) { %tank = filter_hash_by_keys( \@allowed_keys, %tank ); - my $total = $redis->zcard($tank_id) - 1; + my $total = $redis->zcount($tank_id, 1, "+inf"); return ( $total, $#archives + 1, %tank ); } @@ -232,8 +232,8 @@ sub update_metadata ( $tank_id, $data ) { my $redis = LANraragi::Model::Config->get_redis; my $err = ""; my $name = $data->{"metadata"}->{"name"} || undef; - my $summary = $data->{"metadata"}->{"summary"} || undef; - my $tags = $data->{"metadata"}->{"tags"} || undef; + my $summary = exists $data->{"metadata"}->{"summary"} ? $data->{"metadata"}->{"summary"} : undef; + my $tags = exists $data->{"metadata"}->{"tags"} ? $data->{"metadata"}->{"tags"} : undef; if ( $redis->exists($tank_id) ) { if ( defined $name ) { diff --git a/tests/mocks.pl b/tests/mocks.pl index 06a00cda8..c80809824 100644 --- a/tests/mocks.pl +++ b/tests/mocks.pl @@ -218,6 +218,20 @@ sub setup_redis_mock { } ); + $redis->mock( + 'zcount', # $redis->zcard => number of values in list named by key in datamodel + sub { + my $self = shift; + my ( $key, $weight, $value ) = @_; + + if ( !exists $datamodel{$key} ) { + $datamodel{$key} = []; + } + + return scalar @{ $datamodel{$key} } - 1; + } + ); + $redis->mock( 'zcard', # $redis->zcard => number of values in list named by key in datamodel sub { diff --git a/tests/tankoubon.t b/tests/tankoubon.t index 4ca2e8865..7689b8d5c 100644 --- a/tests/tankoubon.t +++ b/tests/tankoubon.t @@ -29,9 +29,11 @@ LANraragi::Model::Stats::build_stat_hashes(); my ( $total, $filtered, @rgs ); # Get Tankoubon -my %tankoubon = LANraragi::Model::Tankoubon::get_tankoubon("TANK_1589141306", 0, 0); +my ( $total, $filtered, %tankoubon ) = LANraragi::Model::Tankoubon::get_tankoubon("TANK_1589141306", 0, 0); is($tankoubon{id}, "TANK_1589141306", 'ID test'); is($tankoubon{name}, "Hello", 'Name test'); +is($total, 2, 'Total Test'); +is($filtered, 2, 'Count Test'); ok($tankoubon{archives}[0] eq "28697b96f0ac5858be2666ed10ca47742c955555", 'Archives test'); # List Tankoubon