View | Details | Raw Unified | Return to bug 21173
Collapse All | Expand All

(-)a/t/db_dependent/Items/AutomaticItemModificationByAge.t (-2 / +48 lines)
Lines 1-7 Link Here
1
#!/usr/bin/perl
1
#!/usr/bin/perl
2
2
3
use Modern::Perl;
3
use Modern::Perl;
4
use Test::More tests => 19;
4
use Test::More tests => 22;
5
use MARC::Record;
5
use MARC::Record;
6
use MARC::Field;
6
use MARC::Field;
7
use DateTime;
7
use DateTime;
Lines 330-335 C4::Items::ToggleNewStatus( { rules => \@rules } ); Link Here
330
$modified_item = Koha::Items->find( $itemnumber );
330
$modified_item = Koha::Items->find( $itemnumber );
331
is( $modified_item->new_status, 'agefield_new_value', q|ToggleNewStatus: Age = 2, agefield = 'items.datelastseen' : The new_status value is updated|);
331
is( $modified_item->new_status, 'agefield_new_value', q|ToggleNewStatus: Age = 2, agefield = 'items.datelastseen' : The new_status value is updated|);
332
332
333
# Play with the unit field
334
$dt_today = dt_from_string;
335
my $hours2ago = dt_from_string->subtract( hours => 2 );
336
my $hours10ago = dt_from_string->subtract( hours => 10 );
337
$modified_item->itemlost_on($hours2ago)->store;
338
$modified_item->dateaccessioned($hours10ago)->store;
339
340
# When agefield='items.dateaccessioned' and unit='Hours'
341
@rules = (
342
    {
343
        conditions => [
344
            {
345
                field => 'biblioitems.itemtype',
346
                value => 'ITEMTYPE_T',
347
            },
348
        ],
349
        substitutions => [
350
            {
351
                field => 'items.new_status',
352
                value => 'ageunit_new_value',
353
             },
354
        ],
355
        age => '5',
356
        ageunit => 'Hours',
357
        agefield => 'items.dateaccessioned'
358
    },
359
);
360
361
# Confirm a rule with unit = 'Hours' does not work with fields other than items.damaged_on,
362
# items.itemlost_on, or items.withdrawn_on
363
C4::Items::ToggleNewStatus( { rules => \@rules } );
364
$modified_item = Koha::Items->find( $itemnumber );
365
is( $modified_item->new_status, 'agefield_new_value', q|ToggleNewStatus: Age = 5, ageunit = 'Hours', agefield = 'items.dateaccessioned' : The new_status value is not updated|);
366
367
# Confirm a rule on a datetime field (items.itemlost_on) with unit = 'Hours' does
368
# change an item correctly based on the age in hours
369
$rules[0]->{agefield} = 'items.itemlost_on';
370
C4::Items::ToggleNewStatus( { rules => \@rules } );
371
$modified_item = Koha::Items->find( $itemnumber );
372
$modified_item->itemlost_on;
373
is( $modified_item->new_status, 'agefield_new_value', q|ToggleNewStatus: Age = 5, ageunit = 'Hours', agefield = 'items.itemlost_on' : The new_status value is not updated|);
374
375
$rules[0]->{age} = 1;
376
C4::Items::ToggleNewStatus( { rules => \@rules } );
377
$modified_item = Koha::Items->find( $itemnumber );
378
is( $modified_item->new_status, 'ageunit_new_value', q|ToggleNewStatus: Age = 1, ageunit = 'Hours', agefield = 'items.itemlost_on' : The new_status value is updated|);
379
333
# Run twice
380
# Run twice
334
t::lib::Mocks::mock_preference('CataloguingLog', 1);
381
t::lib::Mocks::mock_preference('CataloguingLog', 1);
335
my $actions_nb = $schema->resultset('ActionLog')->count();
382
my $actions_nb = $schema->resultset('ActionLog')->count();
336
- 

Return to bug 21173