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

(-)a/Koha/Hold/CancellationRequest.pm (+68 lines)
Line 0 Link Here
1
package Koha::Hold::CancellationRequest;
2
3
# This file is part of Koha.
4
#
5
# Koha is free software; you can redistribute it and/or modify it
6
# under the terms of the GNU General Public License as published by
7
# the Free Software Foundation; either version 3 of the License, or
8
# (at your option) any later version.
9
#
10
# Koha is distributed in the hope that it will be useful, but
11
# WITHOUT ANY WARRANTY; without even the implied warranty of
12
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
# GNU General Public License for more details.
14
#
15
# You should have received a copy of the GNU General Public License
16
# along with Koha; if not, see <http://www.gnu.org/licenses>.
17
18
use Modern::Perl;
19
20
21
use Koha::Database;
22
23
use base qw(Koha::Object);
24
25
=head1 NAME
26
27
Koha::Hold::CancellationRequest - Koha hold cancellation request Object class
28
29
=head1 API
30
31
=head2 Class methods
32
33
=head3 store
34
35
    $request->store;
36
37
Overloaded I<store> method that performs some checks.
38
39
=cut
40
41
sub store {
42
    my ($self) = @_;
43
44
    if ( !$self->in_storage ) { # new request
45
        $self->creation_date( \'NOW()' )
46
          unless $self->creation_date;
47
    }
48
49
    return $self->SUPER::store;
50
}
51
52
=head2 Internal methods
53
54
=head3 _type
55
56
=cut
57
58
sub _type {
59
    return 'HoldCancellationRequest';
60
}
61
62
=head1 AUTHORS
63
64
Tomas Cohen Arazi <tomascohen@theke.io>
65
66
=cut
67
68
1;
(-)a/Koha/Hold/CancellationRequests.pm (+69 lines)
Line 0 Link Here
1
package Koha::Hold::CancellationRequests;
2
3
# This file is part of Koha.
4
#
5
# Koha is free software; you can redistribute it and/or modify it
6
# under the terms of the GNU General Public License as published by
7
# the Free Software Foundation; either version 3 of the License, or
8
# (at your option) any later version.
9
#
10
# Koha is distributed in the hope that it will be useful, but
11
# WITHOUT ANY WARRANTY; without even the implied warranty of
12
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
# GNU General Public License for more details.
14
#
15
# You should have received a copy of the GNU General Public License
16
# along with Koha; if not, see <http://www.gnu.org/licenses>.
17
18
use Modern::Perl;
19
20
21
use Koha::Database;
22
23
use Koha::Hold::CancellationRequest;
24
25
use base qw(Koha::Objects);
26
27
=head1 NAME
28
29
Koha::Hold::CancellationRequests - Koha hold cancellation requests Object set class
30
31
=head1 API
32
33
=head2 Class methods
34
35
=head3 filter_by_current
36
37
=cut
38
39
sub filter_by_current {
40
    my ($self) = @_;
41
42
    return $self->search({ status => 'requested' });
43
}
44
45
=head2 Internal methods
46
47
=head3 _type
48
49
=cut
50
51
sub _type {
52
    return 'HoldCancellationRequest';
53
}
54
55
=head3 object_class
56
57
=cut
58
59
sub object_class {
60
    return 'Koha::Hold::CancellationRequest';
61
}
62
63
=head1 AUTHORS
64
65
Tomas Cohen Arazi <tomascohen@theke.io>
66
67
=cut
68
69
1;
(-)a/t/db_dependent/Koha/Hold/CancellationRequest.t (+67 lines)
Line 0 Link Here
1
#!/usr/bin/perl
2
3
# This file is part of Koha.
4
#
5
# Koha is free software; you can redistribute it and/or modify it
6
# under the terms of the GNU General Public License as published by
7
# the Free Software Foundation; either version 3 of the License, or
8
# (at your option) any later version.
9
#
10
# Koha is distributed in the hope that it will be useful, but
11
# WITHOUT ANY WARRANTY; without even the implied warranty of
12
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
# GNU General Public License for more details.
14
#
15
# You should have received a copy of the GNU General Public License
16
# along with Koha; if not, see <http://www.gnu.org/licenses>.
17
18
use Modern::Perl;
19
20
use Test::More tests => 1;
21
22
use Koha::Hold::CancellationRequests;
23
24
use t::lib::TestBuilder;
25
26
my $schema  = Koha::Database->new->schema;
27
my $builder = t::lib::TestBuilder->new;
28
29
subtest 'store() tests' => sub {
30
31
    plan tests => 2;
32
33
    $schema->storage->txn_begin;
34
35
    my $item = $builder->build_sample_item;
36
    my $hold = $builder->build_object(
37
        {
38
            class => 'Koha::Holds',
39
            value => {
40
                found      => 'W', # waiting hold
41
                itemnumber => $item->id,
42
            }
43
        }
44
    );
45
46
    my $creation_date = '2021-06-25 14:05:35';
47
48
    my $request = Koha::Hold::CancellationRequest->new(
49
        {
50
            creation_date => undef,
51
            hold_id       => $hold->id
52
        }
53
    )->store;
54
55
    isnt( $request->creation_date, undef, 'creation_date is always set' );
56
57
    $request = Koha::Hold::CancellationRequest->new(
58
        {
59
            creation_date => $creation_date,
60
            hold_id       => $hold->id
61
        }
62
    )->store;
63
64
    is( $request->creation_date, $creation_date, 'Passed creation_date set' );
65
66
    $schema->storage->txn_rollback;
67
};
(-)a/t/db_dependent/Koha/Hold/CancellationRequests.t (-1 / +72 lines)
Line 0 Link Here
0
- 
1
#!/usr/bin/perl
2
3
# This file is part of Koha.
4
#
5
# Koha is free software; you can redistribute it and/or modify it
6
# under the terms of the GNU General Public License as published by
7
# the Free Software Foundation; either version 3 of the License, or
8
# (at your option) any later version.
9
#
10
# Koha is distributed in the hope that it will be useful, but
11
# WITHOUT ANY WARRANTY; without even the implied warranty of
12
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
# GNU General Public License for more details.
14
#
15
# You should have received a copy of the GNU General Public License
16
# along with Koha; if not, see <http://www.gnu.org/licenses>.
17
18
use Modern::Perl;
19
20
use Test::More tests => 1;
21
22
use Koha::Database;
23
24
use t::lib::TestBuilder;
25
26
my $schema  = Koha::Database->new->schema;
27
my $builder = t::lib::TestBuilder->new;
28
29
subtest 'filter_by_current() tests' => sub {
30
31
    plan tests => 3;
32
33
    $schema->storage->txn_begin;
34
35
    my $requested = $builder->build_object(
36
        {
37
            class => 'Koha::Hold::CancellationRequests',
38
            value => { status => 'requested' }
39
        }
40
    );
41
    my $accepted = $builder->build_object(
42
        {
43
            class => 'Koha::Hold::CancellationRequests',
44
            value => { status => 'accepted' }
45
        }
46
    );
47
    my $rejected = $builder->build_object(
48
        {
49
            class => 'Koha::Hold::CancellationRequests',
50
            value => { status => 'rejected' }
51
        }
52
    );
53
54
    my $rs = Koha::Hold::CancellationRequests->search(
55
        {
56
            hold_cancellation_request_id => [
57
                $requested->id,
58
                $accepted->id,
59
                $rejected->id,
60
            ]
61
        }
62
    );
63
64
    is( $rs->count, 3 );
65
66
    my $rs_current = $rs->filter_by_current;
67
68
    is( $rs_current->count, 1 );
69
    is( $rs_current->next->status, 'requested' );
70
71
    $schema->storage->txn_rollback;
72
};

Return to bug 22456