From 4064fa9b9c26c4d02c43f7a0f2df369312beb001 Mon Sep 17 00:00:00 2001
From: Nick Clemens <nick@bywatersolutions.com>
Date: Wed, 24 Feb 2016 17:56:23 +0000
Subject: [PATCH] Bug 15877 - Unit tests

Signed-off-by: Srdjan <srdjan@catalyst.net.nz>
---
 t/db_dependent/Barcodes.t | 52 ++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 51 insertions(+), 1 deletion(-)

diff --git a/t/db_dependent/Barcodes.t b/t/db_dependent/Barcodes.t
index d987bd5..0788edd 100755
--- a/t/db_dependent/Barcodes.t
+++ b/t/db_dependent/Barcodes.t
@@ -17,8 +17,12 @@
 
 use Modern::Perl;
 
-use Test::More tests => 73;
+use Test::More tests => 76;
 use Test::Warn;
+use Test::MockModule;
+use t::lib::TestBuilder;
+
+use Koha::Database;
 
 $| = 1;
 
@@ -28,6 +32,52 @@ 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;
+
+#Test generation of annual barcodes from
+$dbh->do(q|DELETE FROM issues|);
+$dbh->do(q|DELETE FROM items|);
+
+my $barcodeobj = C4::Barcodes->new('annual');
+
+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');
+
+$dbh->do(q|DELETE FROM issues|);
+$dbh->do(q|DELETE FROM items|);
+
 my %thash = (
     incremental => [],
     annual => [],
-- 
2.1.4