Bug 14097: Testing C4::UsageStats
authorJulian FIOL <julian.fiol@biblibre.com>
Fri, 10 Apr 2015 09:07:39 +0000 (11:07 +0200)
committerBrendan Gallagher <brendan@bywatersolutions.com>
Wed, 24 Feb 2016 03:04:35 +0000 (03:04 +0000)
DESCRIPTION
-----------

Add unit tests to C4::UsageStats
Subroutine :
(V : tested, X : Not tested)

V  NeedUpdate
V  BuiltReport
X  ReportToCommunity
V  _count

TEST PLAN
---------

1. Apply patch
2. prove -v t/db_dependent/UsageStats.t
-- All tests should run successfully

/!\ I have 1 warning but I don't know where it can come /!\
(in cleanup) DBIx::Class::Storage::txn_rollback(): A txn_rollback
in nested transaction is ineffective! (depth 1) at
t/lib/TestBuilder.pm line 308

TEST PLAN OPTIONAL
------------------

Go check bug 13899 to see the coverage of this module.

Coverage BEFORE this patch :
Statement  :  40,5%
Branch     :   0,0%
Condition  :   0,0%
Subroutine :  55,6%

Coverage AFTER this patch :
Statement  :  81,0%
Branch     : 100,0%
Condition  : 100,0%
Subroutine :  88,8%

Signed-off-by: Bernardo Gonzalez Kriegel <bgkriegel@gmail.com>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Brendan Gallagher brendan@bywatersolutions.com
C4/UsageStats.pm
t/db_dependent/UsageStats.t [new file with mode: 0644]

index 940daff..47f9827 100644 (file)
@@ -58,11 +58,11 @@ sub NeedUpdate {
 sub BuildReport {
     my $report = {
         library => {
-            id   => C4::Context->preference('UsageStatsID')          || 0,
-            name => C4::Context->preference('UsageStatsLibraryName') || q||,
-            url => C4::Context->preference('UsageStatsLibraryUrl')   || q||,
-            type => C4::Context->preference('UsageStatsLibraryType') || q||,
-            country => C4::Context->preference('UsageStatsCountry') || q||,
+            id      => C4::Context->preference('UsageStatsID')          || 0,
+            name    => C4::Context->preference('UsageStatsLibraryName') || q||,
+            url     => C4::Context->preference('UsageStatsLibraryUrl')  || q||,
+            type    => C4::Context->preference('UsageStatsLibraryType') || q||,
+            country => C4::Context->preference('UsageStatsCountry')     || q||,
         },
     };
 
diff --git a/t/db_dependent/UsageStats.t b/t/db_dependent/UsageStats.t
new file mode 100644 (file)
index 0000000..e8054d3
--- /dev/null
@@ -0,0 +1,851 @@
+# Copyright 2015 BibLibre
+#
+# 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 Modern::Perl;
+use Test::More tests => 552;
+use t::lib::Mocks qw(mock_preference);
+use POSIX qw(strftime);
+use Data::Dumper;
+
+BEGIN {
+    use_ok('C4::UsageStats');
+    use_ok('C4::Context');
+    use_ok('C4::Biblio');
+    use_ok( 'C4::AuthoritiesMarc', qw(AddAuthority) );
+    use_ok('C4::Reserves');
+    use_ok('MARC::Record');
+    use_ok('Koha::Acquisition::Order');
+    use_ok('t::lib::TestBuilder');
+}
+
+can_ok(
+    'C4::UsageStats', qw(
+      NeedUpdate
+      BuildReport
+      ReportToCommunity
+      _count )
+);
+
+my $dbh = C4::Context->dbh;
+$dbh->{AutoCommit} = 0;
+$dbh->{RaiseError} = 1;
+$dbh->do('DELETE FROM biblio');
+$dbh->do('DELETE FROM items');
+$dbh->do('DELETE FROM auth_header');
+$dbh->do('DELETE FROM old_issues');
+$dbh->do('DELETE FROM old_reserves');
+$dbh->do('DELETE FROM borrowers');
+$dbh->do('DELETE FROM aqorders');
+$dbh->do('DELETE FROM subscription');
+
+#################################################
+#             Testing Subs
+#################################################
+
+# ---------- Testing NeedUpdate -----------------
+
+#Mocking C4::Context->preference("UsageStatsLastUpdateTime") to 0
+my $now = strftime( "%s", localtime );
+t::lib::Mocks::mock_preference( "UsageStatsLastUpdateTime", 0 );
+
+my $update = C4::UsageStats->NeedUpdate;
+is( $update, 1, "There is no last update, update needed" );
+
+#Mocking C4::Context->preference("UsageStatsLastUpdateTime") to now
+$now = strftime( "%s", localtime );
+t::lib::Mocks::mock_preference( "UsageStatsLastUpdateTime", $now );
+
+$update = C4::UsageStats->NeedUpdate;
+is( $update, 0, "Last update just be done, no update needed " );
+
+# ---------- Testing BuildReport ----------------
+
+#Test report->library -----------------
+#mock to 0
+t::lib::Mocks::mock_preference( "UsageStatsID",          0 );
+t::lib::Mocks::mock_preference( "UsageStatsLibraryName", 0 );
+t::lib::Mocks::mock_preference( "UsageStatsLibraryUrl",  0 );
+t::lib::Mocks::mock_preference( "UsageStatsLibraryType", 0 );
+t::lib::Mocks::mock_preference( "UsageStatsCountry",     0 );
+
+my $report = C4::UsageStats->BuildReport();
+
+isa_ok( $report,            'HASH', '$report is a HASH' );
+isa_ok( $report->{library}, 'HASH', '$report->{library} is a HASH' );
+is( scalar( keys( $report->{library} ) ), 5,  "There are 5 fields in $report->{library}" );
+is( $report->{library}->{id},             0,  "UsageStatsID           is good" );
+is( $report->{library}->{name},           '', "UsageStatsLibraryName  is good" );
+is( $report->{library}->{url},            '', "UsageStatsLibraryUrl   is good" );
+is( $report->{library}->{type},           '', "UsageStatsLibraryType  is good" );
+is( $report->{library}->{country},        '', "UsageStatsCountry      is good" );
+
+#mock with values
+t::lib::Mocks::mock_preference( "UsageStatsID",          1 );
+t::lib::Mocks::mock_preference( "UsageStatsLibraryName", 'NAME' );
+t::lib::Mocks::mock_preference( "UsageStatsLibraryUrl",  'URL' );
+t::lib::Mocks::mock_preference( "UsageStatsLibraryType", 'TYPE' );
+t::lib::Mocks::mock_preference( "UsageStatsCountry",     'COUNTRY' );
+
+$report = C4::UsageStats->BuildReport();
+
+isa_ok( $report,            'HASH', '$report is a HASH' );
+isa_ok( $report->{library}, 'HASH', '$report->{library} is a HASH' );
+is( scalar( keys( $report->{library} ) ), 5,         "There are 5 fields in $report->{library}" );
+is( $report->{library}->{id},             1,         "UsageStatsID            is good" );
+is( $report->{library}->{name},           'NAME',    "UsageStatsLibraryName   is good" );
+is( $report->{library}->{url},            'URL',     "UsageStatsLibraryUrl    is good" );
+is( $report->{library}->{type},           'TYPE',    "UsageStatsLibraryType   is good" );
+is( $report->{library}->{country},        'COUNTRY', "UsageStatsCountry       is good" );
+
+#Test report->volumetry ---------------
+#without objects
+$report = C4::UsageStats->BuildReport();
+
+isa_ok( $report,              'HASH', '$report is a HASH' );
+isa_ok( $report->{volumetry}, 'HASH', '$report->{volumetry} is a HASH' );
+is( scalar( keys( $report->{volumetry} ) ), 8, "There are 8 fields in $report->{volumetry}" );
+is( $report->{volumetry}->{biblio},         0, "There is no biblio" );
+is( $report->{volumetry}->{items},          0, "There is no items" );
+is( $report->{volumetry}->{auth_header},    0, "There is no auth_header" );
+is( $report->{volumetry}->{old_issues},     0, "There is no old_issues" );
+is( $report->{volumetry}->{old_reserves},   0, "There is no old_reserves" );
+is( $report->{volumetry}->{borrowers},      0, "There is no borrowers" );
+is( $report->{volumetry}->{aqorders},       0, "There is no aqorders" );
+is( $report->{volumetry}->{subscription},   0, "There is no subscription" );
+
+construct_objects_needed();
+
+#with objects
+$report = C4::UsageStats->BuildReport();
+
+isa_ok( $report,              'HASH', '$report is a HASH' );
+isa_ok( $report->{volumetry}, 'HASH', '$report->{volumetry} is a HASH' );
+is( scalar( keys( $report->{volumetry} ) ), 8, "There are 8 fields in $report->{volumetry}" );
+is( $report->{volumetry}->{biblio},         4, "There are 4 biblio" );
+is( $report->{volumetry}->{items},          3, "There are 3 items" );
+is( $report->{volumetry}->{auth_header},    2, "There are 2 auth_header" );
+is( $report->{volumetry}->{old_issues},     1, "There is 1 old_issues" );
+is( $report->{volumetry}->{old_reserves},   1, "There is 1 old_reserves" );
+is( $report->{volumetry}->{borrowers},      3, "There are 3 borrowers" );
+is( $report->{volumetry}->{aqorders},       1, "There is 1 aqorders" );
+is( $report->{volumetry}->{subscription},   1, "There is 1 subscription" );
+
+#Test report->systempreferences -------
+#mock to 0
+mocking_systempreferences_to_a_set_value(0);
+
+$report = C4::UsageStats->BuildReport();
+isa_ok( $report,                      'HASH', '$report is a HASH' );
+isa_ok( $report->{systempreferences}, 'HASH', '$report->{systempreferences} is a HASH' );
+is( scalar( keys( $report->{systempreferences} ) ), 248, "There are 248 fields in $report->{systempreferences}" );
+verif_systempreferences_values(0);
+
+#mock with values
+mocking_systempreferences_to_a_set_value(1);
+
+$report = C4::UsageStats->BuildReport();
+isa_ok( $report,                      'HASH', '$report is a HASH' );
+isa_ok( $report->{systempreferences}, 'HASH', '$report->{systempreferences} is a HASH' );
+is( scalar( keys( $report->{systempreferences} ) ), 248, "There are 248 fields in $report->{systempreferences}" );
+verif_systempreferences_values(1);
+
+# ---------- Testing ReportToCommunity ----------
+
+# ---------- Testing _count ---------------------
+
+$dbh->do('DROP TABLE IF EXISTS _exmpl_tbl');
+$dbh->do('CREATE TABLE _exmpl_tbl (id INT, val VARCHAR(10))');
+$dbh->do( 'INSERT INTO _exmpl_tbl VALUES(1, ?)', undef, 'Hello' );
+$dbh->do( 'INSERT INTO _exmpl_tbl VALUES(2, ?)', undef, 'World' );
+
+my $query = '
+  SELECT count(*)
+  FROM   _exmpl_tbl
+  ';
+my $count = $dbh->selectrow_array($query);
+
+my $nb_fields = C4::UsageStats::_count('_exmpl_tbl');
+is( $nb_fields, $count, "_exmpl_tbl has 2 fields" );
+
+#################################################
+#             Subs
+#################################################
+
+# Adding :
+# 3 borrowers
+# 4 biblio
+# 3 biblio items
+# 3 items
+# 2 auth_header
+# 1 old_issues
+# 1 old_reserves
+# 1 subscription
+# 1 aqorders
+sub construct_objects_needed {
+
+    # ---------- 3 borrowers  ---------------------
+    my $surname1     = 'Borrower 1';
+    my $surname2     = 'Borrower 2';
+    my $surname3     = 'Borrower 3';
+    my $firstname1   = 'firstname 1';
+    my $firstname2   = 'firstname 2';
+    my $firstname3   = 'firstname 3';
+    my $cardnumber1  = '00001';
+    my $cardnumber2  = '00002';
+    my $cardnumber3  = '00003';
+    my $categorycode = Koha::Database->new()->schema()->resultset('Category')->first()->categorycode();
+    my $branchcode   = Koha::Database->new()->schema()->resultset('Branch')->first()->branchcode();
+
+    my $query = '
+   INSERT INTO borrowers
+      (surname, firstname, cardnumber, branchcode, categorycode)
+    VALUES (?,?,?,?,?)';
+    my $insert_sth = $dbh->prepare($query);
+    $insert_sth->execute( $surname1, $firstname1, $cardnumber1, $branchcode, $categorycode );
+    $insert_sth->execute( $surname2, $firstname2, $cardnumber2, $branchcode, $categorycode );
+    $insert_sth->execute( $surname3, $firstname3, $cardnumber3, $branchcode, $categorycode );
+
+    $query = '
+    SELECT borrowernumber
+    FROM   borrowers
+    WHERE  surname = ?';
+    my $borrowernumber1 = $dbh->selectrow_array( $query, {}, $surname1 );
+    my $borrowernumber2 = $dbh->selectrow_array( $query, {}, $surname2 );
+    my $borrowernumber3 = $dbh->selectrow_array( $query, {}, $surname3 );
+
+    # ---------- 3 biblios -----------------------
+    my $title1  = 'Title 1';
+    my $title2  = 'Title 2';
+    my $title3  = 'Title 3';
+    my $author1 = 'Author 1';
+    my $author2 = 'Author 2';
+    my $author3 = 'Author 3';
+
+    $query = '
+    INSERT INTO biblio
+      (title, author)
+    VALUES (?,?)';
+    $insert_sth = $dbh->prepare($query);
+    $insert_sth->execute( $title1, $author1 );
+    my $biblionumber1 = $dbh->last_insert_id( undef, undef, 'biblio', undef );
+    $insert_sth->execute( $title2, undef );
+    my $biblionumber2 = $dbh->last_insert_id( undef, undef, 'biblio', undef );
+    $insert_sth->execute( $title3, $author3 );
+    my $biblionumber3 = $dbh->last_insert_id( undef, undef, 'biblio', undef );
+
+    # ---------- 3 biblio items  -------------------------
+    $query = '
+    INSERT INTO biblioitems
+      (biblionumber, itemtype, marcxml)
+    VALUES (?,?,?)';
+    $insert_sth = $dbh->prepare($query);
+    $insert_sth->execute( $biblionumber1, 'Book',  '' );
+    $insert_sth->execute( $biblionumber2, 'Music', '' );
+    $insert_sth->execute( $biblionumber3, 'Book',  '' );
+
+    $query = '
+    SELECT biblioitemnumber
+    FROM   biblioitems
+    WHERE  biblionumber = ?';
+    my $biblioitemnumber1 = $dbh->selectrow_array( $query, {}, $biblionumber1 );
+    my $biblioitemnumber2 = $dbh->selectrow_array( $query, {}, $biblionumber2 );
+    my $biblioitemnumber3 = $dbh->selectrow_array( $query, {}, $biblionumber3 );
+
+    # ---------- 3 items  -------------------------
+    my $barcode1 = '111111';
+    my $barcode2 = '222222';
+    my $barcode3 = '333333';
+
+    $query = '
+    INSERT INTO items
+      (biblionumber, biblioitemnumber, barcode, itype)
+    VALUES (?,?,?,?)';
+    $insert_sth = $dbh->prepare($query);
+    $insert_sth->execute( $biblionumber1, $biblioitemnumber1, $barcode1, 'Book' );
+    $insert_sth->execute( $biblionumber2, $biblioitemnumber2, $barcode2, 'Music' );
+    $insert_sth->execute( $biblionumber3, $biblioitemnumber3, $barcode3, 'Book' );
+
+    $query = '
+    SELECT itemnumber
+    FROM   items
+    WHERE  barcode = ?';
+    my $item_number1 = $dbh->selectrow_array( $query, {}, $barcode1 );
+    my $item_number2 = $dbh->selectrow_array( $query, {}, $barcode2 );
+    my $item_number3 = $dbh->selectrow_array( $query, {}, $barcode3 );
+
+    # ---------- Add 2 auth_header
+    $query = '
+    INSERT INTO auth_header
+      (authtypecode)
+    VALUES (?)';
+    $insert_sth = $dbh->prepare($query);
+    $insert_sth->execute('authtypecode1');
+    $insert_sth->execute('authtypecode2');
+
+    $query = '
+    SELECT authid
+    FROM   auth_header
+    WHERE  authtypecode = ?';
+    my $authid1 = $dbh->selectrow_array( $query, {}, 'authtypecode1' );
+    my $authid2 = $dbh->selectrow_array( $query, {}, 'authtypecode2' );
+
+    # ---------- Add 1 old_issues
+    $query = '
+    INSERT INTO old_issues
+      (borrowernumber, branchcode, itemnumber)
+    VALUES (?,?,?)';
+    $insert_sth = $dbh->prepare($query);
+    $insert_sth->execute( $borrowernumber1, $branchcode, $item_number1 );
+
+    $query = '
+    SELECT issue_id
+    FROM   old_issues
+    WHERE  borrowernumber = ?';
+    my $issue_id1 = $dbh->selectrow_array( $query, {}, $borrowernumber1 );
+
+    # ---------- Add 1 old_reserves
+    AddReserve( $branchcode, $borrowernumber1, $biblionumber1, 'a', '', 1, undef, undef, '', 'Title', undef, undef );
+    my $reserves1   = GetReservesFromBiblionumber( { biblionumber => $biblionumber1 } );
+    my $reserve_id1 = $reserves1->[0]->{reserve_id};
+    my $reserve1    = CancelReserve( { reserve_id => $reserve_id1 } );
+
+    # ---------- Add 1 biblio, 1 subscription and 1 aqorder
+    my $builder = t::lib::TestBuilder->new();
+    $builder->clear( { source => 'Aqorder' } );
+    my $order1 = $builder->build(
+        {   source  => 'Aqorder',
+            value   => { datecancellationprinted => undef, },
+            only_fk => 1,
+        }
+    );
+    my $newordernumber = Koha::Acquisition::Order->new($order1)->insert->{ordernumber};
+}
+
+#Change systempreferences values to $set_value
+sub mocking_systempreferences_to_a_set_value {
+    my $set_value = shift;
+
+    foreach (
+        qw/
+        AcqCreateItem
+        AcqWarnOnDuplicateInvoice
+        AcqViewBaskets
+        BasketConfirmations
+        OrderPdfFormat
+        casAuthentication
+        casLogout
+        AllowPkiAuth
+        DebugLevel
+        delimiter
+        noItemTypeImages
+        virtualshelves
+        AutoLocation
+        IndependentBranches
+        SessionStorage
+        Persona
+        AuthDisplayHierarchy
+        AutoCreateAuthorities
+        BiblioAddsAuthorities
+        dontmerge
+        UseAuthoritiesForTracings
+        CatalogModuleRelink
+        hide_marc
+        IntranetBiblioDefaultView
+        LabelMARCView
+        OpacSuppression
+        SeparateHoldings
+        UseControlNumber
+        advancedMARCeditor
+        DefaultClassificationSource
+        EasyAnalyticalRecords
+        autoBarcode
+        item-level_itypes
+        marcflavour
+        PrefillItem
+        z3950NormalizeAuthor
+        SpineLabelAutoPrint
+        SpineLabelShowPrintOnBibDetails
+        BlockReturnOfWithdrawnItems
+        CalculateFinesOnReturn
+        AgeRestrictionOverride
+        AllFinesNeedOverride
+        AllowFineOverride
+        AllowItemsOnHoldCheckout
+        AllowNotForLoanOverride
+        AllowRenewalLimitOverride
+        AllowReturnToBranch
+        AllowTooManyOverride
+        AutomaticItemReturn
+        AutoRemoveOverduesRestrictions
+        CircControl
+        HomeOrHoldingBranch
+        HomeOrHoldingBranchReturn
+        InProcessingToShelvingCart
+        IssueLostItem
+        IssuingInProcess
+        ManInvInNoissuesCharge
+        OverduesBlockCirc
+        RenewalPeriodBase
+        RenewalSendNotice
+        RentalsInNoissuesCharge
+        ReturnBeforeExpiry
+        ReturnToShelvingCart
+        TransfersMaxDaysWarning
+        UseBranchTransferLimits
+        useDaysMode
+        UseTransportCostMatrix
+        UseCourseReserves
+        finesCalendar
+        FinesIncludeGracePeriod
+        finesMode
+        RefundLostItemFeeOnReturn
+        WhenLostChargeReplacementFee
+        WhenLostForgiveFine
+        AllowHoldDateInFuture
+        AllowHoldPolicyOverride
+        AllowHoldsOnDamagedItems
+        AllowHoldsOnPatronsPossessions
+        AutoResumeSuspendedHolds
+        canreservefromotherbranches
+        decreaseLoanHighHolds
+        DisplayMultiPlaceHold
+        emailLibrarianWhenHoldIsPlaced
+        ExpireReservesMaxPickUpDelay
+        OPACAllowHoldDateInFuture
+        OPACAllowUserToChooseBranch
+        ReservesControlBranch
+        ReservesNeedReturns
+        SuspendHoldsIntranet
+        SuspendHoldsOpac
+        TransferWhenCancelAllWaitingHolds
+        AllowAllMessageDeletion
+        AllowOfflineCirculation
+        CircAutocompl
+        CircAutoPrintQuickSlip
+        DisplayClearScreenButton
+        FilterBeforeOverdueReport
+        FineNotifyAtCheckin
+        itemBarcodeFallbackSearch
+        itemBarcodeInputFilter
+        previousIssuesDefaultSortOrder
+        RecordLocalUseOnReturn
+        soundon
+        SpecifyDueDate
+        todaysIssuesDefaultSortOrder
+        UpdateTotalIssuesOnCirc
+        UseTablesortForCirc
+        WaitingNotifyAtCheckin
+        AllowSelfCheckReturns
+        AutoSelfCheckAllowed
+        FRBRizeEditions
+        OPACFRBRizeEditions
+        AmazonCoverImages
+        OPACAmazonCoverImages
+        Babeltheque
+        BakerTaylorEnabled
+        GoogleJackets
+        HTML5MediaEnabled
+        IDreamBooksReadometer
+        IDreamBooksResults
+        IDreamBooksReviews
+        LibraryThingForLibrariesEnabled
+        LocalCoverImages
+        OPACLocalCoverImages
+        NovelistSelectEnabled
+        XISBN
+        OpenLibraryCovers
+        UseKohaPlugins
+        SyndeticsEnabled
+        TagsEnabled
+        CalendarFirstDayOfWeek
+        opaclanguagesdisplay
+        AuthoritiesLog
+        BorrowersLog
+        CataloguingLog
+        FinesLog
+        IssueLog
+        LetterLog
+        ReturnLog
+        SubscriptionLog
+        AuthorisedValueImages
+        BiblioDefaultView
+        COinSinOPACResults
+        DisplayOPACiconsXSLT
+        hidelostitems
+        HighlightOwnItemsOnOPAC
+        OpacAddMastheadLibraryPulldown
+        OPACDisplay856uAsImage
+        OpacHighlightedWords
+        OpacKohaUrl
+        OpacMaintenance
+        OpacPublic
+        OpacSeparateHoldings
+        OPACShowBarcode
+        OPACShowCheckoutName
+        OpacShowFiltersPulldownMobile
+        OPACShowHoldQueueDetails
+        OpacShowLibrariesPulldownMobile
+        OpacShowRecentComments
+        OPACShowUnusedAuthorities
+        OpacStarRatings
+        opacthemes
+        OPACURLOpenInNewWindow
+        OpacAuthorities
+        opacbookbag
+        OpacBrowser
+        OpacBrowseResults
+        OpacCloud
+        OPACFinesTab
+        OpacHoldNotes
+        OpacItemLocation
+        OpacPasswordChange
+        OPACPatronDetails
+        OPACpatronimages
+        OPACPopupAuthorsSearch
+        OpacTopissue
+        opacuserlogin
+        QuoteOfTheDay
+        RequestOnOpac
+        reviewson
+        ShowReviewer
+        ShowReviewerPhoto
+        SocialNetworks
+        suggestion
+        AllowPurchaseSuggestionBranchChoice
+        OpacAllowPublicListCreation
+        OpacAllowSharingPrivateLists
+        OpacRenewalAllowed
+        OpacRenewalBranch
+        OPACViewOthersSuggestions
+        SearchMyLibraryFirst
+        singleBranchMode
+        AnonSuggestions
+        EnableOpacSearchHistory
+        OPACPrivacy
+        opacreadinghistory
+        TrackClicks
+        PatronSelfRegistration
+        OPACShelfBrowser
+        AutoEmailOpacUser
+        AutoEmailPrimaryAddress
+        autoMemberNum
+        BorrowerRenewalPeriodBase
+        checkdigit
+        EnableBorrowerFiles
+        EnhancedMessagingPreferences
+        ExtendedPatronAttributes
+        intranetreadinghistory
+        memberofinstitution
+        patronimages
+        TalkingTechItivaPhoneNotification
+        uppercasesurnames
+        IncludeSeeFromInSearches
+        OpacGroupResults
+        QueryAutoTruncate
+        QueryFuzzy
+        QueryStemming
+        QueryWeightFields
+        TraceCompleteSubfields
+        TraceSubjectSubdivisions
+        UseICU
+        UseQueryParser
+        defaultSortField
+        displayFacetCount
+        OPACdefaultSortField
+        OPACItemsResultsDisplay
+        expandedSearchOption
+        IntranetNumbersPreferPhrase
+        OPACNumbersPreferPhrase
+        opacSerialDefaultTab
+        RenewSerialAddsSuggestion
+        RoutingListAddReserves
+        RoutingSerials
+        SubscriptionHistory
+        Display856uAsImage
+        DisplayIconsXSLT
+        StaffAuthorisedValueImages
+        template
+        yuipath
+        HidePatronName
+        intranetbookbag
+        StaffDetailItemSelection
+        viewISBD
+        viewLabeledMARC
+        viewMARC
+        ILS-DI
+        OAI-PMH
+        version
+        /
+      ) {
+        t::lib::Mocks::mock_preference( $_, $set_value );
+    }
+}
+
+#Test if all systempreferences are at $value_to_test
+sub verif_systempreferences_values {
+    my $value_to_test = shift;
+
+    is( $report->{systempreferences}->{AcqCreateItem},                       $value_to_test, "AcqCreateItem                      = $value_to_test" );
+    is( $report->{systempreferences}->{AcqWarnOnDuplicateInvoice},           $value_to_test, "AcqWarnOnDuplicateInvoice          = $value_to_test" );
+    is( $report->{systempreferences}->{AcqViewBaskets},                      $value_to_test, "AcqViewBaskets                     = $value_to_test" );
+    is( $report->{systempreferences}->{BasketConfirmations},                 $value_to_test, "BasketConfirmations                = $value_to_test" );
+    is( $report->{systempreferences}->{OrderPdfFormat},                      $value_to_test, "OrderPdfFormat                     = $value_to_test" );
+    is( $report->{systempreferences}->{casAuthentication},                   $value_to_test, "casAuthentication                  = $value_to_test" );
+    is( $report->{systempreferences}->{casLogout},                           $value_to_test, "casLogout                          = $value_to_test" );
+    is( $report->{systempreferences}->{AllowPkiAuth},                        $value_to_test, "AllowPkiAuth                       = $value_to_test" );
+    is( $report->{systempreferences}->{DebugLevel},                          $value_to_test, "DebugLevel                         = $value_to_test" );
+    is( $report->{systempreferences}->{delimiter},                           $value_to_test, "delimiter                          = $value_to_test" );
+    is( $report->{systempreferences}->{noItemTypeImages},                    $value_to_test, "noItemTypeImages                   = $value_to_test" );
+    is( $report->{systempreferences}->{virtualshelves},                      $value_to_test, "virtualshelves                     = $value_to_test" );
+    is( $report->{systempreferences}->{AutoLocation},                        $value_to_test, "AutoLocation                       = $value_to_test" );
+    is( $report->{systempreferences}->{IndependentBranches},                 $value_to_test, "IndependentBranches                = $value_to_test" );
+    is( $report->{systempreferences}->{SessionStorage},                      $value_to_test, "SessionStorage                     = $value_to_test" );
+    is( $report->{systempreferences}->{Persona},                             $value_to_test, "Persona                            = $value_to_test" );
+    is( $report->{systempreferences}->{AuthDisplayHierarchy},                $value_to_test, "AuthDisplayHierarchy               = $value_to_test" );
+    is( $report->{systempreferences}->{AutoCreateAuthorities},               $value_to_test, "AutoCreateAuthorities              = $value_to_test" );
+    is( $report->{systempreferences}->{BiblioAddsAuthorities},               $value_to_test, "BiblioAddsAuthorities              = $value_to_test" );
+    is( $report->{systempreferences}->{dontmerge},                           $value_to_test, "dontmerge                          = $value_to_test" );
+    is( $report->{systempreferences}->{UseAuthoritiesForTracings},           $value_to_test, "UseAuthoritiesForTracings          = $value_to_test" );
+    is( $report->{systempreferences}->{CatalogModuleRelink},                 $value_to_test, "CatalogModuleRelink                = $value_to_test" );
+    is( $report->{systempreferences}->{hide_marc},                           $value_to_test, "hide_marc                          = $value_to_test" );
+    is( $report->{systempreferences}->{IntranetBiblioDefaultView},           $value_to_test, "IntranetBiblioDefaultView          = $value_to_test" );
+    is( $report->{systempreferences}->{LabelMARCView},                       $value_to_test, "LabelMARCView                      = $value_to_test" );
+    is( $report->{systempreferences}->{OpacSuppression},                     $value_to_test, "OpacSuppression                    = $value_to_test" );
+    is( $report->{systempreferences}->{SeparateHoldings},                    $value_to_test, "SeparateHoldings                   = $value_to_test" );
+    is( $report->{systempreferences}->{UseControlNumber},                    $value_to_test, "UseControlNumber                   = $value_to_test" );
+    is( $report->{systempreferences}->{advancedMARCeditor},                  $value_to_test, "advancedMARCeditor                 = $value_to_test" );
+    is( $report->{systempreferences}->{DefaultClassificationSource},         $value_to_test, "DefaultClassificationSource        = $value_to_test" );
+    is( $report->{systempreferences}->{EasyAnalyticalRecords},               $value_to_test, "EasyAnalyticalRecords              = $value_to_test" );
+    is( $report->{systempreferences}->{autoBarcode},                         $value_to_test, "autoBarcode                        = $value_to_test" );
+    is( $report->{systempreferences}->{'item-level_itypes'},                 $value_to_test, "item-level_itypes                  = $value_to_test" );
+    is( $report->{systempreferences}->{marcflavour},                         $value_to_test, "marcflavour                        = $value_to_test" );
+    is( $report->{systempreferences}->{PrefillItem},                         $value_to_test, "PrefillItem                        = $value_to_test" );
+    is( $report->{systempreferences}->{z3950NormalizeAuthor},                $value_to_test, "z3950NormalizeAuthor               = $value_to_test" );
+    is( $report->{systempreferences}->{SpineLabelAutoPrint},                 $value_to_test, "SpineLabelAutoPrint                = $value_to_test" );
+    is( $report->{systempreferences}->{SpineLabelShowPrintOnBibDetails},     $value_to_test, "SpineLabelShowPrintOnBibDetails    = $value_to_test" );
+    is( $report->{systempreferences}->{BlockReturnOfWithdrawnItems},         $value_to_test, "BlockReturnOfWithdrawnItems        = $value_to_test" );
+    is( $report->{systempreferences}->{CalculateFinesOnReturn},              $value_to_test, "CalculateFinesOnReturn             = $value_to_test" );
+    is( $report->{systempreferences}->{AgeRestrictionOverride},              $value_to_test, "AgeRestrictionOverride             = $value_to_test" );
+    is( $report->{systempreferences}->{AllFinesNeedOverride},                $value_to_test, "AllFinesNeedOverride               = $value_to_test" );
+    is( $report->{systempreferences}->{AllowFineOverride},                   $value_to_test, "AllowFineOverride                  = $value_to_test" );
+    is( $report->{systempreferences}->{AllowItemsOnHoldCheckout},            $value_to_test, "AllowItemsOnHoldCheckout           = $value_to_test" );
+    is( $report->{systempreferences}->{AllowNotForLoanOverride},             $value_to_test, "AllowNotForLoanOverride            = $value_to_test" );
+    is( $report->{systempreferences}->{AllowRenewalLimitOverride},           $value_to_test, "AllowRenewalLimitOverride          = $value_to_test" );
+    is( $report->{systempreferences}->{AllowReturnToBranch},                 $value_to_test, "AllowReturnToBranch                = $value_to_test" );
+    is( $report->{systempreferences}->{AllowTooManyOverride},                $value_to_test, "AllowTooManyOverride               = $value_to_test" );
+    is( $report->{systempreferences}->{AutomaticItemReturn},                 $value_to_test, "AutomaticItemReturn                = $value_to_test" );
+    is( $report->{systempreferences}->{AutoRemoveOverduesRestrictions},      $value_to_test, "AutoRemoveOverduesRestrictions     = $value_to_test" );
+    is( $report->{systempreferences}->{CircControl},                         $value_to_test, "CircControl                        = $value_to_test" );
+    is( $report->{systempreferences}->{HomeOrHoldingBranch},                 $value_to_test, "HomeOrHoldingBranch                = $value_to_test" );
+    is( $report->{systempreferences}->{HomeOrHoldingBranchReturn},           $value_to_test, "HomeOrHoldingBranchReturn          = $value_to_test" );
+    is( $report->{systempreferences}->{InProcessingToShelvingCart},          $value_to_test, "InProcessingToShelvingCart         = $value_to_test" );
+    is( $report->{systempreferences}->{IssueLostItem},                       $value_to_test, "IssueLostItem                      = $value_to_test" );
+    is( $report->{systempreferences}->{IssuingInProcess},                    $value_to_test, "IssuingInProcess                   = $value_to_test" );
+    is( $report->{systempreferences}->{ManInvInNoissuesCharge},              $value_to_test, "ManInvInNoissuesCharge             = $value_to_test" );
+    is( $report->{systempreferences}->{OverduesBlockCirc},                   $value_to_test, "OverduesBlockCirc                  = $value_to_test" );
+    is( $report->{systempreferences}->{RenewalPeriodBase},                   $value_to_test, "RenewalPeriodBase                  = $value_to_test" );
+    is( $report->{systempreferences}->{RenewalSendNotice},                   $value_to_test, "RenewalSendNotice                  = $value_to_test" );
+    is( $report->{systempreferences}->{RentalsInNoissuesCharge},             $value_to_test, "RentalsInNoissuesCharge            = $value_to_test" );
+    is( $report->{systempreferences}->{ReturnBeforeExpiry},                  $value_to_test, "ReturnBeforeExpiry                 = $value_to_test" );
+    is( $report->{systempreferences}->{ReturnToShelvingCart},                $value_to_test, "ReturnToShelvingCart               = $value_to_test" );
+    is( $report->{systempreferences}->{TransfersMaxDaysWarning},             $value_to_test, "TransfersMaxDaysWarning            = $value_to_test" );
+    is( $report->{systempreferences}->{UseBranchTransferLimits},             $value_to_test, "UseBranchTransferLimits            = $value_to_test" );
+    is( $report->{systempreferences}->{useDaysMode},                         $value_to_test, "useDaysMode                        = $value_to_test" );
+    is( $report->{systempreferences}->{UseTransportCostMatrix},              $value_to_test, "UseTransportCostMatrix             = $value_to_test" );
+    is( $report->{systempreferences}->{UseCourseReserves},                   $value_to_test, "UseCourseReserves                  = $value_to_test" );
+    is( $report->{systempreferences}->{finesCalendar},                       $value_to_test, "finesCalendar                      = $value_to_test" );
+    is( $report->{systempreferences}->{FinesIncludeGracePeriod},             $value_to_test, "FinesIncludeGracePeriod            = $value_to_test" );
+    is( $report->{systempreferences}->{finesMode},                           $value_to_test, "finesMode                          = $value_to_test" );
+    is( $report->{systempreferences}->{RefundLostItemFeeOnReturn},           $value_to_test, "RefundLostItemFeeOnReturn          = $value_to_test" );
+    is( $report->{systempreferences}->{WhenLostChargeReplacementFee},        $value_to_test, "WhenLostChargeReplacementFee       = $value_to_test" );
+    is( $report->{systempreferences}->{WhenLostForgiveFine},                 $value_to_test, "WhenLostForgiveFine                = $value_to_test" );
+    is( $report->{systempreferences}->{AllowHoldDateInFuture},               $value_to_test, "AllowHoldDateInFuture              = $value_to_test" );
+    is( $report->{systempreferences}->{AllowHoldPolicyOverride},             $value_to_test, "AllowHoldPolicyOverride            = $value_to_test" );
+    is( $report->{systempreferences}->{AllowHoldsOnDamagedItems},            $value_to_test, "AllowHoldsOnDamagedItems           = $value_to_test" );
+    is( $report->{systempreferences}->{AllowHoldsOnPatronsPossessions},      $value_to_test, "AllowHoldsOnPatronsPossessions     = $value_to_test" );
+    is( $report->{systempreferences}->{AutoResumeSuspendedHolds},            $value_to_test, "AutoResumeSuspendedHolds           = $value_to_test" );
+    is( $report->{systempreferences}->{canreservefromotherbranches},         $value_to_test, "canreservefromotherbranches        = $value_to_test" );
+    is( $report->{systempreferences}->{decreaseLoanHighHolds},               $value_to_test, "decreaseLoanHighHolds              = $value_to_test" );
+    is( $report->{systempreferences}->{DisplayMultiPlaceHold},               $value_to_test, "DisplayMultiPlaceHold              = $value_to_test" );
+    is( $report->{systempreferences}->{emailLibrarianWhenHoldIsPlaced},      $value_to_test, "emailLibrarianWhenHoldIsPlaced     = $value_to_test" );
+    is( $report->{systempreferences}->{ExpireReservesMaxPickUpDelay},        $value_to_test, "ExpireReservesMaxPickUpDelay       = $value_to_test" );
+    is( $report->{systempreferences}->{OPACAllowHoldDateInFuture},           $value_to_test, "OPACAllowHoldDateInFuture          = $value_to_test" );
+    is( $report->{systempreferences}->{OPACAllowUserToChooseBranch},         $value_to_test, "OPACAllowUserToChooseBranch        = $value_to_test" );
+    is( $report->{systempreferences}->{ReservesControlBranch},               $value_to_test, "ReservesControlBranch              = $value_to_test" );
+    is( $report->{systempreferences}->{ReservesNeedReturns},                 $value_to_test, "ReservesNeedReturns                = $value_to_test" );
+    is( $report->{systempreferences}->{SuspendHoldsIntranet},                $value_to_test, "SuspendHoldsIntranet               = $value_to_test" );
+    is( $report->{systempreferences}->{SuspendHoldsOpac},                    $value_to_test, "SuspendHoldsOpac                   = $value_to_test" );
+    is( $report->{systempreferences}->{TransferWhenCancelAllWaitingHolds},   $value_to_test, "TransferWhenCancelAllWaitingHolds  = $value_to_test" );
+    is( $report->{systempreferences}->{AllowAllMessageDeletion},             $value_to_test, "AllowAllMessageDeletion            = $value_to_test" );
+    is( $report->{systempreferences}->{AllowOfflineCirculation},             $value_to_test, "AllowOfflineCirculation            = $value_to_test" );
+    is( $report->{systempreferences}->{CircAutocompl},                       $value_to_test, "CircAutocompl                      = $value_to_test" );
+    is( $report->{systempreferences}->{CircAutoPrintQuickSlip},              $value_to_test, "CircAutoPrintQuickSlip             = $value_to_test" );
+    is( $report->{systempreferences}->{DisplayClearScreenButton},            $value_to_test, "DisplayClearScreenButton           = $value_to_test" );
+    is( $report->{systempreferences}->{FilterBeforeOverdueReport},           $value_to_test, "FilterBeforeOverdueReport          = $value_to_test" );
+    is( $report->{systempreferences}->{FineNotifyAtCheckin},                 $value_to_test, "FineNotifyAtCheckin                = $value_to_test" );
+    is( $report->{systempreferences}->{itemBarcodeFallbackSearch},           $value_to_test, "itemBarcodeFallbackSearch          = $value_to_test" );
+    is( $report->{systempreferences}->{itemBarcodeInputFilter},              $value_to_test, "itemBarcodeInputFilter             = $value_to_test" );
+    is( $report->{systempreferences}->{previousIssuesDefaultSortOrder},      $value_to_test, "previousIssuesDefaultSortOrder     = $value_to_test" );
+    is( $report->{systempreferences}->{RecordLocalUseOnReturn},              $value_to_test, "RecordLocalUseOnReturn             = $value_to_test" );
+    is( $report->{systempreferences}->{soundon},                             $value_to_test, "soundon                            = $value_to_test" );
+    is( $report->{systempreferences}->{SpecifyDueDate},                      $value_to_test, "SpecifyDueDate                     = $value_to_test" );
+    is( $report->{systempreferences}->{todaysIssuesDefaultSortOrder},        $value_to_test, "todaysIssuesDefaultSortOrder       = $value_to_test" );
+    is( $report->{systempreferences}->{UpdateTotalIssuesOnCirc},             $value_to_test, "UpdateTotalIssuesOnCirc            = $value_to_test" );
+    is( $report->{systempreferences}->{UseTablesortForCirc},                 $value_to_test, "UseTablesortForCirc                = $value_to_test" );
+    is( $report->{systempreferences}->{WaitingNotifyAtCheckin},              $value_to_test, "WaitingNotifyAtCheckin             = $value_to_test" );
+    is( $report->{systempreferences}->{AllowSelfCheckReturns},               $value_to_test, "AllowSelfCheckReturns              = $value_to_test" );
+    is( $report->{systempreferences}->{AutoSelfCheckAllowed},                $value_to_test, "AutoSelfCheckAllowed               = $value_to_test" );
+    is( $report->{systempreferences}->{FRBRizeEditions},                     $value_to_test, "FRBRizeEditions                    = $value_to_test" );
+    is( $report->{systempreferences}->{OPACFRBRizeEditions},                 $value_to_test, "OPACFRBRizeEditions                = $value_to_test" );
+    is( $report->{systempreferences}->{AmazonCoverImages},                   $value_to_test, "AmazonCoverImages                  = $value_to_test" );
+    is( $report->{systempreferences}->{OPACAmazonCoverImages},               $value_to_test, "OPACAmazonCoverImages              = $value_to_test" );
+    is( $report->{systempreferences}->{Babeltheque},                         $value_to_test, "Babeltheque                        = $value_to_test" );
+    is( $report->{systempreferences}->{BakerTaylorEnabled},                  $value_to_test, "BakerTaylorEnabled                 = $value_to_test" );
+    is( $report->{systempreferences}->{GoogleJackets},                       $value_to_test, "GoogleJackets                      = $value_to_test" );
+    is( $report->{systempreferences}->{HTML5MediaEnabled},                   $value_to_test, "HTML5MediaEnabled                  = $value_to_test" );
+    is( $report->{systempreferences}->{IDreamBooksReadometer},               $value_to_test, "IDreamBooksReadometer              = $value_to_test" );
+    is( $report->{systempreferences}->{IDreamBooksResults},                  $value_to_test, "IDreamBooksResults                 = $value_to_test" );
+    is( $report->{systempreferences}->{IDreamBooksReviews},                  $value_to_test, "IDreamBooksReviews                 = $value_to_test" );
+    is( $report->{systempreferences}->{LibraryThingForLibrariesEnabled},     $value_to_test, "LibraryThingForLibrariesEnabled    = $value_to_test" );
+    is( $report->{systempreferences}->{LocalCoverImages},                    $value_to_test, "LocalCoverImages                   = $value_to_test" );
+    is( $report->{systempreferences}->{OPACLocalCoverImages},                $value_to_test, "OPACLocalCoverImages               = $value_to_test" );
+    is( $report->{systempreferences}->{NovelistSelectEnabled},               $value_to_test, "NovelistSelectEnabled              = $value_to_test" );
+    is( $report->{systempreferences}->{XISBN},                               $value_to_test, "XISBN                              = $value_to_test" );
+    is( $report->{systempreferences}->{OpenLibraryCovers},                   $value_to_test, "OpenLibraryCovers                  = $value_to_test" );
+    is( $report->{systempreferences}->{UseKohaPlugins},                      $value_to_test, "UseKohaPlugins                     = $value_to_test" );
+    is( $report->{systempreferences}->{SyndeticsEnabled},                    $value_to_test, "SyndeticsEnabled                   = $value_to_test" );
+    is( $report->{systempreferences}->{TagsEnabled},                         $value_to_test, "TagsEnabled                        = $value_to_test" );
+    is( $report->{systempreferences}->{CalendarFirstDayOfWeek},              $value_to_test, "CalendarFirstDayOfWeek             = $value_to_test" );
+    is( $report->{systempreferences}->{opaclanguagesdisplay},                $value_to_test, "opaclanguagesdisplay               = $value_to_test" );
+    is( $report->{systempreferences}->{AuthoritiesLog},                      $value_to_test, "AuthoritiesLog                     = $value_to_test" );
+    is( $report->{systempreferences}->{BorrowersLog},                        $value_to_test, "BorrowersLog                       = $value_to_test" );
+    is( $report->{systempreferences}->{CataloguingLog},                      $value_to_test, "CataloguingLog                     = $value_to_test" );
+    is( $report->{systempreferences}->{FinesLog},                            $value_to_test, "FinesLog                           = $value_to_test" );
+    is( $report->{systempreferences}->{IssueLog},                            $value_to_test, "IssueLog                           = $value_to_test" );
+    is( $report->{systempreferences}->{LetterLog},                           $value_to_test, "LetterLog                          = $value_to_test" );
+    is( $report->{systempreferences}->{ReturnLog},                           $value_to_test, "ReturnLog                          = $value_to_test" );
+    is( $report->{systempreferences}->{SubscriptionLog},                     $value_to_test, "SubscriptionLog                    = $value_to_test" );
+    is( $report->{systempreferences}->{AuthorisedValueImages},               $value_to_test, "AuthorisedValueImages              = $value_to_test" );
+    is( $report->{systempreferences}->{BiblioDefaultView},                   $value_to_test, "BiblioDefaultView                  = $value_to_test" );
+    is( $report->{systempreferences}->{COinSinOPACResults},                  $value_to_test, "COinSinOPACResults                 = $value_to_test" );
+    is( $report->{systempreferences}->{DisplayOPACiconsXSLT},                $value_to_test, "DisplayOPACiconsXSLT               = $value_to_test" );
+    is( $report->{systempreferences}->{hidelostitems},                       $value_to_test, "hidelostitems                      = $value_to_test" );
+    is( $report->{systempreferences}->{HighlightOwnItemsOnOPAC},             $value_to_test, "HighlightOwnItemsOnOPAC            = $value_to_test" );
+    is( $report->{systempreferences}->{OpacAddMastheadLibraryPulldown},      $value_to_test, "OpacAddMastheadLibraryPulldown     = $value_to_test" );
+    is( $report->{systempreferences}->{OPACDisplay856uAsImage},              $value_to_test, "OPACDisplay856uAsImage             = $value_to_test" );
+    is( $report->{systempreferences}->{OpacHighlightedWords},                $value_to_test, "OpacHighlightedWords               = $value_to_test" );
+    is( $report->{systempreferences}->{OpacKohaUrl},                         $value_to_test, "OpacKohaUrl                        = $value_to_test" );
+    is( $report->{systempreferences}->{OpacMaintenance},                     $value_to_test, "OpacMaintenance                    = $value_to_test" );
+    is( $report->{systempreferences}->{OpacPublic},                          $value_to_test, "OpacPublic                         = $value_to_test" );
+    is( $report->{systempreferences}->{OpacSeparateHoldings},                $value_to_test, "OpacSeparateHoldings               = $value_to_test" );
+    is( $report->{systempreferences}->{OPACShowBarcode},                     $value_to_test, "OPACShowBarcode                    = $value_to_test" );
+    is( $report->{systempreferences}->{OPACShowCheckoutName},                $value_to_test, "OPACShowCheckoutName               = $value_to_test" );
+    is( $report->{systempreferences}->{OpacShowFiltersPulldownMobile},       $value_to_test, "OpacShowFiltersPulldownMobile      = $value_to_test" );
+    is( $report->{systempreferences}->{OPACShowHoldQueueDetails},            $value_to_test, "OPACShowHoldQueueDetails           = $value_to_test" );
+    is( $report->{systempreferences}->{OpacShowLibrariesPulldownMobile},     $value_to_test, "OpacShowLibrariesPulldownMobile    = $value_to_test" );
+    is( $report->{systempreferences}->{OpacShowRecentComments},              $value_to_test, "OpacShowRecentComments             = $value_to_test" );
+    is( $report->{systempreferences}->{OPACShowUnusedAuthorities},           $value_to_test, "OPACShowUnusedAuthorities          = $value_to_test" );
+    is( $report->{systempreferences}->{OpacStarRatings},                     $value_to_test, "OpacStarRatings                    = $value_to_test" );
+    is( $report->{systempreferences}->{opacthemes},                          $value_to_test, "opacthemes                         = $value_to_test" );
+    is( $report->{systempreferences}->{OPACURLOpenInNewWindow},              $value_to_test, "OPACURLOpenInNewWindow             = $value_to_test" );
+    is( $report->{systempreferences}->{OpacAuthorities},                     $value_to_test, "OpacAuthorities                    = $value_to_test" );
+    is( $report->{systempreferences}->{opacbookbag},                         $value_to_test, "opacbookbag                        = $value_to_test" );
+    is( $report->{systempreferences}->{OpacBrowser},                         $value_to_test, "OpacBrowser                        = $value_to_test" );
+    is( $report->{systempreferences}->{OpacBrowseResults},                   $value_to_test, "OpacBrowseResults                  = $value_to_test" );
+    is( $report->{systempreferences}->{OpacCloud},                           $value_to_test, "OpacCloud                          = $value_to_test" );
+    is( $report->{systempreferences}->{OPACFinesTab},                        $value_to_test, "OPACFinesTab                       = $value_to_test" );
+    is( $report->{systempreferences}->{OpacHoldNotes},                       $value_to_test, "OpacHoldNotes                      = $value_to_test" );
+    is( $report->{systempreferences}->{OpacItemLocation},                    $value_to_test, "OpacItemLocation                   = $value_to_test" );
+    is( $report->{systempreferences}->{OpacPasswordChange},                  $value_to_test, "OpacPasswordChange                 = $value_to_test" );
+    is( $report->{systempreferences}->{OPACPatronDetails},                   $value_to_test, "OPACPatronDetails                  = $value_to_test" );
+    is( $report->{systempreferences}->{OPACpatronimages},                    $value_to_test, "OPACpatronimages                   = $value_to_test" );
+    is( $report->{systempreferences}->{OPACPopupAuthorsSearch},              $value_to_test, "OPACPopupAuthorsSearch             = $value_to_test" );
+    is( $report->{systempreferences}->{OpacTopissue},                        $value_to_test, "OpacTopissue                       = $value_to_test" );
+    is( $report->{systempreferences}->{opacuserlogin},                       $value_to_test, "opacuserlogin                      = $value_to_test" );
+    is( $report->{systempreferences}->{QuoteOfTheDay},                       $value_to_test, "QuoteOfTheDay                      = $value_to_test" );
+    is( $report->{systempreferences}->{RequestOnOpac},                       $value_to_test, "RequestOnOpac                      = $value_to_test" );
+    is( $report->{systempreferences}->{reviewson},                           $value_to_test, "reviewson                          = $value_to_test" );
+    is( $report->{systempreferences}->{ShowReviewer},                        $value_to_test, "ShowReviewer                       = $value_to_test" );
+    is( $report->{systempreferences}->{ShowReviewerPhoto},                   $value_to_test, "ShowReviewerPhoto                  = $value_to_test" );
+    is( $report->{systempreferences}->{SocialNetworks},                      $value_to_test, "SocialNetworks                     = $value_to_test" );
+    is( $report->{systempreferences}->{suggestion},                          $value_to_test, "suggestion                         = $value_to_test" );
+    is( $report->{systempreferences}->{AllowPurchaseSuggestionBranchChoice}, $value_to_test, "AllowPurchaseSuggestionBranchChoice= $value_to_test" );
+    is( $report->{systempreferences}->{OpacAllowPublicListCreation},         $value_to_test, "OpacAllowPublicListCreation        = $value_to_test" );
+    is( $report->{systempreferences}->{OpacAllowSharingPrivateLists},        $value_to_test, "OpacAllowSharingPrivateLists       = $value_to_test" );
+    is( $report->{systempreferences}->{OpacRenewalAllowed},                  $value_to_test, "OpacRenewalAllowed                 = $value_to_test" );
+    is( $report->{systempreferences}->{OpacRenewalBranch},                   $value_to_test, "OpacRenewalBranch                  = $value_to_test" );
+    is( $report->{systempreferences}->{OPACViewOthersSuggestions},           $value_to_test, "OPACViewOthersSuggestions          = $value_to_test" );
+    is( $report->{systempreferences}->{SearchMyLibraryFirst},                $value_to_test, "SearchMyLibraryFirst               = $value_to_test" );
+    is( $report->{systempreferences}->{singleBranchMode},                    $value_to_test, "singleBranchMode                   = $value_to_test" );
+    is( $report->{systempreferences}->{AnonSuggestions},                     $value_to_test, "AnonSuggestions                    = $value_to_test" );
+    is( $report->{systempreferences}->{EnableOpacSearchHistory},             $value_to_test, "EnableOpacSearchHistory            = $value_to_test" );
+    is( $report->{systempreferences}->{OPACPrivacy},                         $value_to_test, "OPACPrivacy                        = $value_to_test" );
+    is( $report->{systempreferences}->{opacreadinghistory},                  $value_to_test, "opacreadinghistory                 = $value_to_test" );
+    is( $report->{systempreferences}->{TrackClicks},                         $value_to_test, "TrackClicks                        = $value_to_test" );
+    is( $report->{systempreferences}->{PatronSelfRegistration},              $value_to_test, "PatronSelfRegistration             = $value_to_test" );
+    is( $report->{systempreferences}->{OPACShelfBrowser},                    $value_to_test, "OPACShelfBrowser                   = $value_to_test" );
+    is( $report->{systempreferences}->{AutoEmailOpacUser},                   $value_to_test, "AutoEmailOpacUser                  = $value_to_test" );
+    is( $report->{systempreferences}->{AutoEmailPrimaryAddress},             $value_to_test, "AutoEmailPrimaryAddress            = $value_to_test" );
+    is( $report->{systempreferences}->{autoMemberNum},                       $value_to_test, "autoMemberNum                      = $value_to_test" );
+    is( $report->{systempreferences}->{BorrowerRenewalPeriodBase},           $value_to_test, "BorrowerRenewalPeriodBase          = $value_to_test" );
+    is( $report->{systempreferences}->{checkdigit},                          $value_to_test, "checkdigit                         = $value_to_test" );
+    is( $report->{systempreferences}->{EnableBorrowerFiles},                 $value_to_test, "EnableBorrowerFiles                = $value_to_test" );
+    is( $report->{systempreferences}->{EnhancedMessagingPreferences},        $value_to_test, "EnhancedMessagingPreferences       = $value_to_test" );
+    is( $report->{systempreferences}->{ExtendedPatronAttributes},            $value_to_test, "ExtendedPatronAttributes           = $value_to_test" );
+    is( $report->{systempreferences}->{intranetreadinghistory},              $value_to_test, "intranetreadinghistory             = $value_to_test" );
+    is( $report->{systempreferences}->{memberofinstitution},                 $value_to_test, "memberofinstitution                = $value_to_test" );
+    is( $report->{systempreferences}->{patronimages},                        $value_to_test, "patronimages                       = $value_to_test" );
+    is( $report->{systempreferences}->{TalkingTechItivaPhoneNotification},   $value_to_test, "TalkingTechItivaPhoneNotification  = $value_to_test" );
+    is( $report->{systempreferences}->{uppercasesurnames},                   $value_to_test, "uppercasesurnames                  = $value_to_test" );
+    is( $report->{systempreferences}->{IncludeSeeFromInSearches},            $value_to_test, "IncludeSeeFromInSearches           = $value_to_test" );
+    is( $report->{systempreferences}->{OpacGroupResults},                    $value_to_test, "OpacGroupResults                   = $value_to_test" );
+    is( $report->{systempreferences}->{QueryAutoTruncate},                   $value_to_test, "QueryAutoTruncate                  = $value_to_test" );
+    is( $report->{systempreferences}->{QueryFuzzy},                          $value_to_test, "QueryFuzzy                         = $value_to_test" );
+    is( $report->{systempreferences}->{QueryStemming},                       $value_to_test, "QueryStemming                      = $value_to_test" );
+    is( $report->{systempreferences}->{QueryWeightFields},                   $value_to_test, "QueryWeightFields                  = $value_to_test" );
+    is( $report->{systempreferences}->{TraceCompleteSubfields},              $value_to_test, "TraceCompleteSubfields             = $value_to_test" );
+    is( $report->{systempreferences}->{TraceSubjectSubdivisions},            $value_to_test, "TraceSubjectSubdivisions           = $value_to_test" );
+    is( $report->{systempreferences}->{UseICU},                              $value_to_test, "UseICU                             = $value_to_test" );
+    is( $report->{systempreferences}->{UseQueryParser},                      $value_to_test, "UseQueryParser                     = $value_to_test" );
+    is( $report->{systempreferences}->{defaultSortField},                    $value_to_test, "defaultSortField                   = $value_to_test" );
+    is( $report->{systempreferences}->{displayFacetCount},                   $value_to_test, "displayFacetCount                  = $value_to_test" );
+    is( $report->{systempreferences}->{OPACdefaultSortField},                $value_to_test, "OPACdefaultSortField               = $value_to_test" );
+    is( $report->{systempreferences}->{OPACItemsResultsDisplay},             $value_to_test, "OPACItemsResultsDisplay            = $value_to_test" );
+    is( $report->{systempreferences}->{expandedSearchOption},                $value_to_test, "expandedSearchOption               = $value_to_test" );
+    is( $report->{systempreferences}->{IntranetNumbersPreferPhrase},         $value_to_test, "IntranetNumbersPreferPhrase        = $value_to_test" );
+    is( $report->{systempreferences}->{OPACNumbersPreferPhrase},             $value_to_test, "OPACNumbersPreferPhrase            = $value_to_test" );
+    is( $report->{systempreferences}->{opacSerialDefaultTab},                $value_to_test, "opacSerialDefaultTab               = $value_to_test" );
+    is( $report->{systempreferences}->{RenewSerialAddsSuggestion},           $value_to_test, "RenewSerialAddsSuggestion          = $value_to_test" );
+    is( $report->{systempreferences}->{RoutingListAddReserves},              $value_to_test, "RoutingListAddReserves             = $value_to_test" );
+    is( $report->{systempreferences}->{RoutingSerials},                      $value_to_test, "RoutingSerials                     = $value_to_test" );
+    is( $report->{systempreferences}->{SubscriptionHistory},                 $value_to_test, "SubscriptionHistory                = $value_to_test" );
+    is( $report->{systempreferences}->{Display856uAsImage},                  $value_to_test, "Display856uAsImage                 = $value_to_test" );
+    is( $report->{systempreferences}->{DisplayIconsXSLT},                    $value_to_test, "DisplayIconsXSLT                   = $value_to_test" );
+    is( $report->{systempreferences}->{StaffAuthorisedValueImages},          $value_to_test, "StaffAuthorisedValueImages         = $value_to_test" );
+    is( $report->{systempreferences}->{template},                            $value_to_test, "template                           = $value_to_test" );
+    is( $report->{systempreferences}->{yuipath},                             $value_to_test, "yuipath                            = $value_to_test" );
+    is( $report->{systempreferences}->{HidePatronName},                      $value_to_test, "HidePatronName                     = $value_to_test" );
+    is( $report->{systempreferences}->{intranetbookbag},                     $value_to_test, "intranetbookbag                    = $value_to_test" );
+    is( $report->{systempreferences}->{StaffDetailItemSelection},            $value_to_test, "StaffDetailItemSelection           = $value_to_test" );
+    is( $report->{systempreferences}->{viewISBD},                            $value_to_test, "viewISBD                           = $value_to_test" );
+    is( $report->{systempreferences}->{viewLabeledMARC},                     $value_to_test, "viewLabeledMARC                    = $value_to_test" );
+    is( $report->{systempreferences}->{viewMARC},                            $value_to_test, "viewMARC                           = $value_to_test" );
+    is( $report->{systempreferences}->{'ILS-DI'},                            $value_to_test, "ILS-DI                             = $value_to_test" );
+    is( $report->{systempreferences}->{'OAI-PMH'},                           $value_to_test, "OAI-PMH                            = $value_to_test" );
+    is( $report->{systempreferences}->{version},                             $value_to_test, "version                            = $value_to_test" );
+}
+
+$dbh->rollback;