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

(-)a/t/db_dependent/SIP/Transaction.t (-2 / +100 lines)
Lines 4-10 Link Here
4
# Current state is very rudimentary. Please help to extend it!
4
# Current state is very rudimentary. Please help to extend it!
5
5
6
use Modern::Perl;
6
use Modern::Perl;
7
use Test::More tests => 17;
7
use Test::More tests => 18;
8
8
9
use Koha::Database;
9
use Koha::Database;
10
use t::lib::TestBuilder;
10
use t::lib::TestBuilder;
Lines 22-27 use C4::Reserves qw( AddReserve ModReserve ModReserveAffect RevertWaitingStatus Link Here
22
use Koha::CirculationRules;
22
use Koha::CirculationRules;
23
use Koha::Item::Transfer;
23
use Koha::Item::Transfer;
24
use Koha::DateUtils qw( dt_from_string output_pref );
24
use Koha::DateUtils qw( dt_from_string output_pref );
25
use Koha::Recalls;
25
26
26
my $schema = Koha::Database->new->schema;
27
my $schema = Koha::Database->new->schema;
27
$schema->storage->txn_begin;
28
$schema->storage->txn_begin;
Lines 1043-1046 subtest item_circulation_status => sub { Link Here
1043
    is( $status, '01', "Item circulation status is damaged" );
1044
    is( $status, '01', "Item circulation status is damaged" );
1044
    $item->damaged(0)->store();
1045
    $item->damaged(0)->store();
1045
};
1046
};
1047
1048
subtest do_checkout_with_recalls => sub {
1049
    plan tests => 7;
1050
1051
    my $library = $builder->build_object( { class => 'Koha::Libraries' } );
1052
    my $patron = $builder->build_object(
1053
        {
1054
            class => 'Koha::Patrons',
1055
            value => {
1056
                branchcode => $library->branchcode,
1057
            }
1058
        }
1059
    );
1060
    my $patron2 = $builder->build_object(
1061
        {
1062
            class => 'Koha::Patrons',
1063
            value => {
1064
                branchcode => $library->branchcode,
1065
            }
1066
        }
1067
    );
1068
1069
    t::lib::Mocks::mock_userenv(
1070
        { branchcode => $library->branchcode, flags => 1 } );
1071
1072
    my $item = $builder->build_sample_item(
1073
        {
1074
            library => $library->branchcode,
1075
        }
1076
    );
1077
1078
    t::lib::Mocks::mock_preference('UseRecalls',1);
1079
    Koha::CirculationRules->set_rule({
1080
        branchcode => undef,
1081
        categorycode => undef,
1082
        itemtype => undef,
1083
        rule_name => 'recalls_allowed',
1084
        rule_value => '10',
1085
    });
1086
1087
    my $recall1 = Koha::Recall->new(
1088
        {
1089
            patron_id         => $patron2->borrowernumber,
1090
            created_date      => \'NOW()',
1091
            biblio_id         => $item->biblio->biblionumber,
1092
            pickup_library_id => $library->branchcode,
1093
            item_id           => $item->itemnumber,
1094
            expiration_date   => undef,
1095
            item_level        => 1
1096
        }
1097
    )->store;
1098
1099
    my $sip_patron  = C4::SIP::ILS::Patron->new( $patron->cardnumber );
1100
    my $sip_item    = C4::SIP::ILS::Item->new( $item->barcode );
1101
    my $co_transaction = C4::SIP::ILS::Transaction::Checkout->new();
1102
    is( $co_transaction->patron($sip_patron),
1103
        $sip_patron, "Patron assigned to transaction" );
1104
    is( $co_transaction->item($sip_item),
1105
        $sip_item, "Item assigned to transaction" );
1106
1107
    # Test recalls made by another patron
1108
1109
    $recall1->set_waiting({ item => $item });
1110
    $co_transaction->do_checkout();
1111
    is( $patron->checkouts->count, 0, 'Checkout was not done due to waiting recall');
1112
1113
    $recall1->revert_waiting;
1114
    $recall1->start_transfer({ item => $item });
1115
    $co_transaction->do_checkout();
1116
    is( $patron->checkouts->count, 0, 'Checkout was not done due to recall in transit');
1117
1118
    $recall1->revert_transfer;
1119
    $recall1->update({ item_id => undef, item_level => 0 });
1120
    $co_transaction->do_checkout();
1121
    is( $patron->checkouts->count, 0, 'Checkout was not done due to a biblio-level recall that this item could fill');
1122
1123
    $recall1->set_cancelled;
1124
1125
    my $recall2 = Koha::Recall->new(
1126
        {
1127
            patron_id         => $patron->borrowernumber,
1128
            created_date      => \'NOW()',
1129
            biblio_id         => $item->biblio->biblionumber,
1130
            pickup_library_id => $library->branchcode,
1131
            item_id           => $item->itemnumber,
1132
            expiration_date   => undef,
1133
            item_level        => 1
1134
        }
1135
    )->store;
1136
1137
    # Test recalls made by SIP patron
1138
1139
    $recall2->set_waiting({ item => $item });
1140
    $co_transaction->do_checkout();
1141
    is( $patron->checkouts->count, 1, 'Checkout was done because recalled item was allocated to them' );
1142
    is( $recall2->status, 'fulfilled', 'Recall is fulfilled by checked out item' );
1143
};
1144
1046
$schema->storage->txn_rollback;
1145
$schema->storage->txn_rollback;
1047
- 

Return to bug 34016