Bugzilla – Attachment 18301 Details for
Bug 10298
t::lib::Mocks tries to deal with syspref but doesn not manage to
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 10298: Mock C4::Context->preference
Bug-10298-Mock-C4Context-preference.patch (text/plain), 3.66 KB, created by
Jonathan Druart
on 2013-05-22 09:07:46 UTC
(
hide
)
Description:
Bug 10298: Mock C4::Context->preference
Filename:
MIME Type:
Creator:
Jonathan Druart
Created:
2013-05-22 09:07:46 UTC
Size:
3.66 KB
patch
obsolete
>From cd550eac3a27098dc5093aa437727ef522fa353a Mon Sep 17 00:00:00 2001 >From: Jonathan Druart <jonathan.druart@biblibre.com> >Date: Tue, 21 May 2013 17:13:35 +0200 >Subject: [PATCH] Bug 10298: Mock C4::Context->preference > >t::lib::Mocks::Context tried to deal with preferences but did not manage >to. > >This patch removes this module and add 2 routines in t::lib::Mocks in >order to mock C4::context->preference and C4::Context->config. > >To test: > >===START t/test.pl=== > >use Modern::Perl; >use t::lib::Mocks; >use C4::Context; > >say "initial value for version: " . C4::Context->preference('Version'); >say "initial value for language: " . C4::Context->preference('language'); >t::lib::Mocks::mock_preference('Version', "new version for testing"); >say "version is mocked with: " . C4::Context->preference('Version'); >say "language is not yet mocked: " . C4::Context->preference('language'); >t::lib::Mocks::mock_preference('language', 'new langage for testing'); >t::lib::Mocks::mock_preference('Version', 'another version for testing'); >say "version is mocked with another value: " . C4::Context->preference('Version'); >say "language is finally mocked: " . C4::Context->preference('language'); >===END=== > >Try to execute this file and check that the output is consistent. >--- > t/lib/Mocks.pm | 46 +++++++++++++++++++++++++++++++--------------- > t/lib/Mocks/Context.pm | 13 ------------- > 2 files changed, 31 insertions(+), 28 deletions(-) > delete mode 100644 t/lib/Mocks/Context.pm > >diff --git a/t/lib/Mocks.pm b/t/lib/Mocks.pm >index 9e2d831..1497819 100644 >--- a/t/lib/Mocks.pm >+++ b/t/lib/Mocks.pm >@@ -1,23 +1,39 @@ > package t::lib::Mocks; > > use Modern::Perl; >+use C4::Context; > use Test::MockModule; >-use t::lib::Mocks::Context; > >-our (@ISA,@EXPORT,@EXPORT_OK); >-BEGIN { >- require Exporter; >- @ISA = qw(Exporter); >- push @EXPORT, qw( >- &set_solr >- &set_zebra >- ); >+my %configs; >+sub mock_config { >+ my $context = new Test::MockModule('C4::Context'); >+ my ( $conf, $value ) = @_; >+ $configs{$conf} = $value; >+ $context->mock('config', sub { >+ my ( $self, $conf ) = @_; >+ if ( grep /$conf/, keys %configs ) { >+ return $configs{$conf} >+ } else { >+ my $method = $context->original('config'); >+ return $method->($self, $conf); >+ } >+ }); > } > >-my $context = new Test::MockModule('C4::Context'); >-sub set_solr { >- $context->mock('preference', sub { &t::lib::Mocks::Context::MockPreference( @_, "Solr", $context ) }); >-} >-sub set_zebra { >- $context->mock('preference', sub { &t::lib::Mocks::Context::MockPreference( @_, "Zebra", $context ) }); >+my %preferences; >+sub mock_preference { >+ my $context = new Test::MockModule('C4::Context'); >+ my ( $pref, $value ) = @_; >+ $preferences{$pref} = $value; >+ $context->mock('preference', sub { >+ my ( $self, $pref ) = @_; >+ if ( grep /$pref/, keys %preferences ) { >+ return $preferences{$pref} >+ } else { >+ my $method = $context->original('preference'); >+ return $method->($self, $pref); >+ } >+ }); > } >+ >+1; >diff --git a/t/lib/Mocks/Context.pm b/t/lib/Mocks/Context.pm >deleted file mode 100644 >index 185209a..0000000 >--- a/t/lib/Mocks/Context.pm >+++ /dev/null >@@ -1,13 +0,0 @@ >-package t::lib::Mocks::Context; >-use t::lib::Mocks::Context; >-use C4::Context; >- >-sub MockPreference { >- my ( $self, $syspref, $value, $mock_object ) = @_; >- return $value if $syspref eq 'SearchEngine'; >- $mock_object->unmock("preference"); >- my $r = C4::Context->preference($syspref); >- $mock_object->mock('preference', sub { &t::lib::Mocks::Context::MockPreference( @_, $value, $mock_object ) }); >- return $r; >-} >-1; >-- >1.7.10.4
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 10298
:
18301
|
18302
|
18376
|
18504
|
19009
|
19010
|
19011
|
20206
|
20207
|
20232
|
20233
|
20234