Bug 12868: Improving t/db_dependent/Member.t
The mock function of GetMemberAccountRecord did not properly account for the undef case. This was corrected. Then all 4 combinations of borrower number and card number being defined or not were called to GetMemberDetail. The problematic test case is where the borrower number is undefined and the cardnumber is defined. TEST PLAN --------- 1) Apply just this first patch. 2) prove -v t/db_dependent/Member.t -- This should fail! 3) Run koha QA test tools. Signed-off-by: Jonathan Druart <jonathan.druart@biblibre.com> Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl> Signed-off-by: Mason James <mtj@kohaaloha.com>
This commit is contained in:
parent
c5d177b82e
commit
b8ef9e2885
|
|
@ -246,10 +246,62 @@ is( Check_Userid( 'tomasito', $new_borrowernumber ), 0,
|
|||
is( Check_Userid( C4::Context->config('user'), '' ), 0,
|
||||
'Check_Userid should return 0 for the DB user (Bug 12226)');
|
||||
|
||||
subtest 'GetMemberAccountBalance' => sub {
|
||||
|
||||
plan tests => 10;
|
||||
|
||||
my $members_mock = new Test::MockModule('C4::Members');
|
||||
$members_mock->mock( 'GetMemberAccountRecords', sub {
|
||||
my ($borrowernumber) = @_;
|
||||
if ($borrowernumber) {
|
||||
my @accountlines = (
|
||||
{ amountoutstanding => '7', accounttype => 'Rent' },
|
||||
{ amountoutstanding => '5', accounttype => 'Res' },
|
||||
{ amountoutstanding => '3', accounttype => 'Pay' } );
|
||||
return ( 15, \@accountlines );
|
||||
}
|
||||
else {
|
||||
my @accountlines;
|
||||
return ( 0, \@accountlines );
|
||||
}
|
||||
});
|
||||
|
||||
my $person = GetMemberDetails(undef,undef);
|
||||
ok( !$person , 'Expected no member details from undef,undef' );
|
||||
$person = GetMemberDetails(undef,'987654321');
|
||||
is( $person->{amountoutstanding}, 15,
|
||||
'Expected 15 outstanding for cardnumber.');
|
||||
$borrowernumber = $person->{borrowernumber};
|
||||
$person = GetMemberDetails($borrowernumber,undef);
|
||||
is( $person->{amountoutstanding}, 15,
|
||||
'Expected 15 outstanding for borrowernumber.');
|
||||
$person = GetMemberDetails($borrowernumber,'987654321');
|
||||
is( $person->{amountoutstanding}, 15,
|
||||
'Expected 15 outstanding for both borrowernumber and cardnumber.');
|
||||
|
||||
# do not count holds charges
|
||||
C4::Context->set_preference( 'HoldsInNoissuesCharge', '1' );
|
||||
C4::Context->set_preference( 'ManInvInNoissuesCharge', '0' );
|
||||
my ($total, $total_minus_charges,
|
||||
$other_charges) = C4::Members::GetMemberAccountBalance(123);
|
||||
is( $total, 15 , "Total calculated correctly");
|
||||
is( $total_minus_charges, 15, "Holds charges are not count if HoldsInNoissuesCharge=1");
|
||||
is( $other_charges, 0, "Holds charges are not considered if HoldsInNoissuesCharge=1");
|
||||
|
||||
C4::Context->set_preference( 'HoldsInNoissuesCharge', '0' );
|
||||
($total, $total_minus_charges,
|
||||
$other_charges) = C4::Members::GetMemberAccountBalance(123);
|
||||
is( $total, 15 , "Total calculated correctly");
|
||||
is( $total_minus_charges, 10, "Holds charges are count if HoldsInNoissuesCharge=0");
|
||||
is( $other_charges, 5, "Holds charges are considered if HoldsInNoissuesCharge=1");
|
||||
|
||||
$dbh->rollback();
|
||||
};
|
||||
|
||||
sub _find_member {
|
||||
my ($resultset) = @_;
|
||||
my $found = $resultset && grep( { $_->{cardnumber} && $_->{cardnumber} eq $CARDNUMBER } @$resultset );
|
||||
return $found;
|
||||
}
|
||||
|
||||
1;
|
||||
1;
|
||||
|
|
|
|||
Loading…
Reference in New Issue