LP1744386: Alphabetize stat cats in volcopy attr editor
[working/Evergreen.git] / Open-ILS / src / sql / Pg / t / lp1145213_test_func_asset.merge_record_assets.pg
1 BEGIN;
2
3 SELECT plan(5);
4
5 ----------------------------------
6 --
7 -- Setup Test environment and data
8 --
9 ----------------------------------
10
11 -- create mock bib records to be merged:
12 -- Data:
13 -- bib 60000 (new lead),           org 4 acn 'F Cline' copy 1
14 -- bib 60001 (merged from target), org 5 acn 'JF cline' copy 2, org 6 acn 'JF Cline' copy 3, org 4 acn 'F Cline' copy 4
15 -- 
16 -- copy 2 ACN
17
18 -- create bib 60,000
19 INSERT into biblio.record_entry (id, marc, last_xact_id)
20   VALUES (60000, 
21   $$
22   <record xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd" xmlns="http://www.loc.gov/MARC21/slim"><leader>00934njm a2200241 a 4500</leader><controlfield tag="001">03-0003745</controlfield><controlfield tag="005">19991118131708.0</controlfield><controlfield tag="008">971016n nyuuuu eng </controlfield><datafield tag="050" ind1=" " ind2=" "><subfield code="a">4539</subfield></datafield><datafield tag="100" ind1="1" ind2=" "><subfield code="a">Bart&#xF3;k, B&#xE9;la,</subfield><subfield code="d">1881-1945.</subfield></datafield><datafield tag="240" ind1=" " ind2=" "><subfield code="t">Concertos,</subfield><subfield code="m">piano,</subfield><subfield code="n">no. 1,</subfield><subfield code="n">Sz. 83</subfield><subfield code="f">(1926) </subfield><subfield code="a">Concertos,</subfield><subfield code="m">piano,</subfield><subfield code="n">no. 1,</subfield><subfield code="n">Sz. 83,</subfield><subfield code="n">(1926)</subfield></datafield><datafield tag="245" ind1=" " ind2=" "><subfield code="a">Piano concerto no. 1 (1926) ; Rhapsody, op. 1 (1904)</subfield></datafield><datafield tag="260" ind1=" " ind2=" "><subfield code="a">New York, NY :</subfield><subfield code="b">Vox</subfield></datafield><datafield tag="300" ind1=" " ind2=" "><subfield code="a">1 sound disc :</subfield><subfield code="b">33 1/3 rpm, stereo.</subfield></datafield><datafield tag="349" ind1=" " ind2=" "><subfield code="a">PHONO RECORD</subfield></datafield><datafield tag="511" ind1=" " ind2=" "><subfield code="a">Gy&#xF6;rgy S&#xE1;ndor, piano ; Sudwest[rund]funkorchester, Baden-Baden ; Rolf Reinhardt, conductor.</subfield></datafield><datafield tag="700" ind1="1" ind2=" "><subfield code="a">S&#xE1;ndor, Gy&#xF6;rgy,</subfield><subfield code="d">1912-</subfield></datafield><datafield tag="700" ind1="1" ind2=" "><subfield code="a">Reinhardt, Rolf</subfield></datafield><datafield tag="710" ind1=" " ind2=" "><subfield code="a">Sudwestrundfunkorchester (Baden-Baden, Germany)</subfield></datafield><datafield tag="730" ind1=" " ind2=" "><subfield code="a">Rhapsodies,</subfield><subfield code="m">piano, orchestra,</subfield><subfield code="n">op. 1,</subfield><subfield code="n">Sz. 27,</subfield><subfield code="n">(1904)</subfield></datafield><datafield tag="901" ind1=" " ind2=" "><subfield code="a">a339398</subfield><subfield code="b">Sirsi_Auto</subfield><subfield code="c">339398</subfield></datafield></record>
23   $$,
24   'PGTAP'
25   );
26
27
28 -- create bib 60,001
29 INSERT into biblio.record_entry (id, marc, last_xact_id)
30   VALUES (60001,
31   $$
32   <record xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd" xmlns="http://www.loc.gov/MARC21/slim"><leader>00863njm a2200253 a 4500</leader><controlfield tag="001">03-0004689</controlfield><controlfield tag="005">19991127191346.0</controlfield><controlfield tag="008">971027r19631952nyuuuu eng </controlfield><datafield tag="050" ind1=" " ind2=" "><subfield code="a">4578</subfield></datafield><datafield tag="100" ind1="1" ind2=" "><subfield code="a">Telemann, Georg Philipp,</subfield><subfield code="d">1681-1767</subfield></datafield><datafield tag="245" ind1=" " ind2=" "><subfield code="a">Viola concerto in G major</subfield></datafield><datafield tag="260" ind1=" " ind2=" "><subfield code="a">New York, NY :</subfield><subfield code="b">Vox,</subfield><subfield code="c">1963</subfield></datafield><datafield tag="300" ind1=" " ind2=" "><subfield code="a">1 sound disc :</subfield><subfield code="b">33 1/3 rpm, mono.</subfield></datafield><datafield tag="349" ind1=" " ind2=" "><subfield code="a">PHONO RECORD</subfield></datafield><datafield tag="505" ind1=" " ind2=" "><subfield code="a">Viola concerto / Telemann -- Viola concerto in D major / Stamitz.</subfield></datafield><datafield tag="511" ind1=" " ind2=" "><subfield code="a">Heinz Wigand, viola ; Pro Musica Orchestra, Stuttgart ; Rolf Reinhardt, conductor.</subfield></datafield><datafield tag="650" ind1=" " ind2="0"><subfield code="a">Concertos (Viola)</subfield></datafield><datafield tag="700" ind1="1" ind2=" "><subfield code="a">Stamitz, Carl,</subfield><subfield code="d">1745-1801</subfield></datafield><datafield tag="700" ind1="1" ind2=" "><subfield code="a">Reinhardt, Rolf</subfield></datafield><datafield tag="700" ind1=" " ind2=" "><subfield code="a">Wigand, Heinz</subfield></datafield><datafield tag="710" ind1="2" ind2=" "><subfield code="a">Pro Musica Orchestra (Stuttgart)</subfield></datafield><datafield tag="901" ind1=" " ind2=" "><subfield code="a">a340312</subfield><subfield code="b">Sirsi_Auto</subfield><subfield code="c">340312</subfield></datafield></record>
33   $$,
34   'PGTAP'
35   );
36
37
38 INSERT into asset.call_number(id, record, creator, editor, owning_lib, label, label_class, prefix)
39     VALUES (999999, 60000, 1, 1, 4, 'Cline', 1, 9986),
40     (1000000,60001, 1, 1, 5, 'Cline', 1, 9987),
41     (1000001,60001, 1, 1, 6, 'Cline', 1, 9988),
42     (1000002,60001, 1, 1, 4, 'Cline', 1, 9986);
43
44 INSERT into asset.call_number_prefix(id, owning_lib, label) VALUES
45     (9986, 4, 'F'),
46     (9987, 5, 'F'),
47     (9988, 6, 'JF');
48
49 -- circ_lib for copy == the same as acn
50 INSERT INTO asset.copy(id, circ_lib, creator, call_number, editor, copy_number, loan_duration, fine_level, barcode) VALUES
51     (905555, 4, 1, 999999, 1, 1, 1, 1, '1copycopycopy'),
52     (906666, 5, 1, 1000000, 1, 1, 1, 1, '2copycopycopy'),
53     (907777, 6, 1, 1000001, 1, 1, 1, 1, '3copycopycopy'),
54     (908888, 4, 1, 1000002, 1, 1, 1, 1, '4copycopycopy');
55
56 -----------------------------------
57 -- Test asset.merge_record_assets() 
58 -----------------------------------
59
60 -- do merge
61 SELECT is(asset.merge_record_assets(60000, 60001), 4, 'Record assets merged!');
62
63 -- check if copy 4's acn was updated
64 SELECT is(
65   (SELECT call_number from asset.copy where id=908888)::BIGINT,
66   999999::BIGINT,
67   'LP 1145213 asset.merge_record_assets() messing up call numbers. copy 4 should have acn -> 999999'
68 );
69
70 -- acn #1,000,002 should be deleted
71 SELECT is(
72   (SELECT deleted FROM asset.call_number WHERE id=1000002)::BOOLEAN,
73   TRUE,
74   'LP 1145213 asset.merge_record_assets() should have deleted acn #1000002'
75 );
76
77 -- all non-deleted acn should point to source bib record #60,000
78 SELECT is(
79   (SELECT count(*) FROM asset.call_number WHERE record=60001 AND not deleted=true)::INT,
80   0::INT,
81   'LP 1145213 asset.merge_record_assets() all call_numbers should point to bib record #60,000 '
82 );
83
84 -- test copies to make sure none point to stale acn
85 SELECT is(
86   (SELECT count(*) from asset.copy where call_number=1000002)::INT,
87   0::INT,
88   'LP 1145213 asset.merge_record_assets() all copies should point to acn #999999 which is for bib record #60,000 '
89 );
90
91 SELECT * FROM finish();
92
93 ROLLBACK;
94