Koha/t/db_dependent/ClassSource.t
Galen Charlton 8f933bc040 Bug 10644: (follow-up) remove inadvertant dependence on Perl 5.14
Perl 5.14 changed array and hash container functions (e.g., keys())
to accept hashrefs or arrayrefs.  However, this doesn't work in
Perl 5.10, so doing

  scalar(keys( function_returning_hashref() ) );

is a syntax error in that version.  This patch changes the affected
tests to explicitly difference the hashrefs returned by the various
functions.

To test:

Verify that t/db_dependent/ClassSource.t passes.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
2013-08-09 18:53:20 +00:00

197 lines
5.7 KiB
Perl

#!/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 information"
);
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 their information"
);
#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 information"
);
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 their information"
);
#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"
);
@sources = GetSourcesForSortRule();
is_deeply( \@sources, [],
"Without params GetSourcesForSortRule returns an empty array" );
@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, "With 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, "With 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;