[Koha-patches] [PATCH] Test suite: C4::Members::GetMemberDetails

Allen Reinmeyer allen.reinmeyer at liblime.com
Wed Dec 24 23:09:49 CET 2008


Tests for C4::Members::GetMemberDetails.  Validates both calls
using either borrowernumber or cardnumber.
---
 t/lib/KohaTest/Members/GetMemberDetails.pm |  150 ++++++++++++++++++++++++++++
 1 files changed, 150 insertions(+), 0 deletions(-)
 create mode 100644 t/lib/KohaTest/Members/GetMemberDetails.pm

diff --git a/t/lib/KohaTest/Members/GetMemberDetails.pm b/t/lib/KohaTest/Members/GetMemberDetails.pm
new file mode 100644
index 0000000..e93742b
--- /dev/null
+++ b/t/lib/KohaTest/Members/GetMemberDetails.pm
@@ -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;
-- 
1.5.5.GIT




More information about the Koha-patches mailing list