Bug 10710: add unit tests for OfflineOperation's routines in C4/Circulation.pm

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>
This commit is contained in:
Kenza Zaki 2013-08-12 14:16:46 +02:00 committed by Galen Charlton
parent c191532cc0
commit 87890bc366

View file

@ -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;