Bug 15877 - Unit tests
authorNick Clemens <nick@bywatersolutions.com>
Wed, 24 Feb 2016 17:56:23 +0000 (17:56 +0000)
committerBrendan Gallagher <brendan@bywatersolutions.com>
Thu, 7 Apr 2016 05:36:13 +0000 (05:36 +0000)
Signed-off-by: Srdjan <srdjan@catalyst.net.nz>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Brendan Gallagher brendan@bywatersolutions.com
t/db_dependent/Barcodes.t

index d987bd5..9ea13af 100755 (executable)
 
 use Modern::Perl;
 
-use Test::More tests => 73;
+use Test::More tests => 74;
 use Test::Warn;
+use Test::MockModule;
+use t::lib::TestBuilder;
+
+use Koha::Database;
 
 $| = 1;
 
@@ -28,6 +32,61 @@ BEGIN {
     use_ok('C4::Barcodes');
 }
 
+my $schema  = Koha::Database->new->schema;
+$schema->storage->txn_begin;
+
+my $builder = t::lib::TestBuilder->new;
+
+my $dbh = C4::Context->dbh;
+
+subtest 'Test generation of annual barcodes from DB values' => sub {
+
+    plan tests => 4;
+
+    $builder->clear( { source => 'Issue' } );
+    $builder->clear( { source => 'Item' } );
+
+    my $barcodeobj;
+
+    warning_like { $barcodeobj = C4::Barcodes->new('annual'); } [ qr/No max barcode (.*) found\.  Using initial value\./ ], "(annual) Expected complaint regarding no max barcode found";
+
+    my $barcodevalue = $barcodeobj->value();
+
+    my $item_1 = $builder->build({
+        source => 'Item',
+        value => {
+            barcode => $barcodevalue
+        }
+    });
+
+    is($barcodevalue,$barcodeobj->db_max(), "(annual) First barcode saved to db is equal to db_max" );
+
+    #This is just setting the value ahead an arbitrary amount before adding a second barcode to db
+    $barcodevalue = $barcodeobj->next_value();
+    $barcodevalue = $barcodeobj->next_value($barcodevalue);
+    $barcodevalue = $barcodeobj->next_value($barcodevalue);
+    $barcodevalue = $barcodeobj->next_value($barcodevalue);
+    $barcodevalue = $barcodeobj->next_value($barcodevalue);
+
+    my $item_2 = $builder->build({
+        source => 'Item',
+        value => {
+            barcode => $barcodevalue
+        }
+    });
+
+    $barcodeobj = C4::Barcodes->new('annual');
+
+    is($barcodevalue,$barcodeobj->db_max(), '(annual) db_max should equal the greatest barcode in the db when more than 1 present');
+    ok($barcodeobj->value() gt $barcodevalue, '(annual) new barcode object should be created with value greater and last value inserted into db');
+
+    $schema->storage->txn_rollback;
+};
+
+
+$builder->clear( { source => 'Issue' } );
+$builder->clear( { source => 'Item' } );
+
 my %thash = (
     incremental => [],
     annual => [],