Bug 17932: Unit tests
authorTomas Cohen Arazi <tomascohen@theke.io>
Tue, 24 Jan 2017 13:41:00 +0000 (10:41 -0300)
committerKyle M Hall <kyle@bywatersolutions.com>
Fri, 17 Feb 2017 15:33:00 +0000 (15:33 +0000)
This patch adds unit tests for the Koha::Object::TO_JSON function.
It tests on top of Koha::Patron as Koha::Object needs to be
instantiated.

To test:
- Apply the patch
- Run:
  $ prove -v t/db_dependent/Koha/Object.t
=> SUCCESS: New tests for TO_JSON are run and return green.
- Sign off :-D

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
t/db_dependent/Koha/Object.t

index 9ea5e8c..fd5d89b 100755 (executable)
 
 use Modern::Perl;
 
-use Test::More tests => 7;
+use Test::More tests => 8;
 use Test::Warn;
 
 use C4::Context;
 use Koha::Database;
 use Koha::DateUtils qw( dt_from_string );
 
+use Scalar::Util qw( isvstring );
+
 use t::lib::TestBuilder;
 
 BEGIN {
@@ -34,6 +36,8 @@ BEGIN {
 my $schema = Koha::Database->new->schema;
 $schema->storage->txn_begin;
 
+my $builder = t::lib::TestBuilder->new();
+
 my $categorycode = $schema->resultset('Category')->first()->categorycode();
 my $branchcode = $schema->resultset('Branch')->first()->branchcode();
 
@@ -107,4 +111,28 @@ subtest 'discard_changes' => sub {
     );
 };
 
+subtest 'TO_JSON tests' => sub {
+
+    plan tests => 5;
+
+    my $borrowernumber = $builder->build(
+        { source => 'Borrower',
+          value => { lost => 1,
+                     gonenoaddress => 0 } })->{borrowernumber};
+
+    my $patron = Koha::Patrons->find($borrowernumber);
+    my $lost = $patron->TO_JSON()->{lost};
+    my $gonenoaddress = $patron->TO_JSON->{gonenoaddress};
+
+    ok( $lost->isa('Mojo::JSON::_Bool'), 'Boolean attribute type is correct' );
+    is( $lost, 1, 'Boolean attribute value is correct (true)' );
+
+    ok( $gonenoaddress->isa('Mojo::JSON::_Bool'), 'Boolean attribute type is correct' );
+    is( $gonenoaddress, 0, 'Boolean attribute value is correct (false)' );
+
+    ok( !isvstring($patron->borrowernumber), 'Integer values are not coded as strings' );
+};
+
+
+
 1;