VEU.WathBody/2-db/ref/tests/test_exercise_group_select....

35 lines
1.6 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- test_exercise_group_select: тесты ref.exercise_group_select (спецификация — func_specs\exercise_group_select.md).
-- Запуск: в pgAdmin (Query Tool), целиком; при FAIL — исключение, транзакция откатывается.
-- Тест #2 требует пустого справочника — выполняется на тестовой базе до seed
-- либо с временно пустой таблицей (здесь: проверка состава после seed).
BEGIN;
DO $$
DECLARE
v_count int;
v_codes text;
BEGIN
-- #2 граничный случай: пустой справочник (до seed) — проверяем на очищенной таблице
CREATE TEMP TABLE ref_exercise_group_bak ON COMMIT DROP AS
SELECT * FROM ref.exercise_group;
DELETE FROM ref.exercise_group;
SELECT count(*) INTO v_count FROM ref.exercise_group_select();
IF v_count <> 0 THEN
RAISE EXCEPTION 'FAIL ref.exercise_group_select #2: ожидалось 0 строк, got %', v_count;
END IF;
INSERT INTO ref.exercise_group SELECT * FROM ref_exercise_group_bak;
RAISE NOTICE 'PASS ref.exercise_group_select #2';
-- #1 основной сценарий: seed из миграции 001
SELECT count(*), string_agg(code, ',' ORDER BY id) INTO v_count, v_codes
FROM ref.exercise_group_select();
IF v_count <> 5 OR v_codes <> 'push,pull,legs,core,cardio' THEN
RAISE EXCEPTION 'FAIL ref.exercise_group_select #1: got % / %', v_count, v_codes;
END IF;
RAISE NOTICE 'PASS ref.exercise_group_select #1';
END;
$$;
ROLLBACK;