aboutsummaryrefslogtreecommitdiff
path: root/verify/delete_transaction.sql
blob: 9f4d1d898778d2f11d08e23773db3e1083303170 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
-- Verify kakeibo:delete_transaction on pg

BEGIN;

SELECT has_function_privilege('kakeibo.delete_transaction(INTEGER)', 'EXECUTE');

SET search_path = kakeibo;

DO $$
  DECLARE
    v_transaction_id INTEGER;
    v_transaction_id_2 INTEGER;
    v_item_id INTEGER;
  BEGIN
    SELECT insert_transaction(0, '2023-03-15', 'テスト') INTO v_transaction_id;
    SELECT insert_transaction(1, '2023-03-15', 'テスト2') INTO v_transaction_id_2;
    SELECT insert_item(v_transaction_id, 'カテ', 'サブカテ', 298, 'メモ') INTO v_item_id;

    BEGIN
      PERFORM delete_transaction(v_transaction_id);
    EXCEPTION
      WHEN foreign_key_violation THEN
    END;
    PERFORM * FROM transactions WHERE id = v_transaction_id;
    IF NOT FOUND THEN
      RAISE EXCEPTION 'Unexpected delete data.';
    END IF;

    PERFORM delete_item(v_item_id);
    PERFORM delete_transaction(v_transaction_id);
    PERFORM * FROM transactions WHERE id = v_transaction_id;
    IF FOUND THEN
      RAISE EXCEPTION 'Deleted data still exists.';
    END IF;

    PERFORM * FROM transactions WHERE id = v_transaction_id_2;
    IF NOT FOUND THEN
      RAISE EXCEPTION 'Unexpected delete data.';
    END IF;
  END
$$;

ROLLBACK;