Bugzilla – Attachment 137824 Details for
Bug 31069
Did you mean? in the OPAC - links have <span> tags
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 31069: Remove ExplodedTerms dependency on templates
Bug-31069-Remove-ExplodedTerms-dependency-on-templ.patch (text/plain), 9.91 KB, created by
Tomás Cohen Arazi (tcohen)
on 2022-07-18 15:39:02 UTC
(
hide
)
Description:
Bug 31069: Remove ExplodedTerms dependency on templates
Filename:
MIME Type:
Creator:
Tomás Cohen Arazi (tcohen)
Created:
2022-07-18 15:39:02 UTC
Size:
9.91 KB
patch
obsolete
>From ecd91d608914aa04660b3f83e9337effbed3822e Mon Sep 17 00:00:00 2001 >From: Tomas Cohen Arazi <tomascohen@theke.io> >Date: Mon, 18 Jul 2022 12:33:47 -0300 >Subject: [PATCH] Bug 31069: Remove ExplodedTerms dependency on templates > >This patch removes the use of templates and CGI in ExplodedTerms by using the >Koha::I18N library. > >The functionality on the package is too simple, and messing with the >template paths complexity on the tests was too much, given we have a >nice way to have translatable strings at the package level. > >This patch does that, and cleans up the test file as well, that required >complex template and CGI mocking to run properly. > >To test: >1. Run: > $ kshell > k$ prove t/db_dependent/SuggestionEngine_ExplodedTerms.t >=> FAIL: It fails in master >2. Apply this patch >3. Repeat 1 >=> SUCCESS: Tests pass >4. Follow the original test plan >=> SUCCESS: Things work >5. Enjoy the rest of the day and forget this ever happened > >Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io> >--- > Koha/SuggestionEngine/Plugin/ExplodedTerms.pm | 36 +++-- > .../en/modules/text/explodedterms.tt | 9 -- > .../SuggestionEngine_ExplodedTerms.t | 141 ++++-------------- > 3 files changed, 48 insertions(+), 138 deletions(-) > delete mode 100644 koha-tmpl/opac-tmpl/bootstrap/en/modules/text/explodedterms.tt > >diff --git a/Koha/SuggestionEngine/Plugin/ExplodedTerms.pm b/Koha/SuggestionEngine/Plugin/ExplodedTerms.pm >index 0c4656e77e..d4f29aec59 100644 >--- a/Koha/SuggestionEngine/Plugin/ExplodedTerms.pm >+++ b/Koha/SuggestionEngine/Plugin/ExplodedTerms.pm >@@ -32,10 +32,11 @@ subjects to subject searches. > =cut > > use Modern::Perl; >-use C4::Templates qw(gettemplate); # This is necessary for translatability > > use base qw(Koha::SuggestionEngine::Base); > >+use Koha::I18N qw(__); >+ > =head2 NAME > my $name = $plugin->NAME; > >@@ -64,8 +65,7 @@ terms to the search. > =cut > > sub get_suggestions { >- my $self = shift; >- my $param = shift; >+ my ( $self, $param ) = @_; > > my $search = $param->{'search'}; > >@@ -73,29 +73,27 @@ sub get_suggestions { > $search =~ s/(su|su-br|su-na|su-rl)[:=](\w*)/OP!$2/g; > return if ( $search =~ m/\w+[:=]\w+/ ); > >- my @indexes = ( >- 'su-na', >- 'su-br', >- 'su-rl' >- ); >- my $cgi = CGI->new; >- my $template = C4::Templates::gettemplate('text/explodedterms.tt', 'opac', $cgi); >+ my $indexes_to_label = { >+ 'su-na' => __('Search also for narrower subjects'), >+ 'su-br' => __('Search also for broader subjects'), >+ 'su-rl' => __('Search also for related subjects'), >+ }; >+ > my @results; >- foreach my $index (@indexes) { >+ foreach my $index ( keys %{$indexes_to_label} ) { > my $thissearch = $search; > $thissearch = "$index:$thissearch" > unless ( $thissearch =~ s/OP!/$index:/g ); >- $template->{VARS}->{index} = $index; >- my $label = $template->output; >- push @results, >- { >+ push @results, { > 'search' => $thissearch, > relevance => 100, >- # FIXME: it'd be nice to have some empirical measure of >- # "relevance" in this case, but we don't. >- label => $label >+ >+ # FIXME: it'd be nice to have some empirical measure of >+ # "relevance" in this case, but we don't. >+ label => $indexes_to_label->{$index} > }; >- } return \@results; >+ } >+ return \@results; > } > > 1; >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/text/explodedterms.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/text/explodedterms.tt >deleted file mode 100644 >index 356688367e..0000000000 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/text/explodedterms.tt >+++ /dev/null >@@ -1,9 +0,0 @@ >-[% PROCESS 'i18n.inc' %] >-[%- SWITCH index -%] >-[%- CASE 'su-na' -%] >-[% t('Search also for narrower subjects') | html %] >-[%- CASE 'su-br' -%] >-[% t('Search also for broader subjects') | html %] >-[%- CASE 'su-rl' -%] >-[% t('Search also for related subjects') | html %] >-[%- END -%] >diff --git a/t/db_dependent/SuggestionEngine_ExplodedTerms.t b/t/db_dependent/SuggestionEngine_ExplodedTerms.t >index 65308fc086..4e310b6a9d 100755 >--- a/t/db_dependent/SuggestionEngine_ExplodedTerms.t >+++ b/t/db_dependent/SuggestionEngine_ExplodedTerms.t >@@ -1,124 +1,45 @@ > #!/usr/bin/perl > >-use strict; >-use warnings; >+# This file is part of Koha >+# >+# Koha is free software; you can redistribute it and/or modify it >+# under the terms of the GNU General Public License as published by >+# the Free Software Foundation; either version 3 of the License, or >+# (at your option) any later version. >+# >+# Koha is distributed in the hope that it will be useful, but >+# WITHOUT ANY WARRANTY; without even the implied warranty of >+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >+# GNU General Public License for more details. >+# >+# You should have received a copy of the GNU General Public License >+# along with Koha; if not, see <http://www.gnu.org/licenses>. > >-use Cwd qw/abs_path/; >-use File::Basename; >-use File::Spec; >-use Test::More; >-use Test::MockModule; >-use Test::Warn; >+use Modern::Perl; > >-my $contextModule = Test::MockModule->new('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 Test::More tests => 5; > >-use_ok('Koha::SuggestionEngine'); >+use Koha::SuggestionEngine; > >-sub get_where { >- my $location = File::Spec->rel2abs(dirname(__FILE__)); >- if ($location =~ /db_dependent/) { >- $location .= '/../..'; >- } >- else { >- $location .= '/..'; >- } >- return abs_path($location); >-} >+my $suggestor = Koha::SuggestionEngine->new( { plugins => ['ExplodedTerms'] } ); >+is( ref($suggestor), 'Koha::SuggestionEngine', 'Created suggestion engine' ); > >-my $langModule; >-if (! defined $ENV{KOHA_CONF}) { >- warning_like { $langModule = Test::MockModule->new('C4::Languages'); } >- qr /unable to locate Koha configuration file koha-conf.xml/, >- 'Expected warning for unset $KOHA_CONF'; >-} >-else { >- $langModule = Test::MockModule->new('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; >-if (! defined $ENV{KOHA_CONF}) { >- warning_like { $tmplModule = Test::MockModule->new('C4::Templates'); } >- qr /unable to locate Koha configuration file koha-conf.xml/, >- 'Expected warning for unset $KOHA_CONF'; >-} >-else { >- $tmplModule = Test::MockModule->new('C4::Templates'); >-} >-$tmplModule->mock('_get_template_file', sub { >- my ($tmplbase, $interface, $query) = @_; >- my $opactmpl = get_where() . '/koha-tmpl/opac-tmpl'; >- return ($opactmpl, 'bootstrap', 'en', "$opactmpl/bootstrap/en/modules/$tmplbase"); >-}); >+my $result = $suggestor->get_suggestions( { search => 'Cookery' } ); > >-my $suggestor = Koha::SuggestionEngine->new( { plugins => [ 'ExplodedTerms' ] } ); >-is(ref($suggestor), 'Koha::SuggestionEngine', 'Created suggestion engine'); >+ok( ( grep { $_->{'search'} eq 'su-na:Cookery' } @$result ) && ( grep { $_->{'search'} eq 'su-br:Cookery' } @$result ) && ( grep { $_->{'search'} eq 'su-rl:Cookery' } @$result ), >+ "Suggested correct alternatives for keyword search 'Cookery'" >+); > >-my $result = $suggestor->get_suggestions({search => 'Cookery'}); >+$result = $suggestor->get_suggestions( { search => 'su:Cookery' } ); > >-ok((grep { $_->{'search'} eq 'su-na:Cookery' } @$result) && (grep { $_->{'search'} eq 'su-br:Cookery' } @$result) && (grep { $_->{'search'} eq 'su-rl:Cookery' } @$result), "Suggested correct alternatives for keyword search 'Cookery'"); >+ok( ( grep { $_->{'search'} eq 'su-na:Cookery' } @$result ) && ( grep { $_->{'search'} eq 'su-br:Cookery' } @$result ) && ( grep { $_->{'search'} eq 'su-rl:Cookery' } @$result ), >+ "Suggested correct alternatives for subject search 'Cookery'" >+); > >-$result = $suggestor->get_suggestions({search => 'su:Cookery'}); >+$result = $suggestor->get_suggestions( { search => 'nt:Cookery' } ); > >-ok((grep { $_->{'search'} eq 'su-na:Cookery' } @$result) && (grep { $_->{'search'} eq 'su-br:Cookery' } @$result) && (grep { $_->{'search'} eq 'su-rl:Cookery' } @$result), "Suggested correct alternatives for subject search 'Cookery'"); >+is( scalar @$result, 0, "No suggestions for fielded search" ); > >-$result = $suggestor->get_suggestions({search => 'nt:Cookery'}); >+$result = $suggestor->get_suggestions( { search => 'ccl=su:Cookery' } ); > >-is(scalar @$result, 0, "No suggestions for fielded search"); >- >-$result = $suggestor->get_suggestions({search => 'ccl=su:Cookery'}); >- >-is(scalar @$result, 0, "No suggestions for CCL search"); >- >-done_testing(); >+is( scalar @$result, 0, "No suggestions for CCL search" ); >-- >2.34.1
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 31069
:
136756
|
137444
|
137446
|
137698
| 137824