Bug 16276: [QA Follow-up] Only track when pref is enabled

Do not track when the pref has not been enabled.
This patch moves the conditional update in Auth.pm to Koha::Patron.
And adds a test for the new track_login method.

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
This commit is contained in:
Marcel de Rooy 2016-08-19 12:23:01 +02:00 committed by Kyle M Hall
parent 183fdc83f0
commit 95fe434758
3 changed files with 31 additions and 7 deletions

View file

@ -35,6 +35,7 @@ use Koha::Caches;
use Koha::AuthUtils qw(get_script_name hash_password);
use Koha::Libraries;
use Koha::LibraryCategories;
use Koha::Patrons;
use POSIX qw/strftime/;
use List::MoreUtils qw/ any /;
use Encode qw( encode is_utf8);
@ -1183,11 +1184,9 @@ sub checkauth {
}
if ( $userid ) {
$dbh->do(q|
UPDATE borrowers
SET lastseen = NOW()
WHERE userid = ?
|, undef, $userid);
# track_login also depends on pref TrackLastPatronActivity
my $patron = Koha::Patrons->search({ userid => $userid })->next;
$patron->track_login if $patron;
}
return ( $userid, $cookie, $sessionID, $flags );

View file

@ -248,6 +248,25 @@ sub has_overdues {
return $self->_result->issues->search({ date_due => { '<' => $dtf->format_datetime( dt_from_string() ) } })->count;
}
=head2 track_login
$patron->track_login;
$patron->track_login({ force => 1 });
Tracks a (successful) login attempt.
The preference TrackLastPatronActivity must be enabled. Or you
should pass the force parameter.
=cut
sub track_login {
my ( $self, $params ) = @_;
return if
!$params->{force} &&
!C4::Context->preference('TrackLastPatronActivity');
$self->lastseen( dt_from_string() )->store;
}
=head3 type
=cut

View file

@ -17,14 +17,14 @@
use Modern::Perl;
use Test::More tests => 82;
use Test::More tests => 84;
use Test::MockModule;
use Data::Dumper;
use C4::Context;
use Koha::Database;
use Koha::Holds;
use Koha::List::Patron;
use Koha::Patrons;
use t::lib::Mocks;
use t::lib::TestBuilder;
@ -387,6 +387,12 @@ $patstodel = GetBorrowersToExpunge( { last_seen => '2016-02-15' });
is( scalar @$patstodel, 2, 'TrackLastPatronActivity - 2 patrons must be deleted' );
$patstodel = GetBorrowersToExpunge( { last_seen => '2016-04-04' });
is( scalar @$patstodel, 3, 'TrackLastPatronActivity - 3 patrons must be deleted' );
my $patron2 = $builder->build({ source => 'Borrower', value => { lastseen => undef } });
t::lib::Mocks::mock_preference( 'TrackLastPatronActivity', '0' );
Koha::Patrons->find( $patron2->{borrowernumber} )->track_login;
is( Koha::Patrons->find( $patron2->{borrowernumber} )->lastseen, undef, 'Lastseen should not be changed' );
Koha::Patrons->find( $patron2->{borrowernumber} )->track_login({ force => 1 });
isnt( Koha::Patrons->find( $patron2->{borrowernumber} )->lastseen, undef, 'Lastseen should be changed now' );
# Regression tests for BZ13502
## Remove all entries with userid='' (should be only 1 max)