Bug 31202: Don't remove optional SIP fields with a value of "0"
authorKyle Hall <kyle@bywatersolutions.com>
Wed, 20 Jul 2022 16:32:58 +0000 (12:32 -0400)
committerTomas Cohen Arazi <tomascohen@theke.io>
Thu, 21 Jul 2022 18:55:56 +0000 (15:55 -0300)
If the value of a SIP field is "0", that evaluates to false, so any calls to maybe_add with a value of "0" will not get added to the SIP response message.

Test Plan:
1) Apply this patch
2) prove t/db_dependent/SIP/Message.t

Signed-off-by: Michal Urban <michalurban177@gmail.com>
JK: Adjust commit title

Signed-off-by: Joonas Kylmälä <joonas.kylmala@iki.fi>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
C4/SIP/Sip.pm
t/db_dependent/SIP/Message.t

index bd834f2..4d662a2 100644 (file)
@@ -108,7 +108,10 @@ sub maybe_add {
             $value =~ s/$regex->{find}/$regex->{replace}/g;
         }
     }
-    return (defined($value) && $value) ? add_field($fid, $value) : '';
+
+    return ( defined($value) && length($value) )
+      ? add_field( $fid, $value )
+      : '';
 }
 
 #
index 162edfb..fc0e119 100755 (executable)
@@ -115,7 +115,7 @@ subtest 'Test hold_patron_bcode' => sub {
 
 subtest 'hold_patron_name() tests' => sub {
 
-    plan tests => 2;
+    plan tests => 3;
 
     my $schema = Koha::Database->new->schema;
     $schema->storage->txn_begin;
@@ -145,6 +145,9 @@ subtest 'hold_patron_name() tests' => sub {
     my $resp = C4::SIP::Sip::maybe_add( FID_CALL_NUMBER, $sip_item->hold_patron_name, $server );
     is( $resp, q{}, "maybe_add returns empty string for SIP item with no hold returns empty string" );
 
+    $resp = C4::SIP::Sip::maybe_add( FID_CALL_NUMBER, "0", $server );
+    is( $resp, q{CS0|}, "maybe_add will create the field of the string '0'" );
+
     $schema->storage->txn_rollback;
 };