10 use t::lib::TestBuilder;
12 use Test::More tests => 31;
14 use_ok('Koha::Patron::Debarments');
16 my $schema = Koha::Database->schema;
17 $schema->storage->txn_begin;
18 my $builder = t::lib::TestBuilder->new;
19 my $dbh = C4::Context->dbh;
21 my $library = $builder->build({
25 my $borrowernumber = AddMember(
26 firstname => 'my firstname',
27 surname => 'my surname',
29 branchcode => $library->{branchcode},
32 my $success = AddDebarment({
33 borrowernumber => $borrowernumber,
34 expiration => '9999-06-10',
38 is( $success, 1, "AddDebarment returned true" );
41 my $debarments = GetDebarments({ borrowernumber => $borrowernumber });
42 is( @$debarments, 1, "GetDebarments returns 1 debarment" );
43 is( $debarments->[0]->{'type'}, 'MANUAL', "Correctly stored 'type'" );
44 is( $debarments->[0]->{'expiration'}, '9999-06-10', "Correctly stored 'expiration'" );
45 is( $debarments->[0]->{'comment'}, 'Test 1', "Correctly stored 'comment'" );
48 $success = AddDebarment({
49 borrowernumber => $borrowernumber,
53 $debarments = GetDebarments({ borrowernumber => $borrowernumber });
54 is( @$debarments, 2, "GetDebarments returns 2 debarments" );
55 is( $debarments->[1]->{'type'}, 'MANUAL', "Correctly stored 'type'" );
56 is( $debarments->[1]->{'expiration'}, undef, "Correctly stored debarrment with no expiration" );
57 is( $debarments->[1]->{'comment'}, 'Test 2', "Correctly stored 'comment'" );
61 borrower_debarment_id => $debarments->[1]->{'borrower_debarment_id'},
63 expiration => '9998-06-10',
65 $debarments = GetDebarments({ borrowernumber => $borrowernumber });
66 is( $debarments->[1]->{'comment'}, 'Test 3', "ModDebarment functions correctly" );
69 my $patron = GetMember( borrowernumber => $borrowernumber );
70 is( $patron->{'debarred'}, '9999-06-10', "Field borrowers.debarred set correctly" );
71 is( $patron->{'debarredcomment'}, "Test 1\nTest 3", "Field borrowers.debarredcomment set correctly" );
75 borrowernumber => $borrowernumber,
78 $debarments = GetDebarments({
79 borrowernumber => $borrowernumber,
82 is( @$debarments, 1, "GetDebarments returns 1 OVERDUES debarment" );
83 is( $debarments->[0]->{'type'}, 'OVERDUES', "AddOverduesDebarment created new debarment correctly" );
86 borrowernumber => $borrowernumber,
87 expiration => '9999-11-09',
90 $debarments = GetDebarments({
91 borrowernumber => $borrowernumber,
94 is( @$debarments, 1, "GetDebarments returns 1 OVERDUES debarment after running AddOverduesDebarment twice" );
95 is( $debarments->[0]->{'expiration'}, '9999-11-09', "AddOverduesDebarment updated OVERDUES debarment correctly" );
98 my $delUniqueDebarment = DelUniqueDebarment({
100 is( $delUniqueDebarment, undef, "DelUniqueDebarment without the arguments 'borrowernumber' and 'type' returns undef" );
101 $debarments = GetDebarments({
102 borrowernumber => $borrowernumber,
105 is( @$debarments, 1, "DelUniqueDebarment without the arguments 'borrowernumber' and 'type' does not delete the debarment" );
107 $delUniqueDebarment = DelUniqueDebarment({
108 borrowernumber => $borrowernumber,
110 is( $delUniqueDebarment, undef, "DelUniqueDebarment without the argument 'type' returns undef" );
111 $debarments = GetDebarments({
112 borrowernumber => $borrowernumber,
115 is( @$debarments, 1, "DelUniqueDebarment without the argument 'type' does not delete the debarment" );
117 $delUniqueDebarment = DelUniqueDebarment({
120 is( $delUniqueDebarment, undef, "DelUniqueDebarment without the argument 'borrowernumber' returns undef" );
121 $debarments = GetDebarments({
122 borrowernumber => $borrowernumber,
125 is( @$debarments, 1, "DelUniqueDebarment without the argument 'borrowerumber' does not delete the debarment" );
127 $delUniqueDebarment = DelUniqueDebarment({
128 borrowernumber => $borrowernumber,
129 type => 'SUSPENSION',
131 is( $delUniqueDebarment, undef, "DelUniqueDebarment with wrong arguments returns undef" );
132 $debarments = GetDebarments({
133 borrowernumber => $borrowernumber,
136 is( @$debarments, 1, "DelUniqueDebarment with wrong arguments does not delete the debarment" );
138 $delUniqueDebarment = DelUniqueDebarment({
139 borrowernumber => $borrowernumber,
142 is( $delUniqueDebarment, 1, "DelUniqueDebarment returns 1" );
143 $debarments = GetDebarments({
144 borrowernumber => $borrowernumber,
147 is( @$debarments, 0, "DelUniqueDebarment functions correctly" );
150 $debarments = GetDebarments({ borrowernumber => $borrowernumber });
151 foreach my $d ( @$debarments ) {
152 DelDebarment( $d->{'borrower_debarment_id'} );
154 $debarments = GetDebarments({ borrowernumber => $borrowernumber });
155 is( @$debarments, 0, "DelDebarment functions correctly" );
157 $dbh->do(q|UPDATE borrowers SET debarred = '1970-01-01'|);
158 is( Koha::Patrons->find( $borrowernumber )->is_debarred, undef, 'A patron with a debarred date in the past is not debarred' );
160 $dbh->do(q|UPDATE borrowers SET debarred = NULL|);
161 is( Koha::Patrons->find( $borrowernumber )->is_debarred, undef, 'A patron without a debarred date is not debarred' );
163 $dbh->do(q|UPDATE borrowers SET debarred = '9999-12-31'|); # Note: Change this test before the first of January 10000!
164 is( Koha::Patrons->find( $borrowernumber )->is_debarred, '9999-12-31', 'A patron with a debarred date in the future is debarred' );