Koha/t/db_dependent/Reports_Guided.t
Galen Charlton 795700d8f0 Bug 12214: add regression test for reporting error when running report with SQL error
To test:

[1] Run prove -v t/db_dependent/Reports_Guided.t. Last test should
    fail.
[2] Apply the main patch.
[3] Run step 1 again.  This time, all tests should pass.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
2014-05-09 14:39:54 +00:00

103 lines
2.6 KiB
Perl
Executable file

#!/usr/bin/perl
#
# This Koha test module is a stub!
# Add more tests here!!!
use Modern::Perl;
use Test::More tests => 15;
use C4::Context;
BEGIN {
use_ok('C4::Reports::Guided');
}
can_ok(
'C4::Reports::Guided',
qw(save_report delete_report execute_query)
);
#Start transaction
my $dbh = C4::Context->dbh;
$dbh->{RaiseError} = 1;
$dbh->{AutoCommit} = 0;
$dbh->do(q|DELETE FROM saved_sql|);
#Start tests
#Test save_report
my $count = scalar( @{ get_saved_reports() } );
is( $count, 0, "There is no report" );
my @report_ids;
for my $id ( 1 .. 3 ) {
push @report_ids, save_report({
borrowernumber => $id,
savedsql => "SQL$id",
name => "Name$id",
area => "area$id",
group => "group$id",
subgroup => "subgroup$id",
type => "type$id",
notes => "note$id",
cache_expiry => "null",
public => "null"
});
$count++;
}
like( $report_ids[0], '/^\d+$/', "Save_report returns an id for first" );
like( $report_ids[1], '/^\d+$/', "Save_report returns an id for second" );
like( $report_ids[2], '/^\d+$/', "Save_report returns an id for third" );
is( scalar( @{ get_saved_reports() } ),
$count, "$count reports have been added" );
#Test delete_report
is (delete_report(),undef, "Without id delete_report returns undef");
is( delete_report( $report_ids[0] ), 1, "report 1 is deleted" );
$count--;
is( scalar( @{ get_saved_reports() } ), $count, "Report1 has been deleted" );
is( delete_report( $report_ids[1], $report_ids[2] ), 2, "report 2 and 3 are deleted" );
$count -= 2;
is( scalar( @{ get_saved_reports() } ),
$count, "Report2 and report3 have been deleted" );
my $sth = execute_query('SELECT COUNT(*) FROM systempreferences', 0, 10);
my $results = $sth->fetchall_arrayref;
is(scalar(@$results), 1, 'running a query returned a result');
my $version = C4::Context->preference('Version');
$sth = execute_query(
'SELECT value FROM systempreferences WHERE variable = ?',
0,
10,
[ 'Version' ],
);
$results = $sth->fetchall_arrayref;
is_deeply(
$results,
[ [ $version ] ],
'running a query with a parameter returned the expected result'
);
# for next test, we want to let execute_query capture any SQL errors
$dbh->{RaiseError} = 0;
my $errors;
($sth, $errors) = execute_query(
'SELECT surname FRM borrowers', # error in the query is intentional
0,
10,
);
ok(
defined($errors) && exists($errors->{queryerr}),
'attempting to run a report with an SQL syntax error returns error message (Bug 12214)'
);
#End transaction
$dbh->rollback;