150 lines
4.5 KiB
Perl
150 lines
4.5 KiB
Perl
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;
|