Bug 16869: Silence and catch warnings in t/db_dependent/SuggestionEngine_ExplodedTerms.t
authorMark Tompsett <mtompset@hotmail.com>
Thu, 7 Jul 2016 06:34:28 +0000 (02:34 -0400)
committerKyle M Hall <kyle@bywatersolutions.com>
Fri, 8 Jul 2016 13:08:09 +0000 (13:08 +0000)
By properly defining a opachtdocs (intranethtdocs was done too)
in the mock function, uninitialized variable warnings are
eliminated. Given that we can check if $KOHA_CONF is defined or
not, we can catch the warning as part of testing, so the output
of the test is cleaner.

TEST PLAN
---------
1) unset KOHA_CONF
2) prove t/db_dependent/SuggestionEngine_ExplodedTerms.t
   -- lots of noise
3) apply patch
4) prove t/db_dependent/SuggestionEngine_ExplodedTerms.t
   -- no noise
5) prove -v t/db_dependent/SuggestionEngine_ExplodedTerms.t
   -- see the warnings were caught and not just ignored.
6) run koha qa test tools

Signed-off-by: Hector Castro <hector.hecaxmmx@gmail.com>
No warnings. Works as advertised

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
t/db_dependent/SuggestionEngine_ExplodedTerms.t [changed mode: 0755->0644]

old mode 100755 (executable)
new mode 100644 (file)
index 15b491e..68fae90
@@ -7,12 +7,45 @@ use File::Basename;
 use File::Spec;
 use Test::More;
 use Test::MockModule;
+use Test::Warn;
 
-BEGIN {
-        use_ok('Koha::SuggestionEngine');
+my $contextModule = new Test::MockModule('C4::Context');
+$contextModule->mock('preference', sub {
+    return '';
+});
+$contextModule->mock('config', sub {
+    my ($self,$key) = @_;
+    if ($key eq 'opachtdocs') {
+        return get_where() . '/koha-tmpl/opac-tmpl';
+    } elsif ($key eq 'intrahtdocs') {
+        return get_where() . '/koha-tmpl/intranet-tmpl';
+    } else {
+        return '';
+    }
+});
+
+use_ok('Koha::SuggestionEngine');
+
+sub get_where {
+    my $location = File::Spec->rel2abs(dirname(__FILE__));
+    if ($location =~ /db_dependent/) {
+        $location .= '/../..';
+    }
+    else {
+        $location .= '/..';
+    }
+    return $location;
 }
 
-my $langModule = new Test::MockModule('C4::Languages');
+my $langModule;
+if (! defined $ENV{KOHA_CONF}) {
+    warning_like { $langModule = new Test::MockModule('C4::Languages'); }
+        qr /unable to locate Koha configuration file koha-conf.xml/,
+        'Expected warning for unset $KOHA_CONF';
+}
+else {
+    $langModule = new Test::MockModule('C4::Languages');
+}
 $langModule->mock('regex_lang_subtags', sub {
     return {
         'extension' => undef,
@@ -53,20 +86,20 @@ $langModule->mock('getTranslatedLanguages', sub {
        }
    ];
 });
-my $tmplModule = new Test::MockModule('C4::Templates');
+my $tmplModule;
+if (! defined $ENV{KOHA_CONF}) {
+    warning_like { $tmplModule = new Test::MockModule('C4::Templates'); }
+        qr /unable to locate Koha configuration file koha-conf.xml/,
+        'Expected warning for unset $KOHA_CONF';
+}
+else {
+    $tmplModule = new Test::MockModule('C4::Templates');
+}
 $tmplModule->mock('_get_template_file', sub {
     my ($tmplbase, $interface, $query) = @_;
-    my $opactmpl = File::Spec->rel2abs(dirname(__FILE__) . '/../../koha-tmpl/opac-tmpl');
+    my $opactmpl = get_where() . '/koha-tmpl/opac-tmpl';
     return ($opactmpl, 'bootstrap', 'en', "$opactmpl/bootstrap/en/modules/$tmplbase");
 });
-my $contextModule = new Test::MockModule('C4::Context');
-$contextModule->mock('preference', sub {
-    return '';
-});
-$contextModule->mock('config', sub {
-    return '';
-});
-
 
 my $suggestor = Koha::SuggestionEngine->new( { plugins => [ 'ExplodedTerms' ] } );
 is(ref($suggestor), 'Koha::SuggestionEngine', 'Created suggestion engine');