From 70dbb80ba3c995699040aa127ce084ed20861e4b Mon Sep 17 00:00:00 2001 From: Martin Renvoize Date: Tue, 16 Jan 2024 11:31:41 +0000 Subject: [PATCH] Bug 35248: Add unit test for Koha::Item->bookings relation This patch adds a simple unit test for the 'bookings' relation accessor added to Koha::Item. Test plan 1) Run t/db_dependant/Koha/Item.t --- t/db_dependent/Koha/Item.t | 48 +++++++++++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/t/db_dependent/Koha/Item.t b/t/db_dependent/Koha/Item.t index 7a21db18f55..0e47c5d4cc0 100755 --- a/t/db_dependent/Koha/Item.t +++ b/t/db_dependent/Koha/Item.t @@ -20,7 +20,7 @@ use Modern::Perl; use utf8; -use Test::More tests => 31; +use Test::More tests => 32; use Test::Exception; use Test::MockModule; @@ -2362,3 +2362,49 @@ subtest 'location_update_trigger() tests' => sub { $schema->storage->txn_rollback; }; + +subtest 'bookings' => sub { + plan tests => 4; + + $schema->storage->txn_begin; + + my $biblio = $builder->build_sample_biblio(); + my $item = $builder->build_sample_item( { biblionumber => $biblio->biblionumber, bookable => 1 } ); + is( ref( $item->bookings() ), 'Koha::Bookings', "Koha::Item->bookings() returns a Koha::Bookings object" ); + is( $item->bookings->count, 0, "Nothing returned if there are no bookings" ); + + my $start_1 = dt_from_string()->subtract( days => 7 ); + my $end_1 = dt_from_string()->subtract( days => 1 ); + my $start_2 = dt_from_string(); + my $end_2 = dt_from_string()->add( days => 7 ); + my $start_3 = dt_from_string()->add( days => 8 ); + my $end_3 = dt_from_string()->add( days => 16 ); + + my $booking1 = $builder->build_object( + { + class => 'Koha::Bookings', + value => { item_id => $item->itemnumber, start_date => $start_1, end_date => $end_1 } + } + ); + my $booking2 = $builder->build_object( + { + class => 'Koha::Bookings', + value => { item_id => $item->itemnumber, start_date => $start_2, end_date => $end_2 } + } + ); + my $booking3 = $builder->build_object( + { + class => 'Koha::Bookings', + value => { item_id => $item->itemnumber, start_date => $start_3, end_date => $end_3 } + } + ); + + is( $item->bookings()->count, 3, "Three bookings found" ); + my $dtf = Koha::Database->new->schema->storage->datetime_parser; + is( + $item->bookings( { start_date => { '<=' => $dtf->format_datetime( dt_from_string() ) } } )->count, 2, + "Two bookings starts on or before today" + ); + + $schema->storage->txn_rollback; +}; -- 2.43.0