-- Тесты chk.chk_status_select — по func_specs/chk_status_select.md (db-tst-6: № = строке таблицы). -- Запуск: psql -d <тестовая база> -f test_chk_status_select.psql (одна транзакция, откат в конце). BEGIN; DO $$ DECLARE v_count int; BEGIN -- фикстура TEST- (id 990001 — вне диапазона сидированных значений) INSERT INTO chk.chk_status (id, name) VALUES (990001, 'TEST-статус проверки') ON CONFLICT (id) DO UPDATE SET name = EXCLUDED.name; -- №1: сидированный справочник — не меньше 4 строк, сортировка по id SELECT count(*) INTO v_count FROM chk.chk_status_select(); IF v_count >= 4 THEN RAISE NOTICE 'PASS chk.chk_status_select #1'; ELSE RAISE EXCEPTION 'FAIL chk.chk_status_select #1: строк %, ожидалось >= 4', v_count; END IF; -- №2: фикстура TEST- присутствует в результате SELECT count(*) INTO v_count FROM chk.chk_status_select() WHERE id = 990001; IF v_count = 1 THEN RAISE NOTICE 'PASS chk.chk_status_select #2'; ELSE RAISE EXCEPTION 'FAIL chk.chk_status_select #2: фикстура не найдена'; END IF; -- удаление фикстур DELETE FROM chk.chk_status WHERE id = 990001; RAISE NOTICE 'ИТОГ chk.chk_status_select: все проверки выполнены'; END; $$; ROLLBACK;