MT.Checks/DB/chk/tests/test_chk_check_delete.psql

41 lines
1.7 KiB
Plaintext

-- Тесты chk.chk_check_delete — по func_specs/chk_check_delete.md (db-tst-6: № = строке таблицы).
-- Запуск: psql -d <тестовая база> -f test_chk_check_delete.psql (одна транзакция, откат в конце).
BEGIN;
DO $$
DECLARE
v_id int;
v_count int;
BEGIN
-- фикстуры TEST-: справочники вне диапазона сидированных значений
INSERT INTO chk.chk_type (id, name) VALUES (990001, 'TEST-тип')
ON CONFLICT (id) DO NOTHING;
INSERT INTO chk.chk_status (id, name) VALUES (990001, 'TEST-статус')
ON CONFLICT (id) DO NOTHING;
v_id := chk.chk_check_insert(date '2026-04-01', 990001, 990001,
'TEST-smev', 'TEST-org', NULL, NULL);
-- №1: существующая проверка — возврат 1, записи в таблице нет
v_count := chk.chk_check_delete(v_id);
SELECT count(*) INTO v_count FROM chk.chk_check WHERE id = v_id;
IF v_count = 0 THEN
RAISE NOTICE 'PASS chk.chk_check_delete #1';
ELSE
RAISE EXCEPTION 'FAIL chk.chk_check_delete #1: запись не удалена';
END IF;
-- №2: несуществующий id — возврат 0
v_count := chk.chk_check_delete(999999999);
IF v_count = 0 THEN
RAISE NOTICE 'PASS chk.chk_check_delete #2';
ELSE
RAISE EXCEPTION 'FAIL chk.chk_check_delete #2: ожидался 0, получено %', v_count;
END IF;
-- удаление фикстур
DELETE FROM chk.chk_type WHERE id = 990001;
DELETE FROM chk.chk_status WHERE id = 990001;
RAISE NOTICE 'ИТОГ chk.chk_check_delete: все проверки выполнены';
END;
$$;
ROLLBACK;