|
Lines 21-26
use Modern::Perl;
Link Here
|
| 21 |
|
21 |
|
| 22 |
use Test::More tests => 11; |
22 |
use Test::More tests => 11; |
| 23 |
use Test::Exception; |
23 |
use Test::Exception; |
|
|
24 |
use Time::Fake; |
| 24 |
|
25 |
|
| 25 |
use C4::Circulation; |
26 |
use C4::Circulation; |
| 26 |
use C4::Context; |
27 |
use C4::Context; |
|
Lines 64-70
my $retrieved_item_1 = Koha::Items->find( $new_item_1->itemnumber );
Link Here
|
| 64 |
is( $retrieved_item_1->barcode, $new_item_1->barcode, 'Find a item by id should return the correct item' ); |
65 |
is( $retrieved_item_1->barcode, $new_item_1->barcode, 'Find a item by id should return the correct item' ); |
| 65 |
|
66 |
|
| 66 |
subtest 'store' => sub { |
67 |
subtest 'store' => sub { |
| 67 |
plan tests => 4; |
68 |
plan tests => 5; |
|
|
69 |
|
| 68 |
my $biblio = $builder->build_sample_biblio; |
70 |
my $biblio = $builder->build_sample_biblio; |
| 69 |
my $today = dt_from_string->set( hour => 0, minute => 0, second => 0 ); |
71 |
my $today = dt_from_string->set( hour => 0, minute => 0, second => 0 ); |
| 70 |
my $item = Koha::Item->new( |
72 |
my $item = Koha::Item->new( |
|
Lines 82-87
subtest 'store' => sub {
Link Here
|
| 82 |
is( $item->itype, $biblio->biblioitem->itemtype, 'items.itype must have been set to biblioitem.itemtype is not given'); |
84 |
is( $item->itype, $biblio->biblioitem->itemtype, 'items.itype must have been set to biblioitem.itemtype is not given'); |
| 83 |
is( $item->permanent_location, $item->location, 'permanent_location must have been set to location if not given' ); |
85 |
is( $item->permanent_location, $item->location, 'permanent_location must have been set to location if not given' ); |
| 84 |
$item->delete; |
86 |
$item->delete; |
|
|
87 |
|
| 88 |
subtest '*_on updates' => sub { |
| 89 |
plan tests => 9; |
| 90 |
|
| 91 |
# Once the '_on' value is set (triggered by the related field turning from false to true) |
| 92 |
# it should not be re-set for any changes outside of the related field being 'unset'. |
| 93 |
|
| 94 |
my @fields = qw( itemlost withdrawn damaged ); |
| 95 |
my $today = dt_from_string(); |
| 96 |
my $yesterday = $today->clone()->subtract( days => 1 ); |
| 97 |
|
| 98 |
for my $field ( @fields ) { |
| 99 |
my $item = $builder->build_sample_item( |
| 100 |
{ |
| 101 |
itemlost => 0, |
| 102 |
itemlost_on => undef, |
| 103 |
withdrawn => 0, |
| 104 |
withdrawn_on => undef, |
| 105 |
damaged => 0, |
| 106 |
damaged_on => undef |
| 107 |
} |
| 108 |
); |
| 109 |
my $field_on = $field . '_on'; |
| 110 |
|
| 111 |
# Set field for the first time |
| 112 |
Time::Fake->offset( $yesterday->epoch ); |
| 113 |
$item->$field(1)->store; |
| 114 |
$item->get_from_storage; |
| 115 |
is($item->$field_on, DateTime::Format::MySQL->format_datetime($yesterday), $field_on . " was set upon first truthy setting"); |
| 116 |
|
| 117 |
# Update the field to a new 'true' value |
| 118 |
Time::Fake->offset( $today->epoch ); |
| 119 |
$item->$field(2)->store; |
| 120 |
$item->get_from_storage; |
| 121 |
is($item->$field_on, DateTime::Format::MySQL->format_datetime($yesterday), $field_on . " was not updated upon second truthy setting"); |
| 122 |
|
| 123 |
# Update the field to a new 'false' value |
| 124 |
$item->$field(0)->store; |
| 125 |
$item->get_from_storage; |
| 126 |
is($item->$field_on, undef, $field_on . " was unset upon untruthy setting"); |
| 127 |
|
| 128 |
Time::Fake->reset; |
| 129 |
} |
| 130 |
}; |
| 131 |
|
| 85 |
}; |
132 |
}; |
| 86 |
|
133 |
|
| 87 |
subtest 'get_transfer' => sub { |
134 |
subtest 'get_transfer' => sub { |
| 88 |
- |
|
|