73 lines
3.2 KiB
Plaintext
73 lines
3.2 KiB
Plaintext
-- Тесты chk.chk_check_update — по func_specs/chk_check_update.md (db-tst-6: № = строке таблицы).
|
|
-- Запуск: psql -d <тестовая база> -f test_chk_check_update.psql (одна транзакция, откат в конце).
|
|
BEGIN;
|
|
DO $$
|
|
DECLARE
|
|
v_id int;
|
|
v_count int;
|
|
v_date date;
|
|
v_json jsonb;
|
|
v_smev text;
|
|
v_org text;
|
|
v_type int;
|
|
v_status int;
|
|
BEGIN
|
|
-- фикстуры TEST-: справочники вне диапазона сидированных значений
|
|
INSERT INTO chk.chk_type (id, name) VALUES (990001, 'TEST-тип до')
|
|
ON CONFLICT (id) DO NOTHING;
|
|
INSERT INTO chk.chk_type (id, name) VALUES (990002, 'TEST-тип после')
|
|
ON CONFLICT (id) DO NOTHING;
|
|
INSERT INTO chk.chk_status (id, name) VALUES (990001, 'TEST-статус до')
|
|
ON CONFLICT (id) DO NOTHING;
|
|
INSERT INTO chk.chk_status (id, name) VALUES (990002, 'TEST-статус после')
|
|
ON CONFLICT (id) DO NOTHING;
|
|
v_id := chk.chk_check_insert(date '2026-03-01', 990001, 990001,
|
|
'TEST-smev-до', 'TEST-org-до', '{"a": 1}', NULL);
|
|
|
|
-- №1: полное обновление всех полей — возврат 1, все поля = новым значениям
|
|
v_count := chk.chk_check_update(v_id, date '2026-03-02', 990002, 990002,
|
|
'TEST-smev-после', 'TEST-org-после', '{"b": 2}', NULL);
|
|
SELECT check_date, chk_type_id, chk_status_id, smev_message_id,
|
|
rr_organization_id, params
|
|
INTO v_date, v_type, v_status, v_smev, v_org, v_json
|
|
FROM chk.chk_check_get(v_id);
|
|
IF v_count = 1
|
|
AND v_date = date '2026-03-02'
|
|
AND v_type = 990002
|
|
AND v_status = 990002
|
|
AND v_smev = 'TEST-smev-после'
|
|
AND v_org = 'TEST-org-после'
|
|
AND v_json = '{"b": 2}'::jsonb THEN
|
|
RAISE NOTICE 'PASS chk.chk_check_update #1';
|
|
ELSE
|
|
RAISE EXCEPTION 'FAIL chk.chk_check_update #1: поля не совпали';
|
|
END IF;
|
|
|
|
-- №2: несуществующий id — возврат 0
|
|
v_count := chk.chk_check_update(999999999, date '2026-03-02', 990002, 990002,
|
|
NULL, NULL, NULL, NULL);
|
|
IF v_count = 0 THEN
|
|
RAISE NOTICE 'PASS chk.chk_check_update #2';
|
|
ELSE
|
|
RAISE EXCEPTION 'FAIL chk.chk_check_update #2: ожидался 0, получено %', v_count;
|
|
END IF;
|
|
|
|
-- №3: NULL p_id — исключение
|
|
BEGIN
|
|
PERFORM chk.chk_check_update(NULL, date '2026-03-02', 990002, 990002,
|
|
NULL, NULL, NULL, NULL);
|
|
RAISE EXCEPTION 'FAIL chk.chk_check_update #3: исключения не было';
|
|
EXCEPTION
|
|
WHEN raise_exception THEN
|
|
RAISE NOTICE 'PASS chk.chk_check_update #3: %', SQLERRM;
|
|
END;
|
|
|
|
-- удаление фикстур
|
|
PERFORM chk.chk_check_delete(v_id);
|
|
DELETE FROM chk.chk_type WHERE id IN (990001, 990002);
|
|
DELETE FROM chk.chk_status WHERE id IN (990001, 990002);
|
|
RAISE NOTICE 'ИТОГ chk.chk_check_update: все проверки выполнены';
|
|
END;
|
|
$$;
|
|
ROLLBACK;
|