From: Liam Whalen Date: Mon, 3 Mar 2014 19:22:01 +0000 (-0800) Subject: LP#800487 Modifed Bill's pgTab test for acq.transfer_fund X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=refs%2Fheads%2Fuser%2Fldw%2FLP800478_fund_transfer;p=working%2FEvergreen.git LP#800487 Modifed Bill's pgTab test for acq.transfer_fund --- diff --git a/Open-ILS/src/sql/Pg/t/acq_fund_transfer.pg b/Open-ILS/src/sql/Pg/t/acq_fund_transfer.pg new file mode 100644 index 0000000000..7854893bc9 --- /dev/null +++ b/Open-ILS/src/sql/Pg/t/acq_fund_transfer.pg @@ -0,0 +1,75 @@ +BEGIN; + +SELECT plan(2); + +INSERT INTO acq.funding_source (name, owner, currency_type, code) + VALUES ('FS1', 1, 'USD', 'FS1'); + +INSERT INTO acq.funding_source_credit (funding_source, amount, deadline_date ) +VALUES + ( + (SELECT id FROM acq.funding_source WHERE name = 'FS1'), + 300, + NOW() + '1 DAY'::INTERVAL + ), ( + (SELECT id FROM acq.funding_source WHERE name = 'FS1'), + 500, + NULL -- no deadline_date ensures this credit will be used first + -- for transfers, giving us a predictable (testable) outcome. + ); + +INSERT INTO acq.fund (org, name, year, currency_type, active) VALUES + (1, 'F1', '2014', 'USD', TRUE), + (1, 'F2', '2014', 'USD', TRUE); + +-- LP#800478 +-- allocation must exceed transfer amount but be less than total credits +INSERT INTO acq.fund_allocation + (funding_source, fund, amount, fund_amount, allocator, note) +VALUES ( + (SELECT id FROM acq.funding_source WHERE name = 'FS1'), + (SELECT id FROM acq.fund WHERE name = 'F1'), + 700 , 700, 1, 'test' +); + +-- LP#800478 +-- transfer amount must exceed any one funding source credit but be less +-- than the allocation amount +SELECT acq.transfer_fund( + (SELECT id FROM acq.fund WHERE name = 'F1'), 600, + (SELECT id FROM acq.fund WHERE name = 'F2'), 1, 'test' +); + +-- fund transfer should show 600 moved between funds +-- 500 from the 500 credit, 100 from the 300 credit +SELECT is( + ( + SELECT ARRAY_AGG(dest_amount) FROM ( + SELECT dest_amount FROM acq.fund_transfer + WHERE + src_fund = (SELECT id FROM acq.fund WHERE name = 'F1') AND + dest_fund = (SELECT id FROM acq.fund WHERE name = 'F2') + ORDER BY dest_amount + ) dest_amount + ), + '{100.00,500.00}', + 'Transfer amount should be 100 and 500' +); + +-- destination fund should have a 600 allocation +SELECT is( + ( + SELECT ARRAY_AGG(amount) FROM ( + SELECT amount FROM acq.fund_allocation + WHERE + funding_source = + (SELECT id FROM acq.funding_source WHERE name = 'FS1') AND + fund = (SELECT id FROM acq.fund WHERE name = 'F2') + ORDER BY amount + ) amount + ), + '{100.00,500.00}', + 'Allocation amount should be 100 and 500' +); + +ROLLBACK;