Bug 15407: Koha::Patron::Categories - replace C4::Category->all
authorJonathan Druart <jonathan.druart@bugs.koha-community.org>
Mon, 21 Dec 2015 17:04:30 +0000 (17:04 +0000)
committerKyle M Hall <kyle@bywatersolutions.com>
Thu, 8 Sep 2016 13:29:03 +0000 (13:29 +0000)
The C4::Category module contained only 1 method to return the patron
categories available for the logged in user.
The new method Koha::Patron::Categories->search_limited does exactly the
same thing (see tests) and must be used in place of it.

Test plan:
- Same prerequisite as before
For the following pages, you should not see patron categories limited to
other libraries.
- On the 'Item circulation alerts' admin page
  (admin/item_circulation_alerts.pl), modify the settings for check-in
  and checkout (NOTE: Should not we display all patron categories on
  this page? If yes, it must be done in another bug report to ease
  backporting it).
- Search for patrons in the admin (budget) and acquisition (order) module.
- On the patron home page (search form in the header)

Signed-off-by: Chris Cormack <chris@bigballofwax.co.nz>

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>

31 files changed:
C4/Category.pm [deleted file]
C4/ItemCirculationAlertPreference.pm
Koha/Patron/Categories.pm
Koha/Template/Plugin/Categories.pm
acqui/add_user_search.pl
admin/add_user_search.pl
admin/item_circulation_alerts.pl
debian/templates/plack.psgi
koha-tmpl/intranet-tmpl/prog/en/includes/patron-search.inc
koha-tmpl/intranet-tmpl/prog/en/modules/members/member.tt
members/guarantor_search.pl
members/member.pl
members/members-home.pl
members/members-update-do.pl
members/members-update.pl
members/nl-search.pl
misc/plack/koha.psgi
patroncards/add_user_search.pl
reports/reserves_stats.pl
serials/add_user_search.pl
t/db_dependent/Category.t [deleted file]
t/db_dependent/Circulation/CheckIfIssuedToPatron.t
t/db_dependent/Circulation/GetIssues.t
t/db_dependent/Koha/Patron/Categories.t
t/db_dependent/Members/GetAllIssues.t
t/db_dependent/Members/GetOverdues.t
t/db_dependent/Members/GetPendingIssues.t
t/db_dependent/Members/IssueSlip.t
t/db_dependent/Ratings.t
t/db_dependent/Utils/Datatables_Members.t
t/db_dependent/Utils/Datatables_Virtualshelves.t

diff --git a/C4/Category.pm b/C4/Category.pm
deleted file mode 100644 (file)
index 72ed424..0000000
+++ /dev/null
@@ -1,181 +0,0 @@
-package C4::Category;
-
-# Copyright 2009 Liblime
-# Parts Copyright 2011 Tamil
-#
-# 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 strict;
-use warnings;
-use C4::Context;
-
-our $AUTOLOAD;
-
-
-
-
-=head1 NAME
-
-C4::Category - objects from the categories table
-
-=head1 SYNOPSIS
-
-    use C4::Category;
-    my @categories = C4::Category->all;
-    print join("\n", map { $_->description } @categories), "\n";
-
-=head1 DESCRIPTION
-
-Objects of this class represent a row in the C<categories> table.
-
-Currently, the bare minimum for using this as a read-only data source has
-been implemented.  The API was designed to make it easy to transition to
-an ORM later on.
-
-=head1 API
-
-=head2 Class Methods
-
-=cut
-
-=head3 C4::Category->new(\%opts)
-
-Given a hashref, a new (in-memory) C4::Category object will be instantiated.
-The database is not touched.
-
-=cut
-
-sub new {
-    my ($class, $opts) = @_;
-    bless $opts => $class;
-}
-
-
-
-
-=head3 C4::Category->all
-
-This returns all the categories as objects.  By default they're ordered by
-C<description>.
-
-=cut
-
-sub all {
-    my ( $class ) = @_;
-    my $branch_limit = C4::Context->userenv ? C4::Context->userenv->{"branch"} : "";
-    my $dbh = C4::Context->dbh;
-    # The categories table is small enough for
-    # `SELECT *` to be harmless.
-    my $query = "SELECT categories.* FROM categories";
-    $query .= qq{
-        LEFT JOIN categories_branches ON categories_branches.categorycode = categories.categorycode
-        WHERE categories_branches.branchcode = ? OR categories_branches.branchcode IS NULL
-    } if $branch_limit;
-    $query .= " ORDER BY description";
-    return map { $class->new($_) } @{
-        $dbh->selectall_arrayref(
-            $query,
-            { Slice => {} },
-            $branch_limit ? $branch_limit : ()
-        )
-    };
-}
-
-
-
-
-=head2 Object Methods
-
-These are read-only accessors for attributes of a C4::Category object.
-
-=head3 $category->categorycode
-
-=cut
-
-=head3 $category->description
-
-=cut
-
-=head3 $category->enrolmentperiod
-
-=cut
-
-=head3 $category->upperagelimit
-
-=cut
-
-=head3 $category->dateofbirthrequired
-
-=cut
-
-=head3 $category->finetype
-
-=cut
-
-=head3 $category->bulk
-
-=cut
-
-=head3 $category->enrolmentfee
-
-=cut
-
-=head3 $category->overduenoticerequired
-
-=cut
-
-=head3 $category->issuelimit
-
-=cut
-
-=head3 $category->reservefee
-
-=cut
-
-=head3 $category->category_type
-
-=cut
-
-sub AUTOLOAD {
-    my $self = shift;
-    my $attr = $AUTOLOAD;
-    $attr =~ s/.*://;
-    if (exists $self->{$attr}) {
-        return $self->{$attr};
-    } else {
-        return undef;
-    }
-}
-
-sub DESTROY { }
-
-
-
-
-=head1 SEE ALSO
-
-The following modules make reference to the C<categories> table.
-
-L<C4::Members>, L<C4::Overdues>, L<C4::Reserves>
-
-
-=head1 AUTHOR
-
-John Beppu <john.beppu@liblime.com>
-
-=cut
-
-1;
index 4f04a25..4eb263c 100644 (file)
@@ -20,10 +20,10 @@ package C4::ItemCirculationAlertPreference;
 use strict;
 use warnings;
 use C4::Context;
-use C4::Category;
 use Carp qw(carp croak);
 
 use Koha::ItemTypes;
+use Koha::Patron::Categories;
 
 our $AUTOLOAD;
 
@@ -331,7 +331,7 @@ sub grid {
     my ($class, $where) = @_;
     my @branch_prefs = $class->find($where);
     my @default_prefs = $class->find({ branchcode => '*', notification => $where->{notification} });
-    my @cc = C4::Category->all;
+    my @cc = Koha::Patron::Categories->search_limited;
     my @it = Koha::ItemTypes->search;
     my $notification = $where->{notification};
     my %disabled = map {
index 482da86..ee4d2ac 100644 (file)
@@ -19,6 +19,8 @@ use Modern::Perl;
 
 use Carp;
 
+use C4::Context; # Sigh...
+
 use Koha::Database;
 
 use Koha::Patron::Category;
@@ -35,6 +37,19 @@ Koha::Patron::Categories - Koha Patron Category Object set class
 
 =cut
 
+sub search_limited {
+    my ( $self ) = @_;
+    my $branch_limit = C4::Context->userenv ? C4::Context->userenv->{"branch"} : "";
+    return $self->search({}, {order_by => ['description']}) unless $branch_limit;
+    return $self->search({
+        'categories_branches.branchcode' => [$branch_limit, undef]},
+        {
+            join => 'categories_branches',
+            order_by => ['description'],
+        }
+    );
+}
+
 =head3 type
 
 =cut
index acd94fb..5eb4c95 100644 (file)
@@ -20,28 +20,10 @@ use Modern::Perl;
 use Template::Plugin;
 use base qw( Template::Plugin );
 
-use C4::Category;
 use Koha::Patron::Categories;
 
-sub GetName {
-    my ( $self, $categorycode ) = @_;
-
-    return Koha::Patron::Categories->find( $categorycode )->description;
-}
-
 sub all {
-    my ( $self, $params ) = @_;
-    my $selected = $params->{selected};
-
-    my @categories = C4::Category->all;
-    if ( $selected ) {
-        for my $category ( @categories ) {
-            if ( $category->{categorycode} eq $selected ) {
-                $category->{selected} = 1;
-            }
-        }
-    }
-    return @categories;
+    return Koha::Patron::Categories->search_limited;
 }
 
 1;
index ca302e4..ab1f1ca 100755 (executable)
@@ -22,10 +22,11 @@ use Modern::Perl;
 use CGI qw ( -utf8 );
 use C4::Auth;
 use C4::Branch qw( GetBranches );
-use C4::Category;
 use C4::Output;
 use C4::Members;
 
+use Koha::Patron::Categories;
+
 my $input = new CGI;
 
 my $dbh = C4::Context->dbh;
@@ -54,6 +55,7 @@ my $search_patrons_with_acq_perm_only =
 my $onlymine = C4::Branch::onlymine;
 my $branches = C4::Branch::GetBranches( $onlymine );
 
+my $patron_categories = Koha::Patron::Categories->search_limited;
 $template->param(
     patrons_with_acq_perm_only => $search_patrons_with_acq_perm_only,
     view => ( $input->request_method() eq "GET" ) ? "show_form" : "show_results",
@@ -61,7 +63,7 @@ $template->param(
     json_template => 'acqui/tables/members_results.tt',
     selection_type => 'add',
     alphabet        => ( C4::Context->preference('alphabet') || join ' ', 'A' .. 'Z' ),
-    categories      => [ C4::Category->all ],
+    categories      => $patron_categories,
     branches        => [ map { { branchcode => $_->{branchcode}, branchname => $_->{branchname} } } values %$branches ],
     aaSorting       => 1,
 );
index fdce4be..4f0391a 100755 (executable)
@@ -22,10 +22,11 @@ use Modern::Perl;
 use CGI qw ( -utf8 );
 use C4::Auth;
 use C4::Branch qw( GetBranches );
-use C4::Category;
 use C4::Output;
 use C4::Members;
 
+use Koha::Patron::Categories;
+
 my $input = new CGI;
 
 my $dbh = C4::Context->dbh;
@@ -55,6 +56,7 @@ my $search_patrons_with_acq_perm_only =
 my $onlymine = C4::Branch::onlymine;
 my $branches = C4::Branch::GetBranches( $onlymine );
 
+my $patron_categories = Koha::Patron::Categories->search_limited;
 $template->param(
     patrons_with_acq_perm_only => $search_patrons_with_acq_perm_only,
     view => ( $input->request_method() eq "GET" ) ? "show_form" : "show_results",
@@ -62,7 +64,7 @@ $template->param(
     json_template => 'acqui/tables/members_results.tt',
     selection_type => $selection_type,
     alphabet        => ( C4::Context->preference('alphabet') || join ' ', 'A' .. 'Z' ),
-    categories      => [ C4::Category->all ],
+    categories      => $patron_categories,
     branches        => [ map { { branchcode => $_->{branchcode}, branchname => $_->{branchname} } } values %$branches ],
     aaSorting       => 1,
 );
index ca253aa..3e6e6dd 100755 (executable)
@@ -27,11 +27,11 @@ use JSON;
 use C4::Auth;
 use C4::Context;
 use C4::Branch;
-use C4::Category;
 use C4::ItemCirculationAlertPreference;
 use C4::Output;
 
 use Koha::ItemTypes;
+use Koha::Patron::Categories;
 
 # shortcut for long package name
 our $preferences = 'C4::ItemCirculationAlertPreference';
@@ -65,9 +65,7 @@ sub show {
     }
     my $branch_name = exists($br->{$branch}) && $br->{$branch}->{branchname};
 
-    my @categories = (
-        C4::Category->all
-    );
+    my @categories = Koha::Patron::Categories->search_limited;
     my @item_types = Koha::ItemTypes->search;
     my $grid_checkout = $preferences->grid({ branchcode => $branch, notification => 'CHECKOUT' });
     my $grid_checkin  = $preferences->grid({ branchcode => $branch, notification => 'CHECKIN' });
index fd70509..796d3fe 100644 (file)
@@ -30,7 +30,6 @@ use Mojo::Server::PSGI;
 # Pre-load libraries
 use C4::Boolean;
 use C4::Branch;
-use C4::Category;
 use C4::Koha;
 use C4::Languages;
 use C4::Letters;
index a7e11b3..337f550 100644 (file)
 
         <p>
             <label for="categorycode">Category: </label>
-            [% SET categories = Categories.all( selected => categorycode_filter ) %]
+            [% SET categories = Categories.all() %]
             <select name="categorycode_filter" id="categorycode">
                 <option value="">Any</option>
-                [% FOREACH categorie IN categories %]
-                    [% IF ( categorie.selected ) %]
-                        <option value="[% categorie.categorycode %]" selected="selected">[% categorie.description %]</option>
+                [% FOREACH category IN categories %]
+                    [% IF category.categorycode == categorycode_filter %]
+                        <option value="[% category.categorycode %]" selected="selected">[% category.description %]</option>
                     [% ELSE %]
-                        <option value="[% categorie.categorycode %]">[% categorie.description %]</option>
+                        <option value="[% category.categorycode %]">[% category.description %]</option>
                     [% END %]
                 [% END %]
             </select>
index b149654..0ee110b 100644 (file)
@@ -487,11 +487,11 @@ function filterByFirstLetterSurname(letter) {
             </li>
             <li>
               <label for="categorycode_filter">Category:</label>
-              [% SET categories = Categories.all( selected => categorycode_filter ) %]
+              [% SET categories = Categories.all() %]
               <select id="categorycode_filter">
                 <option value="">Any</option>
                 [% FOREACH cat IN categories %]
-                  [% IF cat.selected %]
+                  [% IF cat.categorycode == categorycode_filter %]
                     <option selected="selected" value="[% cat.categorycode %]">[% cat.description %]</option>
                   [% ELSE %]
                     <option value="[% cat.categorycode %]">[% cat.description %]</option>
index 70b28d4..d34b828 100755 (executable)
@@ -22,10 +22,11 @@ use Modern::Perl;
 use CGI qw ( -utf8 );
 use C4::Auth;
 use C4::Branch qw( GetBranches );
-use C4::Category;
 use C4::Output;
 use C4::Members;
 
+use Koha::Patron::Categories;
+
 my $input = new CGI;
 
 my $dbh = C4::Context->dbh;
@@ -47,13 +48,14 @@ my $referer = $input->referer();
 my $onlymine = C4::Branch::onlymine;
 my $branches = C4::Branch::GetBranches( $onlymine );
 
+my $patron_categories = Koha::Patron::Categories->search_limited;
 $template->param(
     view => ( $input->request_method() eq "GET" ) ? "show_form" : "show_results",
     columns => ['cardnumber', 'name', 'dateofbirth', 'address', 'action' ],
     json_template => 'members/tables/guarantor_search.tt',
     selection_type => 'select',
     alphabet        => ( C4::Context->preference('alphabet') || join ' ', 'A' .. 'Z' ),
-    categories      => [ C4::Category->all ],
+    categories      => $patron_categories,
     branches        => [ map { { branchcode => $_->{branchcode}, branchname => $_->{branchname} } } values %$branches ],
     aaSorting       => 1,
 );
index 810a988..604d029 100755 (executable)
@@ -28,7 +28,6 @@ use C4::Auth;
 use C4::Output;
 use CGI qw( -utf8 );
 use C4::Branch;
-use C4::Category;
 use C4::Members qw( GetMember );
 use Koha::DateUtils;
 use Koha::List::Patron;
index 5b7c614..26d91ce 100755 (executable)
@@ -25,10 +25,10 @@ use C4::Output;
 use C4::Context;
 use C4::Members;
 use C4::Branch;
-use C4::Category;
 use Koha::Patron::Modifications;
 use Koha::Libraries;
 use Koha::List::Patron;
+use Koha::Patron::Categories;
 
 my $query = new CGI;
 my $branch = $query->param('branchcode');
@@ -68,7 +68,6 @@ if ( C4::Branch::onlymine ) {
     }
 }
 
-my @categories;
 my $no_add = 0;
 if(scalar(@branchloop) < 1){
     $no_add = 1;
@@ -78,7 +77,7 @@ else {
     $template->param(branchloop=>\@branchloop);
 }
 
-@categories=C4::Category->all;
+my @categories = Koha::Patron::Categories->search_limited;
 if(scalar(@categories) < 1){
     $no_add = 1;
     $template->param(no_categories => 1);
index db4686a..d07acdb 100755 (executable)
@@ -25,7 +25,6 @@ use C4::Output;
 use C4::Context;
 use C4::Members;
 use C4::Branch;
-use C4::Category;
 use Koha::Patron::Modifications;
 
 my $query = new CGI;
index c97bcc5..f9d1b76 100755 (executable)
@@ -25,7 +25,6 @@ use C4::Output;
 use C4::Context;
 use C4::Members;
 use C4::Branch;
-use C4::Category;
 use Koha::Patron::Modifications;
 
 my $query = new CGI;
index 1d6126b..29ec13e 100755 (executable)
@@ -37,7 +37,6 @@ See http://www.lanekortet.no/ for more information (in Norwegian).
 use Modern::Perl;
 use CGI;
 use C4::Auth;
-use C4::Category;
 use C4::Context;
 use C4::Output;
 use C4::Members;
@@ -46,6 +45,7 @@ use C4::Utils::DataTables::Members;
 use Koha::NorwegianPatronDB qw( NLCheckSysprefs NLSearch NLDecodePin NLGetFirstname NLGetSurname NLSync );
 use Koha::Database;
 use Koha::DateUtils;
+use Koha::Patron::Categories;
 
 my $cgi = CGI->new;
 my $dbh = C4::Context->dbh;
@@ -92,11 +92,10 @@ if ( $op && $op eq 'search' ) {
             my $result = NLSearch( $identifier );
             unless ($result->fault) {
                 my $r = $result->result();
-                # Send the data to the template
-                my @categories = C4::Category->all;
+                my $categories = Koha::Patron::Categories->search_limited;
                 $template->param(
                     'result'     => $r,
-                    'categories' => \@categories,
+                    'categories' => $categories,
                 );
             } else {
                 $template->param( 'error' => join ', ', $result->faultcode, $result->faultstring, $result->faultdetail );
index e24df26..bc2f99c 100644 (file)
@@ -44,10 +44,11 @@ use C4::Letters;
 use C4::Koha;
 use C4::XSLT;
 use C4::Branch;
-use C4::Category;
 use Koha::DateUtils;
 use Koha::Caches;
 use Koha::Cache::Memory::Lite;
+use Koha::Patron::Categories;
+
 =for preload
 use C4::Tags; # FIXME
 =cut
index 3d9f7af..102330f 100755 (executable)
@@ -22,10 +22,11 @@ use Modern::Perl;
 use CGI qw ( -utf8 );
 use C4::Auth;
 use C4::Branch qw( GetBranches );
-use C4::Category;
 use C4::Output;
 use C4::Members;
 
+use Koha::Patron::Categories;
+
 my $input = new CGI;
 
 my $dbh = C4::Context->dbh;
@@ -47,13 +48,14 @@ my $referer = $input->referer();
 my $onlymine = C4::Branch::onlymine;
 my $branches = C4::Branch::GetBranches( $onlymine );
 
+my $patron_categories = Koha::Patron::Categories->search_limited;
 $template->param(
     view            => ( $input->request_method() eq "GET" ) ? "show_form" : "show_results",
     columns         => ['cardnumber', 'name', 'category', 'branch', 'dateexpiry', 'borrowernotes', 'action'],
     json_template   => 'patroncards/tables/members_results.tt',
     selection_type  => 'add',
     alphabet        => ( C4::Context->preference('alphabet') || join ' ', 'A' .. 'Z' ),
-    categories      => [ C4::Category->all ],
+    categories      => $patron_categories,
     branches        => [ map { { branchcode => $_->{branchcode}, branchname => $_->{branchname} } } values %$branches ],
     aaSorting       => 1,
 );
index 792a772..067b815 100755 (executable)
@@ -31,7 +31,6 @@ use C4::Koha;
 use C4::Output;
 use C4::Reports;
 use C4::Members;
-use C4::Category;
 use Koha::DateUtils;
 use List::MoreUtils qw/any/;
 use YAML;
index aa7ffaf..6441a78 100755 (executable)
@@ -22,10 +22,11 @@ use Modern::Perl;
 use CGI qw ( -utf8 );
 use C4::Auth;
 use C4::Branch qw( GetBranches );
-use C4::Category;
 use C4::Output;
 use C4::Members;
 
+use Koha::Patron::Categories;
+
 my $input = new CGI;
 
 my $dbh = C4::Context->dbh;
@@ -46,6 +47,7 @@ my $referer = $input->referer();
 
 my $onlymine = C4::Branch::onlymine;
 my $branches = C4::Branch::GetBranches( $onlymine );
+my $patron_categories = Koha::Patron::Categories->search_limited;
 
 $template->param(
     view => ( $input->request_method() eq "GET" ) ? "show_form" : "show_results",
@@ -53,7 +55,7 @@ $template->param(
     json_template => 'serials/tables/members_results.tt',
     selection_type => 'add',
     alphabet        => ( C4::Context->preference('alphabet') || join ' ', 'A' .. 'Z' ),
-    categories      => [ C4::Category->all ],
+    categories      => $patron_categories,
     branches        => [ map { { branchcode => $_->{branchcode}, branchname => $_->{branchname} } } values %$branches ],
     aaSorting       => 1,
 );
diff --git a/t/db_dependent/Category.t b/t/db_dependent/Category.t
deleted file mode 100755 (executable)
index 93fd0df..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-#!/usr/bin/perl
-
-# This file is part of Koha.
-#
-# Copyright 2014 - Koha Team
-#
-# 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 t::lib::TestBuilder;
-use Test::More tests => 3;
-
-use Koha::Database;
-
-BEGIN {
-    use_ok('C4::Category');
-}
-
-my $schema  = Koha::Database->new->schema;
-$schema->storage->txn_begin;
-
-my $builder = t::lib::TestBuilder->new();
-
-my $nonexistent_categorycode = 'NONEXISTEN';
-$builder->build({
-    source => 'Category',
-    value  => {
-        categorycode          => $nonexistent_categorycode,
-        description           => 'Desc',
-        enrolmentperiod       => 12,
-        enrolementperioddate  => '2014-01-02',
-        upperagelimit         => 99,
-        dateofbirthrequired   => 1,
-        enrolmentfee          => 1.5,
-        reservefee            => 2.5,
-        hidelostitems         => 0,
-        overduenoticerequired => 0,
-        category_type         => 'A',
-    },
-});
-
-my @categories = C4::Category->all;
-ok( @categories, 'all returns categories' );
-
-my $match = grep {$_->{categorycode} eq $nonexistent_categorycode } @categories;
-is( $match, 1, 'all returns the inserted category');
-
-$schema->storage->txn_rollback;
-
-1;
index 440f36e..dc7557c 100644 (file)
@@ -23,7 +23,6 @@ use Test::MockModule;
 use C4::Biblio;
 use C4::Items;
 use C4::Members;
-use C4::Category;
 use Koha::Library;
 use MARC::Record;
 
index b215f33..b687045 100644 (file)
@@ -8,9 +8,9 @@ use C4::Biblio;
 use C4::Items;
 use C4::Members;
 use C4::Branch;
-use C4::Category;
 use C4::Circulation;
 use Koha::Library;
+use Koha::Patron::Categories;
 use MARC::Record;
 
 my $dbh = C4::Context->dbh;
@@ -44,9 +44,9 @@ my $itemnumber3 = AddItem({ barcode => '0203', %item_branch_infos }, $biblionumb
 
 my $categorycode;
 my $category_created;
-my @categories = C4::Category->all;
+my @categories = Koha::Patron::Categories->search_limited;
 if (@categories) {
-    $categorycode = $categories[0]->{categorycode}
+    $categorycode = $categories[0]->categorycode
 } else {
     $categorycode = 'C';
     C4::Context->dbh->do(
index df0327c..2a12fdb 100644 (file)
@@ -19,8 +19,9 @@
 
 use Modern::Perl;
 
-use Test::More tests => 7;
+use Test::More tests => 11;
 
+use C4::Context;
 use Koha::Database;
 use Koha::Patron::Category;
 use Koha::Patron::Categories;
@@ -54,8 +55,24 @@ my $retrieved_category_2 = Koha::Patron::Categories->find( $new_category_2->cate
 is( $retrieved_category_1->checkprevcheckout, 'inherit', 'Koha::Patron::Category->store should default checkprevcheckout to inherit' );
 is( $retrieved_category_2->checkprevcheckout, 'inherit', 'Koha::Patron::Category->store should default checkprevcheckout to inherit' );
 
+my $another_branch = $builder->build( { source => 'Branch', } );
+C4::Context->_new_userenv('my_new_userenv');
+C4::Context->set_userenv( 0, 0, 'usercnum', 'firstname', 'surname', $another_branch->{branchcode}, 'My wonderful library', '', '', '' );
+my $new_category_3 = Koha::Patron::Category->new(
+    {   categorycode => 'mycatcodeZ',
+        description  => 'mycatdescZ',
+    }
+)->store;
+$new_category_3->add_branch_limitation( $another_branch->{branchcode} );
+is( Koha::Patron::Categories->search->count, $nb_of_categories + 3, 'The 3rd patron category should have been added' );
+my @limited_categories = Koha::Patron::Categories->search_limited;
+my @limited_category_codes = map { $_->categorycode } @limited_categories;
+is( scalar( grep { $_ eq $new_category_1->categorycode } @limited_category_codes ), 0, 'The first category is limited to another branch' );
+is( scalar( grep { $_ eq $new_category_2->categorycode } @limited_category_codes ), 1, 'The second category is not limited' );
+is( scalar( grep { $_ eq $new_category_3->categorycode } @limited_category_codes ), 1, 'The third category is limited to my branch ' );
+
 $retrieved_category_1->delete;
-is( Koha::Patron::Categories->search->count, $nb_of_categories + 1, 'Delete should have deleted the patron category' );
+is( Koha::Patron::Categories->search->count, $nb_of_categories + 2, 'Delete should have deleted the patron category' );
 
 $schema->storage->txn_rollback;
 
index 62eae89..eb20ce7 100644 (file)
@@ -8,7 +8,6 @@ use Test::MockModule;
 use C4::Biblio;
 use C4::Items;
 use C4::Members;
-use C4::Category;
 use C4::Circulation;
 use Koha::Libraries;
 use MARC::Record;
index da40880..93662b2 100644 (file)
@@ -8,7 +8,6 @@ use Test::MockModule;
 use C4::Biblio;
 use C4::Items;
 use C4::Members;
-use C4::Category;
 use C4::Circulation;
 use Koha::Libraries;
 use MARC::Record;
index cd51bcb..2bfbc45 100644 (file)
@@ -8,7 +8,6 @@ use Test::MockModule;
 use C4::Biblio;
 use C4::Items;
 use C4::Members;
-use C4::Category;
 use C4::Circulation;
 use Koha::Library;
 use MARC::Record;
index 84ad115..98b5ee7 100644 (file)
@@ -8,7 +8,6 @@ use Test::MockModule;
 use C4::Biblio;
 use C4::Items;
 use C4::Members;
-use C4::Category;
 use C4::Circulation;
 
 use Koha::DateUtils qw( dt_from_string output_pref );
index 1f5db0e..dddc104 100755 (executable)
@@ -22,8 +22,8 @@ use Test::More tests => 14;
 use C4::Biblio qw/AddBiblio/;
 use C4::Members;
 use C4::Context;
-use C4::Category;
 use Koha::Database;
+use Koha::Patron::Categories;
 
 use t::lib::TestBuilder;
 
@@ -41,7 +41,7 @@ my $library = $builder->build({
 
 my ($biblionumber) = AddBiblio( MARC::Record->new, '' );
 
-my @categories   = C4::Category->all;
+my @categories   = Koha::Patron::Categories->search_limited;
 my $categorycode = $categories[0]->categorycode;
 my $branchcode   = $library->{branchcode};
 
index be302e3..acef35b 100644 (file)
@@ -26,6 +26,7 @@ use C4::Members::Attributes;
 use C4::Members::AttributeTypes;
 
 use Koha::Library;
+use Koha::Patron::Categories;
 
 use t::lib::Mocks;
 
@@ -38,7 +39,7 @@ $dbh->{AutoCommit} = 0;
 $dbh->{RaiseError} = 1;
 
 # Pick a categorycode from the DB
-my @categories   = C4::Category->all;
+my @categories   = Koha::Patron::Categories->search_limited;
 my $categorycode = $categories[0]->categorycode;
 # Add a new branch so we control what borrowers it has
 my $branchcode   = "UNC";
index cb5ff55..f35117f 100644 (file)
@@ -24,6 +24,7 @@ use C4::Context;
 use C4::Members;
 
 use Koha::Library;
+use Koha::Patron::Categories;
 use Koha::Virtualshelf;
 use Koha::Virtualshelves;
 
@@ -38,7 +39,7 @@ $dbh->{RaiseError} = 1;
 $dbh->do(q|DELETE FROM virtualshelves|);
 
 # Pick a categorycode from the DB
-my @categories   = C4::Category->all;
+my @categories   = Koha::Patron::Categories->search_limited;
 my $categorycode = $categories[0]->categorycode;
 my $branchcode   = "ABC";
 my $branch_data = {