Bug 17600: Standardize our EXPORT_OK
[srvgit] / t / db_dependent / Items / AutomaticItemModificationByAge.t
old mode 100644 (file)
new mode 100755 (executable)
index b93c626..0c1b044
@@ -1,16 +1,18 @@
 #!/usr/bin/perl
 
 use Modern::Perl;
-use Test::More tests => 16;
+use Test::More tests => 17;
 use MARC::Record;
 use MARC::Field;
 use DateTime;
 use DateTime::Duration;
 
-use C4::Biblio;
+use C4::Items qw( GetMarcItem ToggleNewStatus );
+use C4::Biblio qw( AddBiblio GetMarcFromKohaField );
 use C4::Context;
-use C4::Items;
 use Koha::DateUtils;
+use Koha::Items;
+use t::lib::Mocks;
 use t::lib::TestBuilder;
 
 my $schema = Koha::Database->new->schema;
@@ -51,20 +53,18 @@ $record->append_fields(
 );
 my ($biblionumber, undef) = C4::Biblio::AddBiblio($record, $frameworkcode);
 
-my ($item_bibnum, $item_bibitemnum, $itemnumber) = C4::Items::AddItem(
+my $item = $builder->build_sample_item(
     {
-        homebranch => $library,
-        holdingbranch => $library,
-        new_status => 'new_value',
-        ccode => 'FIC',
-    },
-    $biblionumber
+        biblionumber => $biblionumber,
+        library      => $library,
+        new_status   => 'new_value',
+        ccode        => 'FIC',
+    }
 );
+my $itemnumber = $item->itemnumber;
+is ( $item->new_status, 'new_value', q|AddItem insert the 'new_status' field| );
 
-my $item = C4::Items::GetItem( $itemnumber );
-is ( $item->{new_status}, 'new_value', q|AddItem insert the 'new_status' field| );
-
-my ( $tagfield, undef ) = GetMarcFromKohaField('items.itemnumber', $frameworkcode);
+my ( $tagfield, undef ) = GetMarcFromKohaField( 'items.itemnumber' );
 my $marc_item = C4::Items::GetMarcItem( $biblionumber, $itemnumber );
 is( $marc_item->subfield($tagfield, $new_tagfield), 'new_value', q|Koha mapping is correct|);
 
@@ -89,8 +89,8 @@ my @rules = (
 
 C4::Items::ToggleNewStatus( { rules => \@rules } );
 
-my $modified_item = C4::Items::GetItem( $itemnumber );
-is( $modified_item->{new_status}, 'updated_value', q|ToggleNewStatus: The new_status value is updated|);
+my $modified_item = Koha::Items->find( $itemnumber );
+is( $modified_item->new_status, 'updated_value', q|ToggleNewStatus: The new_status value is updated|);
 $marc_item = C4::Items::GetMarcItem( $biblionumber, $itemnumber );
 is( $marc_item->subfield($tagfield, $new_tagfield), 'updated_value', q|ToggleNewStatus: The new_status value is updated| );
 
@@ -115,18 +115,16 @@ is( $marc_item->subfield($tagfield, $new_tagfield), 'updated_value', q|ToggleNew
 
 C4::Items::ToggleNewStatus( { rules => \@rules } );
 
-$modified_item = C4::Items::GetItem( $itemnumber );
-is( $modified_item->{new_status}, 'updated_value', q|ToggleNewStatus: The new_status value is not updated|);
+$modified_item = Koha::Items->find( $itemnumber );
+is( $modified_item->new_status, 'updated_value', q|ToggleNewStatus: The new_status value is not updated|);
 $marc_item = C4::Items::GetMarcItem( $biblionumber, $itemnumber );
 is( $marc_item->subfield($tagfield, $new_tagfield), 'updated_value', q|ToggleNewStatus: The new_status value is not updated| );
 
 # Play with age
-$item = C4::Items::GetItem( $itemnumber );
 my $dt_today = dt_from_string;
 my $days5ago = $dt_today->add_duration( DateTime::Duration->new( days => -5 ) );
 
-C4::Items::ModItem( { dateaccessioned => $days5ago }, $biblionumber, $itemnumber );
-$item = C4::Items::GetItem( $itemnumber );
+$modified_item->dateaccessioned($days5ago)->store;
 
 @rules = (
     {
@@ -146,26 +144,26 @@ $item = C4::Items::GetItem( $itemnumber );
     },
 );
 C4::Items::ToggleNewStatus( { rules => \@rules } );
-$modified_item = C4::Items::GetItem( $itemnumber );
-is( $modified_item->{new_status}, 'updated_value', q|ToggleNewStatus: Age = 10 : The new_status value is not updated|);
+$modified_item = Koha::Items->find( $itemnumber );
+is( $modified_item->new_status, 'updated_value', q|ToggleNewStatus: Age = 10 : The new_status value is not updated|);
 
 $rules[0]->{age} = 5;
 $rules[0]->{substitutions}[0]{value} = 'new_updated_value5';
 C4::Items::ToggleNewStatus( { rules => \@rules } );
-$modified_item = C4::Items::GetItem( $itemnumber );
-is( $modified_item->{new_status}, 'new_updated_value5', q|ToggleNewStatus: Age = 5 : The new_status value is updated|);
+$modified_item = Koha::Items->find( $itemnumber );
+is( $modified_item->new_status, 'new_updated_value5', q|ToggleNewStatus: Age = 5 : The new_status value is updated|);
 
 $rules[0]->{age} = '';
 $rules[0]->{substitutions}[0]{value} = 'new_updated_value_empty_string';
 C4::Items::ToggleNewStatus( { rules => \@rules } );
-$modified_item = C4::Items::GetItem( $itemnumber );
-is( $modified_item->{new_status}, 'new_updated_value_empty_string', q|ToggleNewStatus: Age = '' : The new_status value is updated|);
+$modified_item = Koha::Items->find( $itemnumber );
+is( $modified_item->new_status, 'new_updated_value_empty_string', q|ToggleNewStatus: Age = '' : The new_status value is updated|);
 
 $rules[0]->{age} = undef;
 $rules[0]->{substitutions}[0]{value} = 'new_updated_value_undef';
 C4::Items::ToggleNewStatus( { rules => \@rules } );
-$modified_item = C4::Items::GetItem( $itemnumber );
-is( $modified_item->{new_status}, 'new_updated_value_undef', q|ToggleNewStatus: Age = undef : The new_status value is updated|);
+$modified_item = Koha::Items->find( $itemnumber );
+is( $modified_item->new_status, 'new_updated_value_undef', q|ToggleNewStatus: Age = undef : The new_status value is updated|);
 
 # Field deletion
 @rules = (
@@ -188,8 +186,8 @@ is( $modified_item->{new_status}, 'new_updated_value_undef', q|ToggleNewStatus:
 
 C4::Items::ToggleNewStatus( { rules => \@rules } );
 
-$modified_item = C4::Items::GetItem( $itemnumber );
-is( $modified_item->{new_status}, '', q|ToggleNewStatus: The new_status value is empty|);
+$modified_item = Koha::Items->find( $itemnumber );
+is( $modified_item->new_status, '', q|ToggleNewStatus: The new_status value is empty|);
 $marc_item = C4::Items::GetMarcItem( $biblionumber, $itemnumber );
 is( $marc_item->subfield($tagfield, $new_tagfield), undef, q|ToggleNewStatus: The new_status field is removed from the item marc| );
 
@@ -218,8 +216,8 @@ is( $marc_item->subfield($tagfield, $new_tagfield), undef, q|ToggleNewStatus: Th
 
 C4::Items::ToggleNewStatus( { rules => \@rules } );
 
-$modified_item = C4::Items::GetItem( $itemnumber );
-is( $modified_item->{new_status}, 'new_value', q|ToggleNewStatus: conditions multiple: all match, the new_status value is updated|);
+$modified_item = Koha::Items->find( $itemnumber );
+is( $modified_item->new_status, 'new_value', q|ToggleNewStatus: conditions multiple: all match, the new_status value is updated|);
 
 @rules = (
     {
@@ -245,8 +243,8 @@ is( $modified_item->{new_status}, 'new_value', q|ToggleNewStatus: conditions mul
 
 C4::Items::ToggleNewStatus( { rules => \@rules } );
 
-$modified_item = C4::Items::GetItem( $itemnumber );
-is( $modified_item->{new_status}, 'new_value', q|ToggleNewStatus: conditions multiple: at least 1 condition does not match, the new_status value is not updated|);
+$modified_item = Koha::Items->find( $itemnumber );
+is( $modified_item->new_status, 'new_value', q|ToggleNewStatus: conditions multiple: at least 1 condition does not match, the new_status value is not updated|);
 
 @rules = (
     {
@@ -272,8 +270,8 @@ is( $modified_item->{new_status}, 'new_value', q|ToggleNewStatus: conditions mul
 
 C4::Items::ToggleNewStatus( { rules => \@rules } );
 
-$modified_item = C4::Items::GetItem( $itemnumber );
-is( $modified_item->{new_status}, 'new_updated_value', q|ToggleNewStatus: conditions multiple: the 2 conditions match, the new_status value is updated|);
+$modified_item = Koha::Items->find( $itemnumber );
+is( $modified_item->new_status, 'new_updated_value', q|ToggleNewStatus: conditions multiple: the 2 conditions match, the new_status value is updated|);
 
 @rules = (
     {
@@ -295,12 +293,19 @@ is( $modified_item->{new_status}, 'new_updated_value', q|ToggleNewStatus: condit
 
 C4::Items::ToggleNewStatus( { rules => \@rules } );
 
-$modified_item = C4::Items::GetItem( $itemnumber );
-is( $modified_item->{new_status}, 'another_new_updated_value', q|ToggleNewStatus: conditions on biblioitems|);
+$modified_item = Koha::Items->find( $itemnumber );
+is( $modified_item->new_status, 'another_new_updated_value', q|ToggleNewStatus: conditions on biblioitems|);
 
-# Clear cache
+# Run twice
+t::lib::Mocks::mock_preference('CataloguingLog', 1);
+my $actions_nb = $schema->resultset('ActionLog')->count();
+C4::Items::ToggleNewStatus( { rules => \@rules } );
+is( $schema->resultset('ActionLog')->count(), $actions_nb, q|ToggleNewStatus: no substitution does not generate action logs|);
+
+# Cleanup
 $cache = Koha::Caches->get_instance();
 $cache->clear_from_cache("MarcStructure-0-$frameworkcode");
 $cache->clear_from_cache("MarcStructure-1-$frameworkcode");
 $cache->clear_from_cache("default_value_for_mod_marc-");
 $cache->clear_from_cache("MarcSubfieldStructure-$frameworkcode");
+$schema->storage->txn_rollback;