From c84f41624bb8eefa44872e15746cef5393466fb8 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Fri, 22 Jul 2016 17:20:08 +0100 Subject: [PATCH] Bug 16965: Add Koha::Objects->search_related MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit In order to search on relations, we need this new method. Test plan: Confirm that the changes in Objects.t make sense and that the tests pass. Tested all 3 patches together, followed test plan, result OK Signed-off-by: Marc Véron Signed-off-by: Tomas Cohen Arazi Signed-off-by: Martin Renvoize Signed-off-by: Kyle M Hall --- Koha/Objects.pm | 13 +++++++++++++ t/db_dependent/Koha/Objects.t | 13 ++++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/Koha/Objects.pm b/Koha/Objects.pm index 9d4d5915bb..2b407c67f7 100644 --- a/Koha/Objects.pm +++ b/Koha/Objects.pm @@ -130,6 +130,19 @@ sub search { } } +=head3 search_related + + my @objects = Koha::Objects->search_related( $rel_name, $cond?, \%attrs? ); + +Searches the specified relationship, optionally specifying a condition and attributes for matching records. + +=cut + +sub search_related { + my ( $self, @params ) = @_; + return $self->_resultset->search_related( @params ); +} + =head3 Koha::Objects->next(); my $object = Koha::Objects->next(); diff --git a/t/db_dependent/Koha/Objects.t b/t/db_dependent/Koha/Objects.t index 46348e426f..dcea7e5b63 100644 --- a/t/db_dependent/Koha/Objects.t +++ b/t/db_dependent/Koha/Objects.t @@ -19,7 +19,7 @@ use Modern::Perl; -use Test::More tests => 7; +use Test::More tests => 8; use Test::Warn; use Koha::Authority::Types; @@ -81,5 +81,16 @@ subtest 'not_covered_yet' => sub { warning_is { Koha::Patrons->search->not_covered_yet } { carped => 'The method not_covered_yet is not covered by tests' }, "If a method is not covered by tests, the AUTOLOAD method won't execute the method"; }; +subtest 'search_related' => sub { + plan tests => 3; + my $builder = t::lib::TestBuilder->new; + my $patron_1 = $builder->build( { source => 'Borrower' } ); + my $patron_2 = $builder->build( { source => 'Borrower' } ); + my $libraries = Koha::Patrons->search( { -or => { borrowernumber => [ $patron_1->{borrowernumber}, $patron_2->{borrowernumber} ] } } )->search_related('branchcode'); + is( $libraries->count, 2, 'Koha::Objects->search_related should work as expected' ); + is( $libraries->next->branchcode, $patron_1->{branchcode}, 'Koha::Objects->search_related should work as expected' ); + is( $libraries->next->branchcode, $patron_2->{branchcode}, 'Koha::Objects->search_related should work as expected' ); +}; + $schema->storage->txn_rollback; 1; -- 2.39.5