Bug 13757: (regression tests) Empty attributes should delete existing
authorTomas Cohen Arazi <tomascohen@theke.io>
Tue, 31 Jan 2017 15:39:53 +0000 (12:39 -0300)
committerKyle M Hall <kyle@bywatersolutions.com>
Fri, 24 Mar 2017 18:45:09 +0000 (18:45 +0000)
This patch introduces tests for the required functionality.

To test:
- Run:
  $ prove t/db_dependent/Koha/Patron/Modifications.t
=> FAIL: The current code doesn't work like that

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
https://bugs.koha-community.org/show_bug.cgi?id=13737

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
t/db_dependent/Koha/Patron/Modifications.t

index 6102316..3ea8aee 100755 (executable)
@@ -132,7 +132,7 @@ subtest 'store( extended_attributes ) tests' => sub {
 
 subtest 'approve tests' => sub {
 
-    plan tests => 14;
+    plan tests => 18;
 
     $schema->storage->txn_begin;
 
@@ -224,6 +224,30 @@ subtest 'approve tests' => sub {
     is( $patron_attributes[2]->{attribute},
         'None', 'Attribute updated correctly (attribute)' );
 
+    my $empty_code_json = '[{"code":"CODE_2","value":""}]';
+    $verification_token = md5_hex( time() . {} . rand() . {} . $$ );
+
+    $patron_modification = Koha::Patron::Modification->new(
+        {   borrowernumber      => $patron->borrowernumber,
+            extended_attributes => $empty_code_json,
+            verification_token  => $verification_token
+        }
+    )->store();
+    ok( $patron_modification->approve,
+        'Patron modification correctly approved' );
+    @patron_attributes
+        = map { $_->unblessed }
+        Koha::Patron::Attributes->search(
+        { borrowernumber => $patron->borrowernumber } );
+
+    is( $patron_attributes[0]->{code},
+        'CODE_1', 'Untouched attribute type is preserved (code)' );
+    is( $patron_attributes[0]->{attribute},
+        'VALUE_1', 'Untouched attribute type is preserved (attribute)' );
+
+    my $count = Koha::Patron::Attributes->search({ borrowernumber => $patron->borrowernumber, code => 'CODE_2' })->count;
+    is( $count, 0, 'Attributes deleted when modification contained an empty one');
+
     $schema->storage->txn_rollback;
 };