@@ -, +, @@ --- t/db_dependent/CourseReserves/CourseItems.t | 133 +++++++++++++++++++- 1 file changed, 132 insertions(+), 1 deletion(-) --- a/t/db_dependent/CourseReserves/CourseItems.t +++ a/t/db_dependent/CourseReserves/CourseItems.t @@ -23,7 +23,7 @@ use C4::CourseReserves qw/ModCourseItem ModCourseReserve DelCourseReserve GetCou use C4::Context; use Koha::Items; -use Test::More tests => 34; +use Test::More tests => 35; BEGIN { require_ok('C4::CourseReserves'); @@ -202,6 +202,137 @@ DelCourseReserve( cr_id => $cr_id2 ); $item = Koha::Items->find($itemnumber); is($item->ccode, '', 'Item ccode should be set back to empty'); +subtest 'Ensure modifying fields on existing course items updates the item and course item' => sub { + plan tests => 60; + + my ($biblionumber, $itemnumber) = create_bib_and_item(); + my $ci_id = ModCourseItem( + itemnumber => $itemnumber, + itype_enabled => 0, + ccode_enabled => 0, + homebranch_enabled => 0, + holdingbranch_enabled => 0, + location_enabled => 0, + ); + + my $course = $builder->build({ + source => 'CourseReserve', + value => { + ci_id => $ci_id, + enabled => 'no', + } + }); + + my $cr_id = ModCourseReserve( + course_id => $course->{course_id}, + ci_id => $ci_id, + staff_note => '', + public_note => '', + ); + + my $course_item = GetCourseItem( ci_id => $ci_id ); + is($course_item->{itype_storage}, undef, 'Course item itype storage should be undef'); + is($course_item->{ccode_storage}, undef, 'Course item ccode storage should be undef'); + is($course_item->{homebranch_storage}, undef, 'Course item holding branch storage should be undef'); + is($course_item->{holdingbranch_storage}, undef, 'Course item holding branch storage should be undef'); + is($course_item->{location_storage}, undef, 'Course item location storage should be undef'); + + is($course_item->{itype}, undef, 'Course item itype should be undef'); + is($course_item->{ccode}, undef, 'Course item ccode should be undef'); + is($course_item->{homebranch}, undef, 'Course item holding branch should be undef'); + is($course_item->{holdingbranch}, undef, 'Course item holding branch should be undef'); + is($course_item->{location}, undef, 'Course item location should be undef'); + + is($course_item->{itype_enabled}, 0, 'Course item itype enabled should be 0'); + is($course_item->{ccode_enabled}, 0, 'Course item ccode enabled should be 0'); + is($course_item->{homebranch_enabled}, 0, 'Course item holding branch enabled should be 0'); + is($course_item->{holdingbranch_enabled}, 0, 'Course item holding branch enabled should be 0'); + is($course_item->{location_enabled}, 0, 'Course item location enabled should be 0'); + + my $item = Koha::Items->find($itemnumber); + is($item->effective_itemtype, 'CD_foo', 'Item type in course should be CD_foo'); + is($item->ccode, 'CD', 'Item ccode in course should be CD'); + is($item->homebranch, 'B1', 'Item home branch in course should be B1'); + is($item->holdingbranch, 'B1', 'Item holding branch in course should be B1'); + is($item->location, 'HR', 'Item location in course should be HR'); + + ModCourseItem( + itemnumber => $itemnumber, + itype_enabled => 1, + ccode_enabled => 1, + homebranch_enabled => 1, + holdingbranch_enabled => 1, + location_enabled => 1, + itype => 'BK_foo', + ccode => 'BOOK', + homebranch => 'B2', + holdingbranch => 'B2', + location => 'TH', + ); + + $course_item = GetCourseItem( ci_id => $ci_id ); + is($course_item->{itype_storage}, 'CD_foo', 'Course item itype storage should be CD_foo'); + is($course_item->{ccode_storage}, 'CD', 'Course item ccode storage should be CD'); + is($course_item->{homebranch_storage}, 'B1', 'Course item holding branch storage should be B1'); + is($course_item->{holdingbranch_storage}, 'B1', 'Course item holding branch storage should be B1'); + is($course_item->{location_storage}, 'HR', 'Course item location storage should be HR'); + + is($course_item->{itype}, 'BK_foo', 'Course item itype should be BK_foo'); + is($course_item->{ccode}, 'BOOK', 'Course item ccode should be BOOK'); + is($course_item->{homebranch}, 'B2', 'Course item holding branch should be B2'); + is($course_item->{holdingbranch}, 'B2', 'Course item holding branch should be B2'); + is($course_item->{location}, 'TH', 'Course item location should be TH'); + + is($course_item->{itype_enabled}, 1, 'Course item itype enabled should be 1'); + is($course_item->{ccode_enabled}, 1, 'Course item ccode enabled should be 1'); + is($course_item->{homebranch_enabled}, 1, 'Course item holding branch enabled should be 1'); + is($course_item->{holdingbranch_enabled}, 1, 'Course item holding branch enabled should be 1'); + is($course_item->{location_enabled}, 1, 'Course item location enabled should be 1'); + + $item = Koha::Items->find($itemnumber); + is($item->effective_itemtype, 'BK_foo', 'Item type in course should be BK_foo'); + is($item->ccode, 'BOOK', 'Item ccode in course should be BOOK'); + is($item->homebranch, 'B2', 'Item home branch in course should be B2'); + is($item->holdingbranch, 'B2', 'Item holding branch in course should be B2'); + is($item->location, 'TH', 'Item location in course should be TH'); + + # Test removing fields from an active course item + ModCourseItem( + itemnumber => $itemnumber, + itype_enabled => 0, + ccode_enabled => 0, + homebranch_enabled => 0, + holdingbranch_enabled => 0, + location_enabled => 0, + ); + + $course_item = GetCourseItem( ci_id => $ci_id ); + is($course_item->{itype_storage}, undef, 'Course item itype storage should be undef'); + is($course_item->{ccode_storage}, undef, 'Course item ccode storage should be undef'); + is($course_item->{homebranch_storage}, undef, 'Course item holding branch storage should be undef'); + is($course_item->{holdingbranch_storage}, undef, 'Course item holding branch storage should be undef'); + is($course_item->{location_storage}, undef, 'Course item location storage should be undef'); + + is($course_item->{itype}, undef, 'Course item itype should be undef'); + is($course_item->{ccode}, undef, 'Course item ccode should be undef'); + is($course_item->{homebranch}, undef, 'Course item holding branch should be undef'); + is($course_item->{holdingbranch}, undef, 'Course item holding branch should be undef'); + is($course_item->{location}, undef, 'Course item location should be undef'); + + is($course_item->{itype_enabled}, 0, 'Course item itype enabled should be 0'); + is($course_item->{ccode_enabled}, 0, 'Course item ccode enabled should be 0'); + is($course_item->{homebranch_enabled}, 0, 'Course item holding branch enabled should be 0'); + is($course_item->{holdingbranch_enabled}, 0, 'Course item holding branch enabled should be 0'); + is($course_item->{location_enabled}, 0, 'Course item location enabled should be 0'); + + $item = Koha::Items->find($itemnumber); + is($item->effective_itemtype, 'CD_foo', 'Item type in course should be CD_foo'); + is($item->ccode, 'CD', 'Item ccode in course should be CD'); + is($item->homebranch, 'B1', 'Item home branch in course should be B1'); + is($item->holdingbranch, 'B1', 'Item holding branch in course should be B1'); + is($item->location, 'HR', 'Item location in course should be HR'); +}; + subtest 'Ensure item info is preserved' => sub { plan tests => 8; --