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 Cases
Все тесты запускаются внутри Docker-контейнера:
docker compose exec web python -m pytest
Общее покрытие: ~73% (65+ тест-кейсов).
Юнит-тесты
_is_weight — определение весового товара (test_tasks_vk_sync.py)
ID
Входные данные
Ожидаемый результат
U-01
"г"
True
U-02
"г."
True
U-03
"гр"
True
U-04
"гр."
True
U-05
"грамм"
True
U-06
"граммов"
True
U-07
" Г " (пробелы, верхний регистр)
True
U-08
"кг"
False
U-09
"шт"
False
U-10
"л"
False
U-11
None
False
U-12
""
False
_calc_price — расчёт цены в копейках (test_tasks_vk_sync.py)
ID
Входные данные
VK_WEIGHT_PRICE_MULTIPLIER
Ожидаемый результат
U-13
Decimal("150"), "шт"
10
15000 (150 руб× 100)
U-14
Decimal("50"), "г"
10
50000 (50 × 10 × 100)
U-15
None, "шт"
—
0
U-16
Decimal("0"), "шт"
—
0
_name_for_vk — очистка названия (test_tasks_vk_sync.py)
ID
Входные данные
Ожидаемый результат
U-17
"Чай; зелёный; Китай"
"Чай, зелёный, Китай"
U-18
"Пуэр (выдержанный)"
"Пуэр (выдержанный)"
_build_description — формирование описания (test_tasks_vk_sync.py)
ID
Сценарий
Проверяется
U-19
Весовой товар, "г", нет описания
Содержит "10г" и название
U-20
Штучный товар, есть описание из Эвотора
Содержит текст описания
U-21
Штучный товар, нет описания
Содержит название
_delete_orphans — удаление устаревших товаров VK (test_tasks_vk_sync.py)
ID
Сценарий
Ожидаемый результат
U-22
VK-товар "222" не в owned_ids → удаляется
results["deleted"] == 1, db.delete вызван
U-23
VK API возвращает {"error": {...}}
results["errors"] == 1, db.delete не вызван
U-24
owned_ids пуст → все VK-товары — орфаны
results["deleted"] == 1
_fetch_stores — загрузка магазинов из Эвотора (test_tasks_catalog.py)
ID
Формат ответа API
Ожидаемый результат
U-25
Список [{"id": "s1", ...}]
Список магазинов
U-26
Словарь {"items": [...], "total": 1}
Распаковывает items
_fetch_groups — загрузка групп (test_tasks_catalog.py)
ID
HTTP-статус
Ожидаемый результат
U-27
200
Список групп
U-28
402
None
U-29
403
None
_fetch_products — загрузка товаров (test_tasks_catalog.py)
ID
HTTP-статус
Ожидаемый результат
U-30
200
Список товаров
U-31
402
None
U-32
403
None
Интеграционные тесты — задачи каталога (test_tasks_catalog.py)
Используют SQLite in-memory БД через фикстуру override_db.
ID
Сценарий
Проверяется
I-01
_sync_userс новым магазином
CachedStore создан в БД
I-02
_sync_userс товаром
CachedProduct создан, поля group_evotor_id, allow_to_sell верны
I-03
_fetch_stores бросает исключение
Никаких записей в БД, задача завершается без ошибки
Интеграционные тесты — маршруты каталога (test_routes_catalog.py)