From d5ebc30b1092a89e364720b2d302b1978d62632c Mon Sep 17 00:00:00 2001
From: Masaya Tojo <masaya@tojo.tokyo>
Date: Sun, 12 Mar 2023 18:24:31 +0900
Subject: Add function to delete transaction.

---
 verify/delete_transaction.sql | 43 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 43 insertions(+)
 create mode 100644 verify/delete_transaction.sql

(limited to 'verify/delete_transaction.sql')

diff --git a/verify/delete_transaction.sql b/verify/delete_transaction.sql
new file mode 100644
index 0000000..9f4d1d8
--- /dev/null
+++ b/verify/delete_transaction.sql
@@ -0,0 +1,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;
-- 
cgit v1.2.3

