# along with Koha; if not, see <http://www.gnu.org/licenses>.
use Modern::Perl;
-use Test::More tests => 3;
+use Test::More tests => 4;
use Test::MockObject;
use Test::MockModule;
use Test::Warn;
$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
# This needs to be extended! Your help is appreciated..
use Modern::Perl;
-use Test::More tests => 4;
+use Test::More tests => 5;
use Koha::Database;
+use Koha::Patrons;
+use Koha::DateUtils;
use t::lib::TestBuilder;
use t::lib::Mocks;
use C4::SIP::ILS::Patron;
is( $attribute_string, "XYTest Attribute|YZAnother Test Attribute|", 'Attribute field generated correctly with multiple params' );
};
+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;