Bug 10761: UT: add unit tests for save_report and delete_report in C4::Reports::Guided
authorKenza Zaki <kenza.zaki@biblibre.com>
Mon, 19 Aug 2013 13:20:59 +0000 (15:20 +0200)
committerGalen Charlton <gmc@esilibrary.com>
Wed, 21 Aug 2013 14:35:10 +0000 (14:35 +0000)
The test are wrapped in a transaction.

Note : The last test (in comment) currently doesn't pass because it
needs some modifications of delete_report.

To test:
prove t/db_dependent/Reports_Guided.t
t/db_dependent/Reports_Guided.t .. ok
All tests successful.
Files=1, Tests=7,  0 wallclock secs ( 0.01 usr  0.01 sys +  0.28 cusr  0.02 csys =  0.32 CPU)
Result: PASS

Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de>
Works nicely, tested with patch for bug 10761 applied.

Signed-off-by: Jonathan Druart <jonathan.druart@biblibre.com>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
t/db_dependent/Reports_Guided.t

index 0b0cda6..6057207 100755 (executable)
@@ -1,14 +1,75 @@
 #!/usr/bin/perl
 #
-# This Koha test module is a stub!  
+# This Koha test module is a stub!
 # Add more tests here!!!
 
-use strict;
-use warnings;
+use Modern::Perl;
 
-use Test::More tests => 1;
+use Test::More tests => 7;
+
+use C4::Context;
 
 BEGIN {
-        use_ok('C4::Reports::Guided');
+    use_ok('C4::Reports::Guided');
 }
+can_ok(
+    'C4::Reports::Guided',
+    qw(save_report
+      delete_report)
+);
+
+#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( keys get_saved_reports() );
+is( $count, 0, "There is no report" );
+my $sample_report1 = {
+    borrowernumber => 1,
+    savedsql       => 'SQL1',
+    name           => 'Name1',
+    area           => 'area1',
+    group          => 'group1',
+    subgroup       => 'subgroup1',
+    type           => 'type1',
+    notes          => 'note1',
+    cache_expiry   => 'null',
+    public         => 'null'
+};
+my $sample_report2 = {
+    borrowernumber => 2,
+    savedsql       => 'SQL2',
+    name           => 'Name2',
+    area           => 'area2',
+    group          => 'group2',
+    subgroup       => 'subgroup2',
+    type           => 'type2',
+    notes          => 'note2',
+    cache_expiry   => 'null',
+    public         => 'null'
+};
+my $report_id1 = save_report($sample_report1);
+my $report_id2 = save_report($sample_report2);
+like( $report_id1, '/^\d+$/', "Save_report returns an id" );
+like( $report_id2, '/^\d+$/', "Save_report returns an id" );
+is( scalar( keys get_saved_reports() ),
+    $count + 2, "Report1 and report2 have been added" );
+
+#Test delete_report
+#It would be better if delete_report has return values
+delete_report( $report_id1, $report_id2 );
+is( scalar( keys get_saved_reports() ),
+    $count, "Report1 and report2 have been deleted" );
+
+#FIX ME: Currently, this test doesn't pass because delete_report doesn't test if one or more parameters are given
+#is (deleted_report(),undef, "Without id deleted_report returns undef");
+
+#End transaction
+$dbh->rollback;