-- Тесты chk.chk_check_get — по func_specs/chk_check_get.md (db-tst-6: № = строке таблицы). -- Запуск: psql -d <тестовая база> -f test_chk_check_get.psql (одна транзакция, откат в конце). BEGIN; DO $$ DECLARE v_id int; v_count int; v_date date; v_smev text; v_org text; v_json jsonb; 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-06-01', 990001, 990001, 'TEST-smev', 'TEST-org', '{"a": 1}', NULL); -- №1: существующий id — 1 строка, все колонки = значениям записи SELECT count(*), max(check_date), max(smev_message_id), max(rr_organization_id), max(params) INTO v_count, v_date, v_smev, v_org, v_json FROM chk.chk_check_get(v_id); IF v_count = 1 AND v_date = date '2026-06-01' AND v_smev = 'TEST-smev' AND v_org = 'TEST-org' AND v_json = '{"a": 1}'::jsonb THEN RAISE NOTICE 'PASS chk.chk_check_get #1'; ELSE RAISE EXCEPTION 'FAIL chk.chk_check_get #1: поля не совпали'; END IF; -- №2: несуществующий id — пустая таблица SELECT count(*) INTO v_id FROM chk.chk_check_get(999999999); IF v_id = 0 THEN RAISE NOTICE 'PASS chk.chk_check_get #2'; ELSE RAISE EXCEPTION 'FAIL chk.chk_check_get #2: ожидалась пустая таблица'; END IF; -- №3: NULL p_id — исключение BEGIN PERFORM chk.chk_check_get(NULL); RAISE EXCEPTION 'FAIL chk.chk_check_get #3: исключения не было'; EXCEPTION WHEN raise_exception THEN RAISE NOTICE 'PASS chk.chk_check_get #3: %', SQLERRM; END; -- удаление фикстур PERFORM chk.chk_check_delete(v_id); DELETE FROM chk.chk_type WHERE id = 990001; DELETE FROM chk.chk_status WHERE id = 990001; RAISE NOTICE 'ИТОГ chk.chk_check_get: все проверки выполнены'; END; $$; ROLLBACK;