@@ -, +, @@ --- t/db_dependent/SIP/Message.t | 52 +++++++++++++++++++++++++++++++++++++++++++- t/db_dependent/SIP/Patron.t | 28 +++++++++++++++++++++++- 2 files changed, 78 insertions(+), 2 deletions(-) --- a/t/db_dependent/SIP/Message.t +++ a/t/db_dependent/SIP/Message.t @@ -21,7 +21,7 @@ # along with Koha; if not, see . use Modern::Perl; -use Test::More tests => 3; +use Test::More tests => 4; use Test::MockObject; use Test::MockModule; use Test::Warn; @@ -73,6 +73,56 @@ subtest 'Checkin V2' => sub { $schema->storage->txn_rollback; }; +subtest 'Lastseen response' => sub { + + my $schema = Koha::Database->new->schema; + $schema->storage->txn_begin; + + plan tests => 6; + my $builder = t::lib::TestBuilder->new(); + my $branchcode = $builder->build({ source => 'Branch' })->{branchcode}; + my ( $response, $findpatron ); + my $mocks = create_mocks( \$response, \$findpatron, \$branchcode ); + my $seen_patron = $builder->build({ + source => 'Borrower', + value => { + lastseen => '2001-01-01', + password => hash_password( PATRON_PW ), + branchcode => $branchcode, + }, + }); + my $cardnum = $seen_patron->{cardnumber}; + my $sip_patron = C4::SIP::ILS::Patron->new( $cardnum ); + $findpatron = $sip_patron; + + my $siprequest = PATRON_INFO. 'engYYYYMMDDZZZZHHMMSS'.'Y '. + FID_INST_ID. $branchcode. '|'. + FID_PATRON_ID. $cardnum. '|'. + FID_PATRON_PWD. PATRON_PW. '|'; + my $msg = C4::SIP::Sip::MsgType->new( $siprequest, 0 ); + + my $server = { ils => $mocks->{ils} }; + undef $response; + t::lib::Mocks::mock_preference( 'TrackLastPatronActivity', '' ); + $msg->handle_patron_info( $server ); + + isnt( $response, undef, 'At least we got a response.' ); + my $respcode = substr( $response, 0, 2 ); + is( $respcode, PATRON_INFO_RESP, 'Response code fine' ); + $seen_patron = Koha::Patrons->find({ cardnumber => $seen_patron->{cardnumber} }); + is( output_pref({str => $seen_patron->lastseen(), dateonly => 1}), output_pref({str => '2001-01-01', dateonly => 1}),'Last seen not updated if not tracking patrons'); + undef $response; + t::lib::Mocks::mock_preference( 'TrackLastPatronActivity', '1' ); + $msg->handle_patron_info( $server ); + + isnt( $response, undef, 'At least we got a response.' ); + $respcode = substr( $response, 0, 2 ); + is( $respcode, PATRON_INFO_RESP, 'Response code fine' ); + $seen_patron = Koha::Patrons->find({ cardnumber => $seen_patron->cardnumber() }); + is( output_pref({str => $seen_patron->lastseen(), dateonly => 1}), output_pref({dt => dt_from_string(), dateonly => 1}),'Last seen updated if tracking patrons'); + $schema->storage->txn_rollback; + +}; # Here is room for some more subtests # END of main code --- a/t/db_dependent/SIP/Patron.t +++ a/t/db_dependent/SIP/Patron.t @@ -4,9 +4,11 @@ # This needs to be extended! Your help is appreciated.. use Modern::Perl; -use Test::More tests => 3; +use Test::More tests => 4; use Koha::Database; +use Koha::Patrons; +use Koha::DateUtils; use t::lib::TestBuilder; use t::lib::Mocks; use C4::SIP::ILS::Patron; @@ -72,4 +74,28 @@ subtest "OverduesBlockCirc tests" => sub { }; +subtest "update_lastseen tests" => sub { + plan tests => 2; + + my $seen_patron = $builder->build( + { + source => 'Borrower', + value => { + lastseen => "2001-01-01", + } + } + ); + my $sip_patron = C4::SIP::ILS::Patron->new( $seen_patron->{cardnumber} ); + t::lib::Mocks::mock_preference( 'TrackLastPatronActivity', '' ); + $sip_patron->update_lastseen(); + $seen_patron = Koha::Patrons->find({ cardnumber => $seen_patron->{cardnumber} }); + is( output_pref({str => $seen_patron->lastseen(), dateonly => 1}), output_pref({str => '2001-01-01', dateonly => 1}),'Last seen not updated if not tracking patrons'); + t::lib::Mocks::mock_preference( 'TrackLastPatronActivity', '1' ); + $sip_patron->update_lastseen(); + $seen_patron = Koha::Patrons->find({ cardnumber => $seen_patron->cardnumber() }); + is( output_pref({str => $seen_patron->lastseen(), dateonly => 1}), output_pref({dt => dt_from_string(), dateonly => 1}),'Last seen updated to today if tracking patrons'); + + +}; + $schema->storage->txn_rollback; --