[Koha-patches] [PATCH] Bug 10644: ClassSource.pm needs unit tests
Srdjan
srdjan at catalyst.net.nz
Mon Jul 29 05:59:17 CEST 2013
From: root <root at kenza-VirtualBox>
The tests are wrap in a database transaction.
To test:
prove t/db_dependent/ClassSource.t
t/db_dependent/ClassSource.t .. 1/24 prepare_cached(SELECT * FROM `class_sort_rules` WHERE `class_sort_rule` = ?) statement handle DBI::st=HASH(0x92dbedc) still Active at C4/ClassSource.pm line 249
prepare_cached(SELECT * FROM `class_sources` WHERE cn_source = ?) statement handle DBI::st=HASH(0x926876c) still Active at C4/ClassSource.pm line 137
attempting to use non-existent class sorting routine routine1
prepare_cached(SELECT * FROM `class_sort_rules` WHERE `class_sort_rule` = ?) statement handle DBI::st=HASH(0x92dbedc) still Active at C4/ClassSource.pm line 249
prepare_cached(SELECT * FROM `class_sources` WHERE cn_source = ?) statement handle DBI::st=HASH(0x926876c) still Active at C4/ClassSource.pm line 137
t/db_dependent/ClassSource.t .. ok
All tests successful.
Files=1, Tests=24, 0 wallclock secs ( 0.02 usr 0.00 sys + 0.12 cusr 0.01 csys = 0.15 CPU)
Result: PASS
Signed-off-by: Srdjan <srdjan at catalyst.net.nz>
---
t/db_dependent/ClassSource.t | 198 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 198 insertions(+)
create mode 100644 t/db_dependent/ClassSource.t
diff --git a/t/db_dependent/ClassSource.t b/t/db_dependent/ClassSource.t
new file mode 100644
index 0000000..0b1b2e2
--- /dev/null
+++ b/t/db_dependent/ClassSource.t
@@ -0,0 +1,198 @@
+#!/usr/bin/perl
+
+use Modern::Perl;
+
+use Test::More tests => 24;
+
+use C4::Context;
+
+BEGIN {
+ use_ok('C4::ClassSource');
+}
+can_ok( 'C4::ClassSource',
+ qw( AddClassSortRule
+ AddClassSource
+ GetClassSort
+ GetClassSortRule
+ GetClassSortRules
+ GetClassSource
+ GetClassSources
+ DelClassSortRule
+ DelClassSource
+ GetSourcesForSortRule
+ ModClassSortRule
+ ModClassSource)
+);
+
+#Start transaction
+my $dbh = C4::Context->dbh;
+$dbh->{RaiseError} = 1;
+$dbh->{AutoCommit} = 0;
+
+#Start tests
+$dbh->do(q|DELETE FROM class_sources|);
+$dbh->do(q|DELETE FROM class_sort_rules|);
+
+#Test AddClassSortRule
+my $countSources = scalar( keys(GetClassSources) );
+my $countSources2 = scalar( keys(GetClassSortRules) );
+AddClassSortRule( 'sortrule1', 'description1', 'routine1' );
+AddClassSortRule( 'sortrule2', 'description2', 'routine2' );
+is(
+ scalar( keys(GetClassSortRules) ),
+ $countSources + 2,
+ "SortRule1 and SortRules2 have been added"
+);
+
+#Test AddClassSource
+AddClassSource( 'source1', 'Description_source1', 1, 'sortrule1' );
+AddClassSource( 'source2', 'Description_source2', 0, 'sortrule1' );
+is(
+ scalar( keys(GetClassSources) ),
+ $countSources2 + 2,
+ "Source1 and source2 have been added"
+);
+
+#Test GetClassSortRule
+is_deeply(
+ GetClassSortRule('sortrule1'),
+ {
+ class_sort_rule => 'sortrule1',
+ description => 'description1',
+ sort_routine => 'routine1'
+ },
+ "GetClassSort gives sortrule1's informations"
+);
+is_deeply( GetClassSortRule(), undef,
+ "GetClassSort without params returns undef" );
+is_deeply( GetClassSortRule('doesnt_exist'),
+ undef, "GetClassSort with an id which doesn't exist returns undef" );
+
+#Test GetClassSortRules
+my $getsortrules = GetClassSortRules();
+is_deeply(
+ $getsortrules,
+ {
+ sortrule1 => {
+ class_sort_rule => 'sortrule1',
+ description => 'description1',
+ sort_routine => 'routine1'
+ },
+ sortrule2 => {
+ class_sort_rule => 'sortrule2',
+ description => 'description2',
+ sort_routine => 'routine2'
+ }
+ },
+ "GetClassSortRules returns the id off all SortRule and there informations"
+);
+
+#Test GetClassSource
+my $getsource1 = GetClassSource('source1');
+is_deeply(
+ $getsource1,
+ {
+ cn_source => 'source1',
+ description => 'Description_source1',
+ used => 1,
+ class_sort_rule => 'sortrule1'
+ },
+ "GetClassSource gives source1's informations"
+);
+is_deeply( GetClassSource(), undef,
+ "GetClassSource without params returns undef" );
+is_deeply( GetClassSource('doesnt_exist'),
+ undef, "GetClassSource with an id which doesn't exist returns undef" );
+
+#Test GetClassSources
+my $getsources = GetClassSources();
+is_deeply(
+ $getsources,
+ {
+ source1 => {
+ cn_source => 'source1',
+ description => 'Description_source1',
+ used => 1,
+ class_sort_rule => 'sortrule1'
+ },
+ source2 => {
+ cn_source => 'source2',
+ description => 'Description_source2',
+ used => 0,
+ class_sort_rule => 'sortrule1'
+ }
+ },
+ "GetClassSources returns the id off all sources and there informations"
+);
+
+#Test GetClassSort
+my $getclassSort = GetClassSort( 'source1', 'sortrule1', 'item1' )
+ ; #Note: Create a warning:" attempting to use non-existent class sorting routine $sort_routine"
+is( $getclassSort, "SORTRULE1_ITEM1",
+" the sort key corresponding to Source1 and sortrule1 and item1 is SORTRULE1_ITEM1"
+);
+
+#Test GetSourcesForSorSortRule
+my @sources = GetSourcesForSortRule('sortrule1');
+is_deeply(
+ \@sources,
+ [ 'source1', 'source2' ],
+ "Sortrule1 has source1 and source2"
+);
+ at sources = GetSourcesForSortRule();
+is_deeply( \@sources, [],
+ "Without params GetSourcesForSortRule returns an empty array" );
+ at sources = GetSourcesForSortRule('doesnt_exist');
+is_deeply( \@sources, [],
+ "With a wrong params GetSourcesForSortRule returns an empty array" );
+
+#Test DelClassSortRule
+#DelClassSortRule ('sortrule1');
+#is(scalar (keys (GetClassSortRules)),1,"SortRule1 has been deleted");#FIXME : impossible if some sources exist
+DelClassSortRule('sortrule2');
+is( scalar( keys(GetClassSortRules) ), 1, "SortRule2 has been deleted" );
+DelClassSortRule();
+is( scalar( keys(GetClassSortRules) ),
+ 1, "Without params DelClassSortRule doesn't do anything" );
+DelClassSortRule('doesnt_exist');
+is( scalar( keys(GetClassSortRules) ),
+ 1, "Without wrong id, DelClassSortRule doesn't do anything" );
+
+#Test DelClassSource
+DelClassSource('source2');
+is( scalar( keys(GetClassSources) ), 1, "Source2 has been deleted" );
+DelClassSource();
+is( scalar( keys(GetClassSources) ),
+ 1, "Without params DelClassSource doesn't do anything" );
+DelClassSource('doesnt_exist');
+is( scalar( keys(GetClassSources) ),
+ 1, "Without wrong id, DelClassSource doesn't do anything" );
+
+#Test ModClassSortRule
+ModClassSortRule( 'sortrule1', 'description1_modified', 'routine1_modified' );
+is_deeply(
+ GetClassSortRule('sortrule1'),
+ {
+ class_sort_rule => 'sortrule1',
+ description => 'description1_modified',
+ sort_routine => 'routine1_modified'
+ },
+ "Sortrule1 has been modified"
+);
+
+#Test ModClassSource
+ModClassSource( 'source1', 'Description_source1_modified', 0, 'sortrule1' );
+is_deeply(
+ GetClassSource('source1'),
+ {
+ cn_source => 'source1',
+ description => 'Description_source1_modified',
+ used => 0,
+ class_sort_rule => 'sortrule1'
+ },
+ "Source1 has been modified"
+);
+
+#End transaction
+$dbh->rollback;
+
--
1.8.1.2
More information about the Koha-patches
mailing list