Test suite: C4::Members::GetMemberDetails

Tests for C4::Members::GetMemberDetails.  Validates both calls
using either borrowernumber or cardnumber.

Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
This commit is contained in:
Allen Reinmeyer 2008-12-24 16:09:49 -06:00 committed by Galen Charlton
parent bcf4246dae
commit 3fca370fba

View file

@ -0,0 +1,150 @@
package KohaTest::Members::GetMemberDetails;
use base qw( KohaTest::Members );
use strict;
use warnings;
use Test::More;
use C4::Members;
sub testing_class { 'C4::Members' }
=head3 STARTUP METHODS
These are run once, before the main test methods in this module.
=head2 startup_create_detailed_borrower
Creates a new borrower to be used by the testing methods. Also
populates the class hash with values to be compared from the database
retrieval.
=cut
sub startup_create_detailed_borrower : Test( startup => 2 ) {
my $self = shift;
my ( $description, $type, $amount, $user );
my $memberinfo = {
surname => 'surname' . $self->random_string(),
firstname => 'firstname' . $self->random_string(),
address => 'address' . $self->random_string(),
city => 'city' . $self->random_string(),
cardnumber => 'card' . $self->random_string(),
branchcode => 'CPL',
categorycode => 'B',
dateexpiry => '2020-01-01',
password => 'testpassword',
userid => 'testuser',
flags => '0',
dateofbirth => $self->random_date(),
};
my $borrowernumber = AddMember( %$memberinfo );
ok( $borrowernumber, "created member: $borrowernumber" );
$self->{detail_borrowernumber} = $borrowernumber;
$self->{detail_cardnumber} = $memberinfo->{cardnumber};
#values for adding a record to accounts
$description = 'Test account';
$type = 'M';
$amount = 5.00;
$user = '';
my $acct_added =
C4::Accounts::manualinvoice( $borrowernumber, undef, $description, $type, $amount,
$user );
ok( $acct_added == 0, 'added account for borrower' );
$self->{amountoutstanding} = $amount;
return;
}
=head2 TESTING METHODS
=head3 borrower_detail_get
Tests the functionality of the GetMemberDetails method in C4::Members.
Validates the join on categories table works as well as the extra fields
the method gets from outside of either the borrowers and categories table like
amountoutstanding and user flags.
=cut
sub borrower_detail_get : Test( 8 ) {
my $self = shift;
ok( $self->{detail_borrowernumber},
'we have a valid detailed borrower to test with' );
my $details = C4::Members::GetMemberDetails( $self->{detail_borrowernumber} );
ok( $details, 'we successfully called GetMemberDetails' );
ok( exists $details->{categorycode},
'member details has a "categorycode" attribute' );
ok( $details->{categorycode}, '...and it is set to something' );
ok( exists $details->{category_type}, "categories in the join returned values" );
ok( $details->{category_type}, '...and category_type is valid' );
ok( $details->{amountoutstanding}, 'an amountoutstanding exists' );
is( $details->{amountoutstanding},
$self->{amountoutstanding},
'...and matches inserted account record'
);
}
=head3 cardnumber_detail_get
This method tests the capability of GetMemberDetails to search on cardnumber. There doesn't seem to be any
current calls to GetMemberDetail using cardnumber though, so this test may not be necessary.
=cut
sub cardnumber_detail_get : Test( 8 ) {
my $self = shift;
ok( $self->{detail_cardnumber},
"we have a valid detailed borrower to test with $self->{detail_cardnumber}" );
my $details = C4::Members::GetMemberDetails( undef, $self->{detail_cardnumber} );
ok( $details, 'we successfully called GetMemberDetails' );
ok( exists $details->{categorycode},
"member details has a 'categorycode' attribute $details->{categorycode}" );
ok( $details->{categorycode}, '...and it is set to something' );
ok( exists $details->{category_type}, "categories in the join returned values" );
ok( $details->{category_type}, '...and category_type is valid' );
#FIXME These 2 methods will fail as borrowernumber is not set in GetMemberDetails when cardnumber is used instead.
#ok( $details->{amountoutstanding}, 'an amountoutstanding exists' );
#is( $details->{amountoutstanding}, $self->{amountoutstanding}, '...and matches inserted account record' );
}
=head2 SHUTDOWN METHDOS
These get run once, after the main test methods in this module.
=head3 shutdown_remove_new_borrower
Removes references in the Class to the new borrower created
in the startup methods.
=cut
sub shutdown_remove_new_borrower : Test( shutdown => 0 ) {
my $self = shift;
delete $self->{detail_borrowernumber};
delete $self->{detail_cardnumber};
delete $self->{amountoutstanding};
return;
}
1;