LP#1488655: regression test for metarecord remapping
authorGalen Charlton <gmc@esilibrary.com>
Fri, 28 Oct 2016 15:40:52 +0000 (11:40 -0400)
committerGalen Charlton <gmc@esilibrary.com>
Wed, 16 Nov 2016 19:52:16 +0000 (14:52 -0500)
This patch contains pgTAP tests for verifying that when
the fingerprint of a bib is changed, it remains part of
exactly one metarecord (as opposed to being part of both
its old and new MRs).

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Signed-off-by: Rogan Hamby <rogan.hamby@gmail.com>
Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
Open-ILS/src/sql/Pg/t/lp1488655_metarecord_remapping.pg [new file with mode: 0644]

diff --git a/Open-ILS/src/sql/Pg/t/lp1488655_metarecord_remapping.pg b/Open-ILS/src/sql/Pg/t/lp1488655_metarecord_remapping.pg
new file mode 100644 (file)
index 0000000..92205a3
--- /dev/null
@@ -0,0 +1,57 @@
+-- tests to verify that metarecord mapping updates happen correctly
+BEGIN;
+
+SELECT plan(4);
+
+INSERT INTO biblio.record_entry (last_xact_id, marc) VALUES (
+    'metarecord-remap-test',
+    $record$<record xmlns="http://www.loc.gov/MARC21/slim">
+  <leader>02137cam a2200457 a 4500</leader>
+  <controlfield tag="001">ocn694080497</controlfield>
+  <controlfield tag="005">20160729104757.0</controlfield>
+  <controlfield tag="008">101217s2011    txu      b    001 0 eng  </controlfield>
+  <datafield tag="245" ind1="0" ind2="0">
+    <subfield code="a">Random Title AFDSDGFJ /</subfield>
+    <subfield code="c">Felix T. Cat.</subfield>
+  </datafield>
+</record>$record$);
+
+SELECT is(
+    (
+        SELECT COUNT(*) FROM metabib.metarecord
+        WHERE master_record = CURRVAL('biblio.record_entry_id_seq')
+    )::INT,
+    1,
+    'unique bib becomes master of just one metarecord'
+);
+SELECT is(
+    (
+        SELECT COUNT(*) FROM metabib.metarecord_source_map
+        WHERE source = CURRVAL('biblio.record_entry_id_seq')
+    )::INT,
+    1,
+    'unique bib part of just one metarecord mapping'
+);
+
+UPDATE biblio.record_entry
+SET marc = REPLACE(marc, 'Random Title AFDSDGFJ', 'Random Title XXDFYLNJ')
+WHERE id = CURRVAL('biblio.record_entry_id_seq');
+
+SELECT is(
+    (
+        SELECT COUNT(*) FROM metabib.metarecord
+        WHERE master_record = CURRVAL('biblio.record_entry_id_seq')
+    )::INT,
+    1,
+    'LP#1488655: after fingerprint change, bib still master of just one metarecord'
+);
+SELECT is(
+    (
+        SELECT COUNT(*) FROM metabib.metarecord_source_map
+        WHERE source = CURRVAL('biblio.record_entry_id_seq')
+    )::INT,
+    1,
+    'LP#1488655: after fingerprint change, bib still in just one metarecord mapping'
+);
+
+ROLLBACK;