Bug 14778: Make Barcodes_ValueBuilder.t db dependent
[srvgit] / t / db_dependent / Members.t
index dc2b0a3..1858b7f 100755 (executable)
@@ -21,8 +21,6 @@ use Test::More tests => 74;
 use Test::MockModule;
 use Data::Dumper;
 use C4::Context;
-use C4::Members::Attributes qw( SetBorrowerAttributes );
-use C4::Members::AttributeTypes;
 
 BEGIN {
         use_ok('C4::Members');
@@ -43,14 +41,11 @@ my $BRANCHCODE   = 'CPL';
 my $CHANGED_FIRSTNAME = "Marry Ann";
 my $EMAIL             = "Marie\@email.com";
 my $EMAILPRO          = "Marie\@work.com";
-my $ETHNICITY         = "German";
 my $PHONE             = "555-12123";
 
 # XXX should be randomised and checked against the database
 my $IMPOSSIBLE_CARDNUMBER = "XYZZZ999";
 
-my $INDEPENDENT_BRANCHES_PREF = 'IndependentBranches';
-
 # XXX make a non-commit transaction and rollback rather than insert/delete
 
 #my ($usernum, $userid, $usercnum, $userfirstname, $usersurname, $userbranch, $branchname, $userflags, $emailaddress, $branchprinter)= @_;
@@ -117,84 +112,17 @@ is($member->{dateofbirth}, undef, "Empty dates handled correctly");
 
 $member->{firstname} = $CHANGED_FIRSTNAME;
 $member->{email}     = $EMAIL;
-$member->{ethnicity} = $ETHNICITY;
 $member->{phone}     = $PHONE;
 $member->{emailpro}  = $EMAILPRO;
 ModMember(%$member);
 my $changedmember=GetMemberDetails("",$CARDNUMBER);
 ok ( $changedmember->{firstname} eq $CHANGED_FIRSTNAME &&
      $changedmember->{email}     eq $EMAIL             &&
-     $changedmember->{ethnicity} eq $ETHNICITY         &&
      $changedmember->{phone}     eq $PHONE             &&
      $changedmember->{emailpro}  eq $EMAILPRO
      , "Member Changed")
   or diag("Mismatching member details: ".Dumper($member, $changedmember));
 
-C4::Context->set_preference( $INDEPENDENT_BRANCHES_PREF, '0' );
-C4::Context->clear_syspref_cache();
-
-my $results = Search($CARDNUMBER);
-ok (@$results == 1, "Search cardnumber returned only one result")
-  or diag("Multiple members with Card $CARDNUMBER: ".Dumper($results));
-ok (_find_member($results), "Search cardnumber")
-  or diag("Card $CARDNUMBER not found in the resultset: ".Dumper($results));
-
-my @searchstring=($SURNAME);
-$results = Search(\@searchstring);
-ok (_find_member($results), "Search (arrayref)")
-  or diag("Card $CARDNUMBER not found in the resultset: ".Dumper($results));
-
-$results = Search(\@searchstring,undef,undef,undef,["surname"]);
-ok (_find_member($results), "Surname Search (arrayref)")
-  or diag("Card $CARDNUMBER not found in the resultset: ".Dumper($results));
-
-$results = Search("$CHANGED_FIRSTNAME $SURNAME", "surname");
-ok (_find_member($results), "Full name  Search (string)")
-  or diag("Card $CARDNUMBER not found in the resultset: ".Dumper($results));
-
-@searchstring=($PHONE);
-$results = Search(\@searchstring,undef,undef,undef,["phone"]);
-ok (_find_member($results), "Phone Search (arrayref)")
-  or diag("Card $CARDNUMBER not found in the resultset: ".Dumper($results));
-
-$results = Search($PHONE,undef,undef,undef,["phone"]);
-ok (_find_member($results), "Phone Search (string)")
-  or diag("Card $CARDNUMBER not found in the resultset: ".Dumper($results));
-
-C4::Context->set_preference( $INDEPENDENT_BRANCHES_PREF, '1' );
-C4::Context->clear_syspref_cache();
-
-$results = Search("$CHANGED_FIRSTNAME $SURNAME", "surname");
-ok (!_find_member($results), "Full name  Search (string) for independent branches, different branch")
-  or diag("Card $CARDNUMBER found in the resultset for independent branches: ".Dumper(C4::Context->preference($INDEPENDENT_BRANCHES_PREF), $results));
-
-@searchstring=($SURNAME);
-$results = Search(\@searchstring);
-ok (!_find_member($results), "Search (arrayref) for independent branches, different branch")
-  or diag("Card $CARDNUMBER found in the resultset for independent branches: ".Dumper(C4::Context->preference($INDEPENDENT_BRANCHES_PREF), $results));
-
-$USERENV[$BRANCH_IDX] = $BRANCHCODE;
-C4::Context->set_userenv ( @USERENV );
-
-$results = Search("$CHANGED_FIRSTNAME $SURNAME", "surname");
-ok (_find_member($results), "Full name  Search (string) for independent branches, same branch")
-  or diag("Card $CARDNUMBER not found in the resultset for independent branches: ".Dumper(C4::Context->preference($INDEPENDENT_BRANCHES_PREF), $results));
-
-@searchstring=($SURNAME);
-$results = Search(\@searchstring);
-ok (_find_member($results), "Search (arrayref) for independent branches, same branch")
-  or diag("Card $CARDNUMBER not found in the resultset for independent branches: ".Dumper(C4::Context->preference($INDEPENDENT_BRANCHES_PREF), $results));
-
-C4::Context->set_preference('ExtendedPatronAttributes', 1);
-my $attr_type = C4::Members::AttributeTypes->new("TEST", "Test Description");
-$attr_type->staff_searchable(1);
-$attr_type->store();
-SetBorrowerAttributes($addmem, [ { code => 'TEST', value => 'XYZZYX' } ] );
-$results = Search( "XYZZYX", undef, undef, undef, undef, undef, 1 );
-is( @$results, 0, "Search without extended attributes returns no results" );
-$results = Search( "XYZZYX", undef, undef, undef, undef, undef, 0 );
-is( @$results, 1, "Search with extended attributes returns results" );
-
 C4::Context->set_preference( 'CardnumberLength', '' );
 C4::Context->clear_syspref_cache();
 
@@ -275,9 +203,8 @@ is( @$messages, 0, 'DeleteMessage deletes a message correctly' );
 
 # clean up 
 DelMember($member->{borrowernumber});
-$results = Search($CARDNUMBER,undef,undef,undef,["cardnumber"]);
-ok (!_find_member($results), "Delete member")
-  or diag("Card $CARDNUMBER found for the deleted member in the resultset: ".Dumper($results));
+my $borrower = GetMember( cardnumber => $CARDNUMBER );
+is( $borrower, undef, 'DelMember should remove the patron' );
 
 # Check_Userid tests
 %data = (
@@ -287,7 +214,9 @@ ok (!_find_member($results), "Delete member")
     categorycode => "S",
     branchcode   => "MPL",
     dateofbirth  => '',
-    dateexpiry   => '9999-12-31',
+    debarred     => '',
+    dateexpiry   => '',
+    dateenrolled => '',
 );
 # Add a new borrower
 my $borrowernumber = AddMember( %data );
@@ -300,6 +229,26 @@ is( Check_Userid( 'tomasito.none', '' ), 0,
 is( Check_Userid( 'tomasitoxxx', '' ), 1,
     'non-existent userid -> unique (blank borrowernumber)' );
 
+$borrower = GetMember( borrowernumber => $borrowernumber );
+is( $borrower->{dateofbirth}, undef, 'AddMember should undef dateofbirth if empty string is given');
+is( $borrower->{debarred}, undef, 'AddMember should undef debarred if empty string is given');
+isnt( $borrower->{dateexpiry}, '0000-00-00', 'AddMember should not set dateexpiry to 0000-00-00 if empty string is given');
+isnt( $borrower->{dateenrolled}, '0000-00-00', 'AddMember should not set dateenrolled to 0000-00-00 if empty string is given');
+
+ModMember( borrowernumber => $borrowernumber, dateofbirth => '', debarred => '', dateexpiry => '', dateenrolled => '' );
+$borrower = GetMember( borrowernumber => $borrowernumber );
+is( $borrower->{dateofbirth}, undef, 'ModMember should undef dateofbirth if empty string is given');
+is( $borrower->{debarred}, undef, 'ModMember should undef debarred if empty string is given');
+isnt( $borrower->{dateexpiry}, '0000-00-00', 'ModMember should not set dateexpiry to 0000-00-00 if empty string is given');
+isnt( $borrower->{dateenrolled}, '0000-00-00', 'ModMember should not set dateenrolled to 0000-00-00 if empty string is given');
+
+ModMember( borrowernumber => $borrowernumber, dateofbirth => '1970-01-01', debarred => '2042-01-01', dateexpiry => '9999-12-31', dateenrolled => '2015-09-06' );
+$borrower = GetMember( borrowernumber => $borrowernumber );
+is( $borrower->{dateofbirth}, '1970-01-01', 'ModMember should correctly set dateofbirth if a valid date is given');
+is( $borrower->{debarred}, '2042-01-01', 'ModMember should correctly set debarred if a valid date is given');
+is( $borrower->{dateexpiry}, '9999-12-31', 'ModMember should correctly set dateexpiry if a valid date is given');
+is( $borrower->{dateenrolled}, '2015-09-06', 'ModMember should correctly set dateenrolled if a valid date is given');
+
 # Add a new borrower with the same userid but different cardnumber
 $data{ cardnumber } = "987654321";
 my $new_borrowernumber = AddMember( %data );
@@ -307,7 +256,7 @@ is( Check_Userid( 'tomasito.none', '' ), 0,
     'userid not unique (blank borrowernumber)' );
 is( Check_Userid( 'tomasito.none', $new_borrowernumber ), 0,
     'userid not unique (second borrowernumber passed)' );
-my $borrower = GetMember( borrowernumber => $new_borrowernumber );
+$borrower = GetMember( borrowernumber => $new_borrowernumber );
 ok( $borrower->{userid} ne 'tomasito', "Borrower with duplicate userid has new userid generated" );
 
 $data{ cardnumber } = "234567890";
@@ -384,6 +333,28 @@ subtest 'GetMemberAccountBalance' => sub {
     $dbh->rollback();
 };
 
+subtest 'purgeSelfRegistration' => sub {
+    plan tests => 2;
+
+    #purge unverified
+    my $d=360;
+    C4::Members::DeleteUnverifiedOpacRegistrations($d);
+    foreach(1..3) {
+        $dbh->do("INSERT INTO borrower_modifications (timestamp, borrowernumber, verification_token) VALUES ('2014-01-01 01:02:03',0,?)", undef, (scalar localtime)."_$_");
+    }
+    is( C4::Members::DeleteUnverifiedOpacRegistrations($d), 3, 'Test for DeleteUnverifiedOpacRegistrations' );
+
+    #purge members in temporary category
+    my $c= 'XYZ';
+    $dbh->do("INSERT IGNORE INTO categories (categorycode) VALUES ('$c')");
+    C4::Context->set_preference('PatronSelfRegistrationDefaultCategory', $c );
+    C4::Context->set_preference('PatronSelfRegistrationExpireTemporaryAccountsDelay', 360);
+    C4::Members::DeleteExpiredOpacRegistrations();
+    $dbh->do("INSERT INTO borrowers (surname, address, city, branchcode, categorycode, dateenrolled) VALUES ('Testaabbcc', 'Street 1', 'CITY', 'CPL', '$c', '2014-01-01 01:02:03')");
+    is( C4::Members::DeleteExpiredOpacRegistrations(), 1, 'Test for DeleteExpiredOpacRegistrations');
+    $dbh->rollback();
+};
+
 sub _find_member {
     my ($resultset) = @_;
     my $found = $resultset && grep( { $_->{cardnumber} && $_->{cardnumber} eq $CARDNUMBER } @$resultset );