Tomas Cohen Arazi
fdea245e99
Since our use ok Koha::Objects, there's been an implicit instantiation happening in ->search that has somehow hidden the fact that classes need instantiation... This change in ->delete and ->update made it clear because of the failures/hangs on the tests. This patch instantiates Koha::Patron::Categories before attempting to call ->update. The original patches for this bug are correct and the only issue here is that we need to document better than for some methods, instantiation is not implicit and is required first. This is awkward and I would prefer to force everyone to call ->new first. But I understand it would be inconvenient. To test: 1. Run: $ kshell k$ prove t/db_dependent/Template/Plugin/Categories.t => FAIL: Notice it hangs, Ctrl+c to abort 2. Apply this patch 3. Repeat 1 => SUCCESS: Tests dong hang, and in fact pass 4. Sign off :-D Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
83 lines
2.7 KiB
Perl
83 lines
2.7 KiB
Perl
#!/usr/bin/perl
|
|
|
|
# This file is part of Koha.
|
|
#
|
|
# Koha is free software; you can redistribute it and/or modify it
|
|
# under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# Koha is distributed in the hope that it will be useful, but
|
|
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with Koha; if not, see <http://www.gnu.org/licenses>.
|
|
|
|
use Modern::Perl;
|
|
|
|
use Test::More tests => 5;
|
|
use t::lib::Mocks;
|
|
use t::lib::TestBuilder;
|
|
|
|
use Koha::Patron::Categories;
|
|
use Koha::Checkouts;
|
|
use Koha::Patrons;
|
|
use Koha::Database;
|
|
use Koha::Template::Plugin::Categories;
|
|
|
|
my $schema = Koha::Database->new->schema;
|
|
$schema->storage->txn_begin;
|
|
|
|
# Delete all categories
|
|
Koha::Checkouts->search->delete;
|
|
Koha::Patrons->search->delete;
|
|
Koha::Patron::Categories->search->delete;
|
|
|
|
my $builder = t::lib::TestBuilder->new;
|
|
|
|
is( Koha::Template::Plugin::Categories->new->all->count,
|
|
0, '->all returns 0 results if no categories defined' );
|
|
|
|
# Create sample categories
|
|
my $category_1 = $builder->build( { source => 'Category' } );
|
|
my @categories = Koha::Template::Plugin::Categories->new->all;
|
|
is( scalar(@categories), 1, '->all returns all defined categories' );
|
|
|
|
my $category_2 = $builder->build( { source => 'Category' } );
|
|
@categories = Koha::Template::Plugin::Categories->new->all;
|
|
is( scalar(@categories), 2, '->all returns all defined categories' );
|
|
|
|
is( Koha::Template::Plugin::Categories->GetName(
|
|
$category_1->{categorycode}
|
|
),
|
|
$category_1->{description},
|
|
'->GetName returns the right description'
|
|
);
|
|
|
|
$schema->storage->txn_rollback;
|
|
|
|
subtest 'can_any_reset_password() tests' => sub {
|
|
|
|
plan tests => 3;
|
|
|
|
$schema->storage->txn_begin;
|
|
|
|
# Make sure all existing categories have reset_password set to 0
|
|
Koha::Patron::Categories->search->update({ reset_password => 0 });
|
|
|
|
ok( !Koha::Template::Plugin::Categories->new->can_any_reset_password, 'No category is allowed to reset password' );
|
|
|
|
t::lib::Mocks::mock_preference( 'OpacResetPassword', 0 );
|
|
|
|
my $category = $builder->build_object({ class => 'Koha::Patron::Categories', value => { reset_password => 1 } });
|
|
|
|
ok( Koha::Template::Plugin::Categories->new->can_any_reset_password, 'There\'s at least a category that is allowed to reset password' );
|
|
|
|
$category->reset_password( undef )->store;
|
|
|
|
ok( !Koha::Template::Plugin::Categories->new->can_any_reset_password, 'No category is allowed to reset password' );
|
|
|
|
$schema->storage->txn_rollback;
|
|
};
|