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

(-)a/t/db_dependent/Koha/Item.t (-2 / +139 lines)
Lines 20-26 Link Here
20
use Modern::Perl;
20
use Modern::Perl;
21
use utf8;
21
use utf8;
22
22
23
use Test::More tests => 38;
23
use Test::More tests => 39;
24
use Test::Exception;
24
use Test::Exception;
25
use Test::MockModule;
25
use Test::MockModule;
26
use Test::Warn;
26
use Test::Warn;
Lines 45-50 use t::lib::Dates; Link Here
45
my $schema  = Koha::Database->new->schema;
45
my $schema  = Koha::Database->new->schema;
46
my $builder = t::lib::TestBuilder->new;
46
my $builder = t::lib::TestBuilder->new;
47
47
48
subtest '_status' => sub {
49
    plan tests => 12;
50
51
    $schema->storage->txn_begin;
52
53
    my $item = $builder->build_sample_item();
54
    my $library = $builder->build_object({ class => 'Koha::Libraries' });
55
    t::lib::Mocks::mock_userenv({
56
        branchcode => $library->branchcode
57
    });
58
59
    t::lib::Mocks::mock_preference('UseRecalls', 1);
60
61
    my $patron = $builder->build_object( { class => 'Koha::Patrons' } );
62
63
    my @test_cases = (
64
        {
65
            setup => sub {
66
                my $onloan_item = $builder->build_sample_item();
67
                AddIssue( $patron, $onloan_item->barcode, dt_from_string );
68
                return $onloan_item;
69
            },
70
            expected_status => 'checked_out',
71
            description     => 'Checked out status correctly returned',
72
        },
73
        {
74
            setup => sub {
75
                my $onsite_item = $builder->build_sample_item();
76
                AddIssue( $patron, $onsite_item->barcode, dt_from_string, undef, undef, undef, { onsite_checkout => 1 } );
77
                return $onsite_item;
78
            },
79
            expected_status => 'local_use',
80
            description     => 'Local use status correctly returned',
81
        },
82
        {
83
            setup => sub {
84
                return $item;
85
            },
86
            expected_status => 'available',
87
            description     => 'Available status correctly returned',
88
        },
89
        {
90
            setup => sub {
91
                $item->itemlost(1)->store();
92
                return $item;
93
            },
94
            expected_status => 'lost',
95
            description     => 'Lost status correctly returned',
96
        },
97
        {
98
            setup => sub {
99
                $item->withdrawn(1)->store();
100
                return $item;
101
            },
102
            expected_status => qr/lost,withdrawn/,
103
            description     => 'Lost and withdrawn status correctly returned',
104
        },
105
        {
106
            setup => sub {
107
                $item->damaged(1)->store();
108
                return $item;
109
            },
110
            expected_status => qr/lost,withdrawn,damaged/,
111
            description     => 'Lost, withdrawn, and damaged status correctly returned',
112
        },
113
        {
114
            setup => sub {
115
                $item->notforloan(1)->store();
116
                return $item;
117
            },
118
            expected_status => 'not_for_loan',
119
            description     => 'Positive not_for_loan status correctly returned',
120
        },
121
        {
122
            setup => sub {
123
                $item->notforloan(-1)->store();
124
                return $item;
125
            },
126
            expected_status => 'not_for_loan',
127
            description     => 'Negative not_for_loan status correctly returned',
128
        },
129
        {
130
            setup => sub {
131
                my $itemtype = $builder->build_object( { class => "Koha::ItemTypes", value => { notforloan => 1 } } );
132
                my $notforloan_item = $builder->build_sample_item( { itype => $itemtype->itemtype, } );
133
                return $notforloan_item;
134
            },
135
            expected_status => 'not_for_loan',
136
            description     => 'Item type not_for_loan status correctly returned',
137
        },
138
        {
139
            setup => sub {
140
                my $onhold_item = $builder->build_sample_item();
141
                C4::Reserves::AddReserve(
142
                    {
143
                        branchcode     => $library->branchcode,
144
                        borrowernumber => $patron->borrowernumber,
145
                        biblionumber   => $onhold_item->biblionumber,
146
                        itemnumber     => $onhold_item->itemnumber,
147
                    }
148
                );
149
                return $onhold_item;
150
            },
151
            expected_status => 'on_hold',
152
            description     => 'On hold status correctly returned',
153
        },
154
        {
155
            setup => sub {
156
                my $recalled_item = $builder->build_sample_item();
157
                AddIssue( $patron, $recalled_item->barcode, dt_from_string );
158
                Koha::Recalls->add_recall(
159
                    { biblio => $recalled_item->biblio, item => $recalled_item, patron => $patron } );
160
                return $recalled_item;
161
                },
162
            expected_status => 'recalled',
163
            description     => 'Recalled status correctly returned',
164
        },
165
        {
166
            setup => sub {
167
                $item->restricted(1)->store();
168
                return $item;
169
            },
170
            expected_status => 'restricted',
171
            description     => 'Restricted status correctly returned',
172
        },
173
    );
174
175
176
    foreach my $test_case (@test_cases) {
177
        my $item = $test_case->{setup}->();
178
        ok( $item->_status() =~ /$test_case->{expected_status}/, $test_case->{description} );
179
    }
180
181
    t::lib::Mocks::mock_preference('UseRecalls', 0);
182
183
    $schema->storage->txn_rollback;
184
};
185
48
subtest 'z3950_status' => sub {
186
subtest 'z3950_status' => sub {
49
    plan tests => 9;
187
    plan tests => 9;
50
188
51
- 

Return to bug 37334