35 lines
1.6 KiB
Plaintext
35 lines
1.6 KiB
Plaintext
-- 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;
|