From 8ffc4b814b0c53c5e1b549041c705413e538b9e3 Mon Sep 17 00:00:00 2001 From: Kyle M Hall Date: Mon, 10 Dec 2012 15:45:28 -0500 Subject: [PATCH] Bug 7067 [6] - QA Followup --- Koha/Borrower/Modifications.pm | 39 +++------- opac/opac-memberentry.pl | 4 +- t/db_dependent/Koha_borrower_modifications.t | 94 ++++++++++++++++++++++++++ 3 files changed, 108 insertions(+), 29 deletions(-) create mode 100755 t/db_dependent/Koha_borrower_modifications.t diff --git a/Koha/Borrower/Modifications.pm b/Koha/Borrower/Modifications.pm index a986599..2233b31 100644 --- a/Koha/Borrower/Modifications.pm +++ b/Koha/Borrower/Modifications.pm @@ -28,21 +28,6 @@ use C4::Context; use C4::Debug; use C4::SQLHelper qw(InsertInTable UpdateInTable); -use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS); - -BEGIN { - - # set the version for version checking - $VERSION = 0.01; - require Exporter; - @ISA = qw(Exporter); - @EXPORT = qw( - - ); - - my $debug = C4::Context->preference("DebugLevel"); -} - sub new { my ( $class, %args ) = @_; my $self = bless( {}, $class ); @@ -50,12 +35,12 @@ sub new { $self->{'verification_token'} = $args{'verification_token'}; $self->{'borrowernumber'} = $args{'borrowernumber'}; - return $self; + return bless( \%args, $class ); } =head AddModifications -Koha::Borrower::Modifications->AddModifications( %data ); +Koha::Borrower::Modifications->AddModifications( $data ); Adds or updates modifications for a borrower. @@ -65,13 +50,13 @@ to be part of the passed in hash. =cut sub AddModifications { - my ( $self, %data ) = @_; + my ( $self, $data ) = @_; if ( $self->{'borrowernumber'} ) { - delete $data{'borrowernumber'}; + delete $data->{'borrowernumber'}; - if ( keys %data ) { - $data{'borrowernumber'} = $self->{'borrowernumber'}; + if ( keys %$data ) { + $data->{'borrowernumber'} = $self->{'borrowernumber'}; my $dbh = C4::Context->dbh; my $query = " @@ -85,20 +70,20 @@ sub AddModifications { my $result = $sth->fetchrow_hashref(); if ( $result->{'count'} ) { - $data{'verification_token'} = q{}; - return UpdateInTable( "borrower_modifications", \%data ); + $data->{'verification_token'} = q{}; + return UpdateInTable( "borrower_modifications", $data ); } else { - return InsertInTable( "borrower_modifications", \%data ); + return InsertInTable( "borrower_modifications", $data ); } } } elsif ( $self->{'verification_token'} ) { - delete $data{'borrowernumber'}; - $data{'verification_token'} = $self->{'verification_token'}; + delete $data->{'borrowernumber'}; + $data->{'verification_token'} = $self->{'verification_token'}; - return InsertInTable( "borrower_modifications", \%data ); + return InsertInTable( "borrower_modifications", $data ); } else { return; diff --git a/opac/opac-memberentry.pl b/opac/opac-memberentry.pl index cf24176..7b368f0 100755 --- a/opac/opac-memberentry.pl +++ b/opac/opac-memberentry.pl @@ -95,7 +95,7 @@ if ( $action eq 'create' ) { Koha::Borrower::Modifications->new( verification_token => $verification_token ) - ->AddModifications(%borrower); + ->AddModifications(\%borrower); #Send verification email my $letter = C4::Letters::GetPreparedLetter( @@ -161,7 +161,7 @@ elsif ( $action eq 'update' ) { Koha::Borrower::Modifications->new( borrowernumber => $borrowernumber ); $m->DelModifications; - $m->AddModifications(%borrower); + $m->AddModifications(\%borrower); } elsif ($borrowernumber) { #Display logged in borrower's data $action = 'edit'; diff --git a/t/db_dependent/Koha_borrower_modifications.t b/t/db_dependent/Koha_borrower_modifications.t new file mode 100755 index 0000000..7fdedd8 --- /dev/null +++ b/t/db_dependent/Koha_borrower_modifications.t @@ -0,0 +1,94 @@ +#!/usr/bin/perl + +use Modern::Perl; +use Test::More tests => 14; + +use C4::Context; +use C4::Members; + +use Koha::Borrower::Modifications; + +C4::Context->dbh->do("TRUNCATE TABLE borrower_modifications"); + +## Create new pending modification +Koha::Borrower::Modifications->new( verification_token => '1234567890' )->AddModifications({ surname => 'Hall', firstname => 'Kyle' }); + +## Get the new pending modification +my $borrower = Koha::Borrower::Modifications->GetModifications( + verification_token => '1234567890' +); + +## Verify we get the same data +ok( $borrower->{'surname'} = 'Hall' ); + +## Check the Verify method +ok( Koha::Borrower::Modifications->Verify( '1234567890' ) ); + +## Delete the pending modification +$borrower = Koha::Borrower::Modifications->DelModifications( + verification_token => '1234567890' +); + +## Verify it's no longer in the database +$borrower = Koha::Borrower::Modifications->GetModifications( + verification_token => '1234567890' +); +ok( !defined( $borrower->{'surname'} ) ); + +## Check the Verify method +ok( !Koha::Borrower::Modifications->Verify( '1234567890' ) ); + +## Create new pending modification, but for an existing borrower +Koha::Borrower::Modifications->new( borrowernumber => '2' )->AddModifications({ surname => 'Hall', firstname => 'Kyle' }); + +## Test the counter +ok( Koha::Borrower::Modifications->GetPendingModificationsCount() == 1 ); + +## Create new pending modification for another existing borrower +Koha::Borrower::Modifications->new( borrowernumber => '3' )->AddModifications({ surname => 'Smith', firstname => 'Sandy' }); + +## Test the counter +ok( Koha::Borrower::Modifications->GetPendingModificationsCount() == 2 ); + +## Check GetPendingModifications +my $pending = Koha::Borrower::Modifications->GetPendingModifications(); +ok( $pending->[0]->{'firstname'} eq 'Kyle' ); +ok( $pending->[1]->{'firstname'} eq 'Sandy' ); + +## This should delete the row from the table +Koha::Borrower::Modifications->DenyModifications( '3' ); + +## Test the counter +ok( Koha::Borrower::Modifications->GetPendingModificationsCount() == 1 ); + +## Save a copy of the borrowers original data +my $old_borrower = GetMember(borrowernumber => '2' ); + +## Apply the modifications +Koha::Borrower::Modifications->ApproveModifications( '2' ); + +## Test the counter +ok( Koha::Borrower::Modifications->GetPendingModificationsCount() == 0 ); + +## Get a copy of the borrowers current data +my $new_borrower = GetMember(borrowernumber => '2' ); + +## Check to see that the approved modifications were saved +ok( $new_borrower->{'surname'} eq 'Hall' ); + +## Now let's put it back the way it was +Koha::Borrower::Modifications->new( borrowernumber => '2' )->AddModifications({ surname => $old_borrower->{'surname'}, firstname => $old_borrower->{'firstname'} }); + +## Test the counter +ok( Koha::Borrower::Modifications->GetPendingModificationsCount() == 1 ); + +## Apply the modifications +Koha::Borrower::Modifications->ApproveModifications( '2' ); + +## Test the counter +ok( Koha::Borrower::Modifications->GetPendingModificationsCount() == 0 ); + +$new_borrower = GetMember(borrowernumber => '2' ); + +## Test to verify the borrower has been updated with the original values +ok( $new_borrower->{'surname'} eq $old_borrower->{'surname'} ); -- 1.7.2.5