LP#937789: various improvements to logical deletion of parts user/gmcharlt/lp937789_logical_parts_deletion
authorGalen Charlton <gmc@esilibrary.com>
Thu, 29 Oct 2015 15:39:16 +0000 (15:39 +0000)
committerGalen Charlton <gmc@esilibrary.com>
Thu, 29 Oct 2015 15:47:21 +0000 (15:47 +0000)
commitca3f29e09405b83e6bd773e1f575925688699ab6
tree2ba8d4a9f02ed9750d2f9a710f8885e82bda75e1
parenta48e7de925ca3d159a3969dd0f48ad88a4745596
LP#937789: various improvements to logical deletion of parts

This patch ensures that when a monograph part is marked as
deleted, that mappings between it and its copies are also
removed, similar to the previous behavior of the cascade
on delete.

This patch also adds some pgTAP tests and ensures that
unapi.bmp() and unapi.holdings_xml() get updated during upgrade.

To test the fix for this bug:

[1] Apply the patches.
[2] Create a monograph part on a record, then delete it. Verify that
    it no longer shows up in the parts maintenance interface, but that
    a row in the biblio.monograph_parts table still exists with the
    deleted flag set to true.
[3] Create another monograph part on the same record.
[4] Create a new volume/copy and assign the part created in step
    3 to it. Verify that the part shown in step 2 is *not*
    included in the XUL part selector.
[5] Place a part-level hold. Verify that the hold request
    is displayed correct in both the public catalog and the staff
    interface.
[6] Delete the part created in step 3.
[7] Verify that viewing the list of the patron's holds in the XUL staff
    client doesn't result in any 'network errors'.  Also verify that
    the hold request is still displayed in patron's view in the public
    catalog.
[8] Using SQL or some other means, set the expire_time and
    prev_check_time of the test hold request to a couple days in the
    past, then run the hold targeter.  Verify that the hold gets
    cancelled for lack of a suitable copy to fill it.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Open-ILS/src/sql/Pg/800.fkeys.sql
Open-ILS/src/sql/Pg/t/regress/lp937789_fake_bmp_delete.sql [new file with mode: 0644]
Open-ILS/src/sql/Pg/upgrade/XXXX.schema.fake-delete-parts.sql