Bug 16155: Adjust a few other tests
[koha.git] / t / db_dependent / Members / AddEnrolmentFeeIfNeeded.t
1 use Modern::Perl;
2 use Test::More tests => 4;
3
4 use C4::Context;
5 use C4::Members;
6 use Koha::Database;
7
8 use t::lib::Mocks;
9 use t::lib::TestBuilder;
10
11 my $schema = Koha::Database->schema;
12 $schema->storage->txn_begin;
13 my $builder = t::lib::TestBuilder->new;
14 my $dbh = C4::Context->dbh;
15 $dbh->{RaiseError} = 1;
16
17 my $library = $builder->build({
18     source => 'Branch',
19 });
20
21 my $enrolmentfee_K = 5;
22 my $enrolmentfee_J = 10;
23 my $enrolmentfee_YA = 20;
24
25 $dbh->do(q{
26     UPDATE categories
27     SET enrolmentfee=?
28     WHERE categorycode=?
29 }, {}, $enrolmentfee_K, 'K' );
30
31 $dbh->do(q{
32     UPDATE categories
33     SET enrolmentfee=?
34     WHERE categorycode=?
35 }, {}, $enrolmentfee_J, 'J' );
36
37 $dbh->do(q{
38     UPDATE categories
39     SET enrolmentfee=?
40     WHERE categorycode=?
41 }, {}, $enrolmentfee_YA, 'YA' );
42
43 my %borrower_data = (
44     firstname =>  'my firstname',
45     surname => 'my surname',
46     categorycode => 'K',
47     branchcode => $library->{branchcode},
48 );
49
50 my $borrowernumber = C4::Members::AddMember( %borrower_data );
51 $borrower_data{borrowernumber} = $borrowernumber;
52
53 my ( $total ) = C4::Members::GetMemberAccountRecords( $borrowernumber );
54 is( $total, $enrolmentfee_K, "New kid pay $enrolmentfee_K" );
55
56 t::lib::Mocks::mock_preference( 'FeeOnChangePatronCategory', 0 );
57 $borrower_data{categorycode} = 'J';
58 C4::Members::ModMember( %borrower_data );
59 ( $total ) = C4::Members::GetMemberAccountRecords( $borrowernumber );
60 is( $total, $enrolmentfee_K , "Kid growing and become a juvenile, but shouldn't pay for the upgrade ");
61
62 $borrower_data{categorycode} = 'K';
63 C4::Members::ModMember( %borrower_data );
64 t::lib::Mocks::mock_preference( 'FeeOnChangePatronCategory', 1 );
65
66 $borrower_data{categorycode} = 'J';
67 C4::Members::ModMember( %borrower_data );
68 ( $total ) = C4::Members::GetMemberAccountRecords( $borrowernumber );
69 is( $total, $enrolmentfee_K + $enrolmentfee_J, "Kid growing and become a juvenile, he should pay " . ( $enrolmentfee_K + $enrolmentfee_J ) );
70
71 # Check with calling directly AddEnrolmentFeeIfNeeded
72 C4::Members::AddEnrolmentFeeIfNeeded( 'YA', $borrowernumber );
73 ( $total ) = C4::Members::GetMemberAccountRecords( $borrowernumber );
74 is( $total, $enrolmentfee_K + $enrolmentfee_J + $enrolmentfee_YA, "Juvenile growing and become an young adult, he should pay " . ( $enrolmentfee_K + $enrolmentfee_J + $enrolmentfee_YA ) );