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:
parent
bcf4246dae
commit
3fca370fba
1 changed files with 150 additions and 0 deletions
150
t/lib/KohaTest/Members/GetMemberDetails.pm
Normal file
150
t/lib/KohaTest/Members/GetMemberDetails.pm
Normal 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;
|
Loading…
Reference in a new issue