Bug 8846: Exploded Terms test sneakily uses database
authorJared Camins-Esakov <jcamins@cpbibliography.com>
Sat, 29 Sep 2012 13:28:43 +0000 (09:28 -0400)
committerJared Camins-Esakov <jcamins@cpbibliography.com>
Thu, 1 Nov 2012 12:41:29 +0000 (08:41 -0400)
Even though there is no need for anything stored in the database for the
test, C4::Templates requires the database and a koha-conf.xml. The
solution is to mock all database- and koha-conf-using routines.

To test:
1) Stop MySQL
2) Unset KOHA_CONF
3) Run test

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Jared Camins-Esakov <jcamins@cpbibliography.com>
t/db_dependent/SuggestionEngine_ExplodedTerms.t

index 52683b2..8726e74 100755 (executable)
@@ -3,12 +3,71 @@
 use strict;
 use warnings;
 
+use File::Basename;
+use File::Spec;
 use Test::More;
+use Test::MockModule;
 
 BEGIN {
         use_ok('Koha::SuggestionEngine');
 }
 
+my $langModule = new Test::MockModule('C4::Languages');
+$langModule->mock('regex_lang_subtags', sub {
+    return {
+        'extension' => undef,
+        'script' => undef,
+        'privateuse' => undef,
+        'variant' => undef,
+        'language' => 'en',
+        'region' => undef,
+        'rfc4646_subtag' => 'en'
+    };
+});
+$langModule->mock('getTranslatedLanguages', sub {
+   return [
+       {
+           'sublanguages_loop' => [
+           {
+               'script' => undef,
+               'extension' => undef,
+               'language' => 'en',
+               'region' => undef,
+               'region_description' => undef,
+               'sublanguage_current' => 1,
+               'privateuse' => undef,
+               'variant' => undef,
+               'variant_description' => undef,
+               'script_description' => undef,
+               'rfc4646_subtag' => 'en',
+               'native_description' => 'English',
+               'enabled' => 1
+           },
+           ],
+           'plural' => 1,
+           'language' => 'en',
+           'current' => 1,
+           'native_description' => 'English',
+           'rfc4646_subtag' => 'en',
+           'group_enabled' => 1
+       }
+   ];
+});
+my $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');
+    return ($opactmpl, 'prog', 'en', "$opactmpl/prog/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');