1 package KohaTest::Overdues::GetOverdues;
2 use base qw( KohaTest::Overdues );
10 =head3 create_overdue_item
14 sub startup_60_create_overdue_item : Test( startup => 17 ) {
17 $self->add_biblios( add_items => 1 );
19 my $biblionumber = $self->{'biblios'}[0];
20 ok( $biblionumber, 'biblionumber' );
21 my @biblioitems = C4::Biblio::GetBiblioItemByBiblioNumber( $biblionumber );
22 ok( scalar @biblioitems > 0, 'there is at least one biblioitem' );
23 my $biblioitemnumber = $biblioitems[0]->{'biblioitemnumber'};
24 ok( $biblioitemnumber, 'got a biblioitemnumber' );
26 my $items = C4::Items::GetItemsByBiblioitemnumber( $biblioitemnumber);
28 my $item = $items->[0];
29 ok( $item->{'itemnumber'}, 'item number' );
30 $self->{'overdueitemnumber'} = $item->{'itemnumber'};
32 # let's use the database to do date math for us.
33 # This is a US date, but that's how C4::Dates likes it, apparently.
34 my $dbh = C4::Context->dbh();
35 my $date_list = $dbh->selectcol_arrayref( q( select DATE_FORMAT( FROM_DAYS( TO_DAYS( NOW() ) - 6 ), '%m/%d/%Y' ) ) );
36 my $six_days_ago = shift( @$date_list );
38 my $duedate = C4::Dates->new( $six_days_ago );
39 # diag( Data::Dumper->Dump( [ $duedate ], [ 'duedate' ] ) );
41 ok( $item->{'barcode'}, 'barcode' )
42 or diag( Data::Dumper->Dump( [ $item ], [ 'item' ] ) );
43 # my $item_from_barcode = C4::Items::GetItem( undef, $item->{'barcode'} );
44 # diag( Data::Dumper->Dump( [ $item_from_barcode ], [ 'item_from_barcode' ] ) );
46 ok( $self->{'memberid'}, 'memberid' );
47 my $borrower = C4::Members::GetMember( borrowernumber=>$self->{'memberid'} );
48 ok( $borrower->{'borrowernumber'}, 'borrowernumber' );
50 my ( $issuingimpossible, $needsconfirmation ) = C4::Circulation::CanBookBeIssued( $borrower, $item->{'barcode'}, $duedate, 0 );
51 # diag( Data::Dumper->Dump( [ $issuingimpossible, $needsconfirmation ], [ qw( issuingimpossible needsconfirmation ) ] ) );
52 is( keys %$issuingimpossible, 0, 'issuing is not impossible' );
53 is( keys %$needsconfirmation, 0, 'issuing needs no confirmation' );
55 C4::Circulation::AddIssue( $borrower, $item->{'barcode'}, $duedate );
58 sub basic_usage : Test( 2 ) {
61 my $overdues = C4::Overdues::Getoverdues();
62 isa_ok( $overdues, 'ARRAY' );
63 is( scalar @$overdues, 1, 'found our one overdue book' );
66 sub limit_minimum_and_maximum : Test( 2 ) {
69 my $overdues = C4::Overdues::Getoverdues( { minimumdays => 1, maximumdays => 100 } );
70 isa_ok( $overdues, 'ARRAY' );
71 is( scalar @$overdues, 1, 'found our one overdue book' );
74 sub limit_and_do_not_find_it : Test( 2 ) {
77 my $overdues = C4::Overdues::Getoverdues( { minimumdays => 1, maximumdays => 2 } );
78 isa_ok( $overdues, 'ARRAY' );
79 is( scalar @$overdues, 0, 'there are no overdue books in that range.' );
84 sub run_overduenotices_script : Test( 1 ) {
87 # make sure member wants alerts
88 C4::Members::Attributes::UpdateBorrowerAttribute($self->{'memberid'},
89 { code => 'PREDEmail',
92 # we're screwing with C4::Circulation::GetUpcomingIssues by passing in a negative number.
93 C4::Members::Attributes::UpdateBorrowerAttribute($self->{'memberid'},
98 my $before_count = $self->count_message_queue();
100 my $output = qx( ../misc/cronjobs/advance_notices.pl -c );
102 my $after_count = $self->count_message_queue();
103 is( $after_count, $before_count + 1, 'there is one more message in the queue than there used to be.' )
111 sub count_message_queue {
114 my $dbh = C4::Context->dbh();
115 my $statement = q( select count(0) from message_queue where status = 'pending' );
116 my $countlist = $dbh->selectcol_arrayref( $statement );
117 return $countlist->[0];