View | Details | Raw Unified | Return to bug 32455
Collapse All | Expand All

(-)a/t/db_dependent/Holds/ExpireReservesAutoFill.t (-42 / +51 lines)
Lines 12-20 use MARC::Record; Link Here
12
use C4::Context;
12
use C4::Context;
13
use C4::Biblio;
13
use C4::Biblio;
14
use C4::Items;
14
use C4::Items;
15
use C4::Reserves qw(CancelExpiredReserves);
16
use Koha::Database;
15
use Koha::Database;
17
use Koha::Holds;
16
use Koha::Holds;
17
use Koha::Notice::Messages;
18
18
19
BEGIN {
19
BEGIN {
20
    use FindBin;
20
    use FindBin;
Lines 46-66 my $branch_2 = $builder->build_object({ Link Here
46
});
46
});
47
my $library_2 = $branch_2->branchcode;
47
my $library_2 = $branch_2->branchcode;
48
48
49
my $biblio = $builder->build_sample_biblio({ itemtype => 'DUMMY' });
50
my $biblionumber = $biblio->id;
51
52
# Create item instance for testing.
53
my $itemnumber = $builder->build_sample_item({ library => $library_1, biblionumber => $biblio->biblionumber })->itemnumber;
54
55
my $patron_1 = $builder->build( { source => 'Borrower' } );
56
my $patron_2 = $builder->build( { source => 'Borrower' } );
57
my $patron_3 = $builder->build( { source => 'Borrower' } );
58
49
59
subtest 'Test automatically canceled expired waiting holds to fill the next hold, without a transfer' => sub {
50
subtest 'Test automatically canceled expired waiting holds to fill the next hold, without a transfer' => sub {
60
    plan tests => 10;
51
    plan tests => 12;
52
53
    my $item = $builder->build_sample_item({ library => $library_1 });
54
    my $biblionumber = $item->biblionumber;
55
    my $itemnumber = $item->itemnumber;
61
56
62
    $dbh->do('DELETE FROM reserves');
57
    my $patron_1 = $builder->build( { source => 'Borrower' } );
63
    $dbh->do('DELETE FROM message_queue');
58
    my $patron_2 = $builder->build( { source => 'Borrower' } );
59
    my $patron_3 = $builder->build( { source => 'Borrower' } );
64
60
65
    # Add a hold on the item for each of our patrons
61
    # Add a hold on the item for each of our patrons
66
    my $hold_1 = Koha::Hold->new(
62
    my $hold_1 = Koha::Hold->new(
Lines 94-100 subtest 'Test automatically canceled expired waiting holds to fill the next hold Link Here
94
    my $hold_3 = Koha::Hold->new(
90
    my $hold_3 = Koha::Hold->new(
95
        {
91
        {
96
            priority       => 2,
92
            priority       => 2,
97
            borrowernumber => $patron_2->{borrowernumber},
93
            borrowernumber => $patron_3->{borrowernumber},
98
            branchcode     => $library_1,
94
            branchcode     => $library_1,
99
            biblionumber   => $biblionumber,
95
            biblionumber   => $biblionumber,
100
            itemnumber     => $itemnumber,
96
            itemnumber     => $itemnumber,
Lines 113-121 subtest 'Test automatically canceled expired waiting holds to fill the next hold Link Here
113
    t::lib::Mocks::mock_preference( 'ExpireReservesAutoFillEmail',
109
    t::lib::Mocks::mock_preference( 'ExpireReservesAutoFillEmail',
114
        'kyle@example.com' );
110
        'kyle@example.com' );
115
111
116
    CancelExpiredReserves();
112
    $hold_1->cancel({ autofill => 1 });
117
113
118
    my $holds = Koha::Holds->search( {}, { order_by => 'priority' } );
114
    my $holds = Koha::Holds->search( { biblionumber => $biblionumber }, { order_by => 'priority' } );
119
    $hold_2 = $holds->next;
115
    $hold_2 = $holds->next;
120
    $hold_3 = $holds->next;
116
    $hold_3 = $holds->next;
121
117
Lines 123-155 subtest 'Test automatically canceled expired waiting holds to fill the next hold Link Here
123
    is( $hold_2->priority, 0,   'Next hold in line now has priority of 0' );
119
    is( $hold_2->priority, 0,   'Next hold in line now has priority of 0' );
124
    is( $hold_2->found,    'W', 'Next hold in line is now set to waiting' );
120
    is( $hold_2->found,    'W', 'Next hold in line is now set to waiting' );
125
121
126
    my @messages = $schema->resultset('MessageQueue')
122
    my $messages = Koha::Notice::Messages->search({
127
      ->search( { letter_code => 'HOLD_CHANGED' } );
123
        letter_code => 'HOLD_CHANGED',
128
    is( @messages, 1, 'Found 1 message in the message queue' );
124
        borrowernumber => $patron_2->{borrowernumber}
129
    is( $messages[0]->to_address, 'kyle@example.com', 'Message sent to correct email address' );
125
    } );
130
126
    is( $messages->count, 1, 'Found message in the message queue with  borrower 2 as the object' );
131
    $hold_2->expirationdate('1900-01-01')->store();
127
    my $message = $messages->next;
128
    is( $message->to_address, 'kyle@example.com', 'Message sent to correct email address' );
129
    is( $message->from_address, $branch_1->branchemail, "Message is sent from library's email");
132
130
133
    CancelExpiredReserves();
131
    $hold_2->cancel({ autofill => 1 });
134
132
135
    $holds = Koha::Holds->search( {}, { order_by => 'priority' } );
133
    $holds = Koha::Holds->search( { biblionumber => $biblionumber }, { order_by => 'priority' } );
136
    $hold_3 = $holds->next;
134
    $hold_3 = $holds->next;
137
135
138
    is( $holds->count,     1,   'Found 1 hold' );
136
    is( $holds->count,     1,   'Found 1 hold' );
139
    is( $hold_3->priority, 0,   'Next hold in line now has priority of 0' );
137
    is( $hold_3->priority, 0,   'Next hold in line now has priority of 0' );
140
    is( $hold_3->found,    'W', 'Next hold in line is now set to waiting' );
138
    is( $hold_3->found,    'W', 'Next hold in line is now set to waiting' );
141
139
142
    @messages = $schema->resultset('MessageQueue')
140
    $messages = Koha::Notice::Messages->search({
143
      ->search( { letter_code => 'HOLD_CHANGED' } );
141
        letter_code => 'HOLD_CHANGED',
144
    is( @messages, 2, 'Found 2 messages in the message queue' );
142
        borrowernumber => $patron_3->{borrowernumber}
145
    is( $messages[0]->to_address, 'kyle@example.com', 'Message sent to correct email address' );
143
    });
144
    is( $messages->count, 1, 'Found message with borrower 3 as the object' );
145
    $message = $messages->next;
146
    is( $message->to_address, 'kyle@example.com', 'Message sent to correct email address' );
147
    is( $message->from_address, $branch_1->branchemail, "Message is sent from library's email");
146
};
148
};
147
149
148
subtest 'Test automatically canceled expired waiting holds to fill the next hold, with a transfer' => sub {
150
subtest 'Test automatically canceled expired waiting holds to fill the next hold, with a transfer' => sub {
149
    plan tests => 6;
151
    plan tests => 7;
150
152
151
    $dbh->do('DELETE FROM reserves');
153
    my $item = $builder->build_sample_item({ library => $library_1 });
152
    $dbh->do('DELETE FROM message_queue');
154
    my $biblionumber = $item->biblionumber;
155
    my $itemnumber = $item->itemnumber;
156
157
    my $patron_1 = $builder->build( { source => 'Borrower' } );
158
    my $patron_2 = $builder->build( { source => 'Borrower' } );
159
    my $patron_3 = $builder->build( { source => 'Borrower' } );
153
160
154
    # Add a hold on the item for each of our patrons
161
    # Add a hold on the item for each of our patrons
155
    my $hold_1 = Koha::Hold->new(
162
    my $hold_1 = Koha::Hold->new(
Lines 186-197 subtest 'Test automatically canceled expired waiting holds to fill the next hold Link Here
186
    t::lib::Mocks::mock_preference( 'ReservesMaxPickUpDelay',       1 );
193
    t::lib::Mocks::mock_preference( 'ReservesMaxPickUpDelay',       1 );
187
    t::lib::Mocks::mock_preference( 'ExpireReservesOnHolidays',     1 );
194
    t::lib::Mocks::mock_preference( 'ExpireReservesOnHolidays',     1 );
188
    t::lib::Mocks::mock_preference( 'ExpireReservesAutoFill',       1 );
195
    t::lib::Mocks::mock_preference( 'ExpireReservesAutoFill',       1 );
189
    t::lib::Mocks::mock_preference( 'ExpireReservesAutoFillEmail',
196
    t::lib::Mocks::mock_preference( 'ExpireReservesAutoFillEmail', '' );
190
        'kyle@example.com' );
191
197
192
    CancelExpiredReserves();
198
    $hold_1->cancel({ autofill => 1 });
193
199
194
    my @holds = Koha::Holds->search( {}, { order_by => 'priority' } )->as_list;
200
    my @holds = Koha::Holds->search( { biblionumber => $biblionumber }, { order_by => 'priority' } )->as_list;
195
    $hold_2 = $holds[0];
201
    $hold_2 = $holds[0];
196
202
197
    is( @holds,            1,   'Found 1 hold' );
203
    is( @holds,            1,   'Found 1 hold' );
Lines 199-210 subtest 'Test automatically canceled expired waiting holds to fill the next hold Link Here
199
    is( $hold_2->found,    'T', 'Next hold in line is now set to in transit' );
205
    is( $hold_2->found,    'T', 'Next hold in line is now set to in transit' );
200
    is( $hold_2->branchcode, $library_2, "Next hold in line has correct branchcode" );
206
    is( $hold_2->branchcode, $library_2, "Next hold in line has correct branchcode" );
201
207
202
    my @messages = $schema->resultset('MessageQueue')
208
    my $messages = Koha::Notice::Messages->search({
203
      ->search( { letter_code => 'HOLD_CHANGED' } );
209
        letter_code => 'HOLD_CHANGED',
204
    is( @messages, 1, 'Message is generated in the message queue when generating transfer' );
210
        borrowernumber => $patron_2->{borrowernumber}
205
211
    });
206
    my $email = $messages[0];
212
    is( $messages->count, 1, 'Message is generated in the message queue when generating transfer' );
207
    is( $email->from_address, $branch_2->branchemail, "Message is sent from library's email");
213
    my $message = $messages->next;
214
    # Is the below correct? Email of changed hold is sent to the receiving library
215
    # how does the sending library know to remove book from the holds shelf?
216
    is( $message->to_address, $branch_2->branchreplyto, "Message is sent to the incoming email of the library with the next hold");
217
    is( $message->from_address, $branch_2->branchemail, "Message is sent from library's email");
208
};
218
};
209
219
210
$schema->storage->txn_rollback;
220
$schema->storage->txn_rollback;
211
- 

Return to bug 32455