Koha/t/db_dependent
Marcel de Rooy 9adfd29fc1 Bug 19096: Add update DB entry to sync kohafield in all frameworks
Squashed the last four follow-ups into one patch. Instead of adding
two routines to Koha::MarcSubfieldStructures, and instead of moving
them to Koha::Util::Dbrev, we finally ended up with converting the
code to raw SQL queries (thx Jonathan). No need to 'pollute' the git
history with all this moving around.

As Jonathan pointed out, there is a risk in using DBIx calls (with Koha
objects) while running database revisions. See also bug 17292 and
bug 19789.

I tested the resulting db revision by adding a few fields to the Default
framework and adding deviating kohafields in other frameworks. And confirm
that it works as expected.

Please read the remainder of this commit message in the light of the above:

===

The dbrev will use two new routines in MarcSubfieldStructures:
[1] get_kohafield_exceptions is used to report deviating kohafields in
    the additional frameworks,
[2] sync_kohafield is used to reset kohafield in the other frameworks to
    the mapping in Default.

Test plan:

Unit test and database revision:
[1] Run t/db_dependent/Koha/MarcSubfieldStructures.t
[2] Verify that your Default 100a is mapped to biblio.author. Go to another
    framework and clear the mapping via mysql command line:
    UPDATE marc_subfield_structure SET kohafield=NULL WHERE frameworkcode=[your_framework] AND tagfield='100' AND tagsubfield='a';
[3] Run the db revision. It should report that 100a was adjusted.
[4] Check in admin/marc_subfield_structure that your 100a is mapped to
    biblio.author again in that framework.

Additional interface testing (ensuring that the changes on this report do
not interfere with multiple mappings):
[5] Make two mappings for copyrightdate: 260c and 264a. And make two
    mappings for biblioitems.pages: 300a and say 300g. Toggle with some
    field values in those fields in the cataloging editor and verify the
    contents of biblio.copyrightdate and biblioitems.pages. The former
    should contain one year (due to additional logic) and the latter should
    contain A | B if both fields are filled.
    Remove the mapping for 300g.
[6] Set AcqCreateItem to ordering or placing. Verify that you can still
    add or receive an order as usual.
[7] Add a mapping for itemcallnumber to 952f (this should remove the one
    for coded_location_qualifier). This is very unusual but serves well in
    testing multiple mappings for items.
    Add or receive an order (fill 952f and 952o) with same and/or different
    values. Verify the contents of items.callnumber. (Check with regular
    item editor; see note.)
    Do a similar edit in the regular item editor.
    Note: You should expect to see A | B in both 952f and 925o if both
    fields are filled with a different value.
    Set items.coded_location_qualifier back to 952f in koha2marclinks.

    Note: When AcqCreateItem==ordering, you will not see A|B in the callno
    field when adding an item on neworderempty.pl. But when you submit
    the main form, addorder.pl is called. At that time an item is created
    and you will see that A|B is in both fields (952f and 952o).

Signed-off-by: Josef Moravec <josef.moravec@gmail.com>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>

Bug 19096: (QA follow-up) Move two routines out of Koha::MSS

As requested by RM, this patch moves sync_kohafield and
get_kohafield_exceptions from Koha/MarcSubfieldStructures.pm.

At this moment they are only used in a database revision; it is not clear
if they may be of use later on.

In order to keep them in a module and not remove the unit tests, this
patch adds a Koha::Util module Dbrev.pm. It is now required in the atomic
update, but could be added in a use statement in updatedatabase.pl.

Test plan:
[1] Run updatedatabase.pl
[2] Run t/db_dependent/Koha/MarcSubfieldStructures.t

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>

Bug 19096: Use raw SQL queries instead for the update DB entry

I strongly thing we must not use C4 or Koha subroutine in the update DB
process, only sql queries.
Especially not DBIC Schema files as they will change.
For instance the update DB 17.12.00.00X is using a specific Koha::Schema::RS::MSS
representing the current schema, but in X months/years, this schema will change
and the ->search we used may failed.

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>

Bug 19096: Move the sql queries to the update DB entry

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Amended: Print "Field 700$a" instead of "Field 700.a" in the dbrev.

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
2017-12-11 11:34:08 -03:00
..
Acquisition Bug 15685: (QA follow-up) Address QA issues 2017-10-11 13:08:47 -03:00
api/v1 Bug 7317: (QA followup) Rename 'branch' for 'library' 2017-11-09 11:42:16 -03:00
Auth
Authority Bug 17380: (QA followup) Fix parameter in tests 2017-09-12 12:07:47 -03:00
Biblio Bug 19096: Adjusts unit tests 2017-12-07 14:44:15 -03:00
Circulation Bug 19776: Fix random failures (category_type vs categorycode='X') 2017-12-07 14:43:32 -03:00
Creators Bug 18044: Add a test 2017-02-07 17:46:00 +00:00
data
Exporter Bug 18292: Remove return 1 statements in tests 2017-08-15 12:17:42 -03:00
Holds Bug 18547: (QA follow-up) Add comments to make tests clearer 2017-11-26 11:30:22 -03:00
Illrequest Bug 7317: Remove traces of UnmediatedILL 2017-11-09 11:42:16 -03:00
Items Bug 19096: Adjusts unit tests 2017-12-07 14:44:15 -03:00
Koha Bug 19096: Add update DB entry to sync kohafield in all frameworks 2017-12-11 11:34:08 -03:00
Labels Bug 18292: Remove return 1 statements in tests 2017-08-15 12:17:42 -03:00
LDAP
Letters Bug 19277: Make sure the tests will pass even if they are slow 2017-09-12 11:29:11 -03:00
Members Bug 18292: Remove return 1 statements in tests 2017-08-15 12:17:42 -03:00
OAI Bug 19040: Refactor GetMarcBiblio parameters 2017-08-25 10:23:42 -03:00
Patron Bug 18292: Remove return 1 statements in tests 2017-08-15 12:17:42 -03:00
Record
Reports Bug 19495: Automatic report conversion needs to do global replace on 'biblioitems' and 'marcxml' 2017-10-25 12:14:32 -03:00
Reserves Bug 19437: (followup) Rearrange CancelExpiredReserves tests - fix typos 2017-10-09 13:47:02 -03:00
Search Bug 19775: Try & prevent Search/History.t to fail randomly 2017-12-07 13:42:45 -03:00
selenium Bug 18298: Fix selenium tests 2017-10-17 12:40:45 -03:00
Serials Bug 18292: Remove return 1 statements in tests 2017-08-15 12:17:42 -03:00
SIP Bug 19386: [QA Follow-up] Remove some default values 2017-10-06 12:00:19 -03:00
Template/Plugin Bug 19655: Add tests 2017-11-26 12:59:31 -03:00
Utils Bug 18292: Remove return 1 statements in tests 2017-08-15 12:17:42 -03:00
www Bug 19392: Clean-up behind auth_values_input_www.t 2017-09-29 17:12:19 -03:00
XSLT_Handler
00-strict.t Bug 19178: Remove outdated sms/* scripts and related files 2017-10-27 14:10:29 -03:00
01-test_dbic.t Bug 18226: Perltidy + license 2017-06-05 17:52:48 -03:00
Accounts.t Bug 12768: Replacement cost and processing fee management 2017-10-20 17:14:33 -03:00
Acquisition.t Bug 19256: (QA followup) Remove warn from unit test 2017-09-07 15:03:04 -03:00
AdditionalField.t Bug 13726: Make Koha::Acq::Bookseller using Koha::Object 2016-12-30 11:54:32 +00:00
Amazon.t
ArticleRequests.t Bug 19528: Fix a few typos like corrosponding 2017-10-27 14:09:04 -03:00
AudioAlerts.t
Auth.t Bug 17989: Include full path logic in _get_template_file 2017-11-01 13:10:17 -03:00
Auth_with_cas.t Bug 19373: Update tests 2017-10-16 09:38:41 -03:00
Auth_with_ldap.t Bug 18292: Remove return 1 statements in tests 2017-08-15 12:17:42 -03:00
AuthorisedValues.t Bug 18748: Noisy t/db_dependent/AuthorisedValues.t 2017-07-14 12:29:22 -03:00
AuthoritiesMarc.t Bug 18448: Fix a few db_dependent tests 2017-04-21 00:09:43 +00:00
BackgroundJob.t
Barcodes.t
Barcodes_ValueBuilder.t Bug 18292: Remove return 1 statements in tests 2017-08-15 12:17:42 -03:00
Biblio.t Bug 19096: Adjusts unit tests 2017-12-07 14:44:15 -03:00
Bookseller.t Bug 19256: Make Koha::Acq::Order using Koha::Object 2017-09-07 15:03:04 -03:00
Breeding.t
Budgets.t Bug 18999: (QA followup) ModReceiveOrder expects a hashref 2017-09-29 13:03:38 -03:00
Calendar.t Bug 9031: (QA follow-up) Final changes to Calendar::days_between 2017-10-27 14:09:04 -03:00
Charset.t Bug 18269: Move field mappings related code to Koha::FieldMapping[s] 2017-03-31 10:20:00 +00:00
check_sysprefs.t Bug 17917: [AMENDED] Fix path issue in t/db_dependent/check_sysprefs.t 2017-01-20 13:39:37 +00:00
Circulation.t Bug 19776: Fix random failures (category_type vs categorycode='X') 2017-12-07 14:43:32 -03:00
ClassSource.t
Clubs.t Bug 18292: Remove return 1 statements in tests 2017-08-15 12:17:42 -03:00
ColumnsSettings.t
Context.t Bug 18292: Remove return 1 statements in tests 2017-08-15 12:17:42 -03:00
Contract.t Bug 13726: Make Koha::Acq::Bookseller using Koha::Object 2016-12-30 11:54:32 +00:00
CourseReserves.t Bug 17716: (followup) Remove dep on existing data and tidy 2016-12-05 15:32:57 +00:00
db_structure.t Bug 18292: Remove return 1 statements in tests 2017-08-15 12:17:42 -03:00
DecreaseLoanHighHolds.t Bug 19776: Fix random failures (category_type vs categorycode='X') 2017-12-07 14:43:32 -03:00
default_search_class.pl
Filter_MARC_ViewPolicy.t Bug 18292: Remove return 1 statements in tests 2017-08-15 12:17:42 -03:00
Fines.t
FrameworkPlugin.t
Heading_MARC21.t
Hold.t Bug 16187: Do not use DateTime directly 2017-10-20 16:51:25 -03:00
Holds.t Bug 19766: (bug 19058 follow-up) Fix Preview routing slip 2017-12-07 09:37:01 -03:00
HoldsQueue.t Bug 19059: Move C4::Reserves::CancelReserve to Koha::Hold->cancel 2017-09-12 12:42:58 -03:00
Holidays.t Bug 18292: Remove return 1 statements in tests 2017-08-15 12:17:42 -03:00
Illrequestattributes.t Bug 7317: (followup) Make tests independent of data on the DB 2017-11-09 11:42:15 -03:00
Illrequests.t Bug 7317: (QA followup) Rename 'branch' for 'library' 2017-11-09 11:42:16 -03:00
ILSDI_Services.t Bug 18292: Remove return 1 statements in tests 2017-08-15 12:17:42 -03:00
ImportBatch.t Bug 19049: [QA Follow-up] Mock config, default format 2017-08-15 12:17:42 -03:00
Installer.t Bug 17234: Need to separate KEY and FOREIGN KEY checks 2017-01-12 12:43:10 +00:00
Items.t Bug 19096: Adjusts unit tests 2017-12-07 14:44:15 -03:00
Items_DelItemCheck.t Bug 18292: Remove return 1 statements in tests 2017-08-15 12:17:42 -03:00
KitchenSinkPlugin.kpz
Koha.t Bug 17843: Replace C4::Koha::getitemtypeinfo with Koha::ItemTypes 2017-07-05 13:42:21 -03:00
Koha_Authority.t
Koha_Database.t
Koha_Elasticsearch.t Bug 18292: Remove return 1 statements in tests 2017-08-15 12:17:42 -03:00
Koha_Elasticsearch_Indexer.t Bug 18292: Remove return 1 statements in tests 2017-08-15 12:17:42 -03:00
Koha_Misc_Files.t Bug 18292: Remove return 1 statements in tests 2017-08-15 12:17:42 -03:00
Koha_SearchEngine_Elasticsearch_Search.t Bug 19559: Add tests 2017-11-26 12:59:31 -03:00
Languages.t
Letters.t Bug 18990: Overdue Notices are not sending through SMS correctly 2017-12-07 09:37:11 -03:00
Linker_FirstMatch.t
Log.t Bug 18991: [QA Follow-up] Use schema txn_begin and txn_rollback 2017-07-28 11:23:40 -03:00
MarcModificationTemplates.t Bug 19069: Fix 'does not match' behaviour in MARC modification template 2017-10-27 14:09:01 -03:00
Members.t Bug 19126: Fix Members.t with IndependentBranches set 2017-08-25 12:12:04 -03:00
MungeMarcPrice.t
NewsChannels.t Bug 17960: Rename opac_news.new with opac_news.content 2017-02-06 17:42:12 +00:00
Overdues.t
Passwordrecovery.t Bug 18292: Remove return 1 statements in tests 2017-08-15 12:17:42 -03:00
PatronLists.t Bug 18292: Remove return 1 statements in tests 2017-08-15 12:17:42 -03:00
Patrons.t Bug 19176: Compare the number of seconds when comparing dates in tests 2017-10-30 14:55:18 -03:00
Plugins.t Bug 17989: Include full path logic in _get_template_file 2017-11-01 13:10:17 -03:00
QueryParser.t Bug 18292: Remove return 1 statements in tests 2017-08-15 12:17:42 -03:00
Record.t
RecordProcessor_EmbedSeeFromHeadings.t
RefundLostItemFeeRule.t Bug 18292: Remove return 1 statements in tests 2017-08-15 12:17:42 -03:00
Reports.t
Reserves.t Bug 19096: Adjusts unit tests 2017-12-07 14:44:15 -03:00
rollingloans.t Bug 17829: Execute rollingloans tests in a transaction 2017-07-26 16:39:17 -03:00
RotatingCollections.t Bug 18292: Remove return 1 statements in tests 2017-08-15 12:17:42 -03:00
Search.t Bug 10306: Add tests for module changes 2017-12-07 14:44:15 -03:00
Serials.t Bug 18782: Remove unused C4::Serials::getsupplierbyserialid 2017-07-05 13:41:47 -03:00
Serials_2.t Bug 18420: Do not use 'S' as patron category code in other tests 2017-04-21 10:49:25 -04:00
Service.t
ShelfBrowser.t Bug 19047: Fix AddBiblio call in ShelfBrowser.t 2017-08-10 16:25:32 -03:00
Sitemapper.t Bug 18226 - Remove "use Test::DBIx::Class" instantiations' dangerous code duplication 2017-06-05 17:52:48 -03:00
Stats.t Bug 18882: (QA follow-up) Ensure stats with no or undef location are set to NULL in db 2017-11-08 13:34:37 -03:00
SuggestionEngine_ExplodedTerms.t Bug 17989: (QA follow-up) Replace bad dots in SuggestionEngine_ExplodedTerms.t 2017-11-01 13:10:18 -03:00
Suggestions.t Bug 18420: Use TestBuilder to create a patron category in Suggestions.t 2017-04-21 10:49:25 -04:00
sysprefs.t
Tags.t
Templates.t Bug 17989: Include full path logic in _get_template_file 2017-11-01 13:10:17 -03:00
TestBuilder.t Bug 15339: Remove extra 'my' 2017-09-07 13:56:08 -03:00
Upload.t Bug 19420: (QA Follow-up) Fix test, correct POD 2017-11-08 13:31:37 -03:00
UsageStats.t Bug 10748: Add the ability to block return of lost items 2017-11-08 11:07:09 -03:00
Virtualshelves.t Bug 19176: Compare the number of seconds when comparing dates in tests 2017-10-30 14:55:18 -03:00
XISBN.t Bug 19440: Identify overlimit problems in XISBN tests 2017-10-09 16:15:52 -03:00
XSLT_Handler.t Bug 17807: Add format parameter to XSLT_Handler->transform 2017-08-30 15:06:40 -03:00
zebra_config.pl