Bug 10710: add unit tests for OfflineOperation's routines in C4/Circulation.pm
authorKenza Zaki <kenza.zaki@biblibre.com>
Mon, 12 Aug 2013 12:16:46 +0000 (14:16 +0200)
committerGalen Charlton <gmc@esilibrary.com>
Wed, 28 Aug 2013 14:52:37 +0000 (14:52 +0000)
This patch test AddOfflineOperation,GetOfflineOperation and
DeleteOfflineOperation in C4/Circulation.pm.

The tests are wrapped in a transaction.

Note: Currently, GetOfflineOperations is not tested because we cannot
mock C4::Context->userenv in unit tests

To test:

prove t/db_dependent/Circulation_OfflineOperation.t
t/db_dependent/Circulation_OfflineOperation.t .. ok
All tests successful.
Files=1, Tests=7, 19 wallclock secs ( 0.01 usr  0.01 sys +  0.33 cusr  0.02 csys =  0.37 CPU

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
t/db_dependent/Circulation_OfflineOperation.t [new file with mode: 0644]

diff --git a/t/db_dependent/Circulation_OfflineOperation.t b/t/db_dependent/Circulation_OfflineOperation.t
new file mode 100644 (file)
index 0000000..46ecb3b
--- /dev/null
@@ -0,0 +1,96 @@
+#!/usr/bin/perl
+
+use Modern::Perl;
+use C4::Branch;
+use C4::Circulation;
+
+use Test::More tests => 7;
+
+BEGIN {
+    use_ok('C4::Circulation');
+}
+can_ok(
+    'C4::Circulation',
+    qw(
+      AddOfflineOperation
+      GetOfflineOperation
+      GetOfflineOperations
+      DeleteOfflineOperation
+      )
+);
+
+#Start transaction
+my $dbh = C4::Context->dbh;
+$dbh->{RaiseError} = 1;
+$dbh->{AutoCommit} = 0;
+
+$dbh->do(q|DELETE FROM issues|);
+$dbh->do(q|DELETE FROM borrowers|);
+$dbh->do(q|DELETE FROM items|);
+$dbh->do(q|DELETE FROM branches|);
+$dbh->do(q|DELETE FROM pending_offline_operations|);
+
+#Add branch
+my $samplebranch1 = {
+    add            => 1,
+    branchcode     => 'SAB1',
+    branchname     => 'Sample Branch',
+    branchaddress1 => 'sample adr1',
+    branchaddress2 => 'sample adr2',
+    branchaddress3 => 'sample adr3',
+    branchzip      => 'sample zip',
+    branchcity     => 'sample city',
+    branchstate    => 'sample state',
+    branchcountry  => 'sample country',
+    branchphone    => 'sample phone',
+    branchfax      => 'sample fax',
+    branchemail    => 'sample email',
+    branchurl      => 'sample url',
+    branchip       => 'sample ip',
+    branchprinter  => undef,
+    opac_info      => 'sample opac',
+};
+ModBranch($samplebranch1);
+
+#Begin Tests
+#Test AddOfflineOperation
+is(
+    AddOfflineOperation(
+        'User1', $samplebranch1->{branchcode},
+        'null', 'Action1', 'CODE', 'Cardnumber1', 10
+    ),
+    'Added.',
+    "OfflineOperation has been added"
+);
+my $offline_id =
+  $dbh->last_insert_id( undef, undef, 'pending_offline_operations', undef );
+
+#Test GetOfflineOperations
+is_deeply(
+    GetOfflineOperation($offline_id),
+    {
+        operationid => $offline_id,
+        userid      => 'User1',
+        branchcode  =>  $samplebranch1->{branchcode},
+        timestamp   => "0000-00-00 00:00:00",
+        action      => 'Action1',
+        barcode     => 'CODE',
+        cardnumber  => 'Cardnumber1',
+        amount      => '10.000000'
+    },
+    "GetOffline returns offlineoperation's informations"
+);
+is(GetOfflineOperation,undef,'GetOfflineOperation without parameters returns undef');
+is(GetOfflineOperation(-1),undef,'GetOfflineOperation with wrong parameters returns undef');
+
+#Test GetOfflineOperations
+#TODO later: test GetOfflineOperations
+# Actually we cannot mock C4::Context->userenv in unit tests
+
+#Test DeleteOfflineOperation
+is (DeleteOfflineOperation($offline_id),'Deleted.','Offlineoperation has been deleted');
+#is (DeleteOfflineOperation, undef, 'DeleteOfflineOperation without id returns undef');
+#is (DeleteOfflineOperation(-1),undef, 'DeleteOfflineOperation with a wrong id returns undef');#FIXME
+
+#End transaction
+$dbh->rollback;