food-market/tests/conftest.py
Claude efce552e2b Отдельный репозиторий для базы, фасовки товара, ввод истории
Три правки по замечаниям.

1. База и код разъехались по разным репозиториям. Автокоммит и раньше
   трогал только vault.fmdb, но лежал он в той же ветке, что и исходники,
   поэтому пуш тащил всю историю программы. Теперь data/ — самостоятельный
   клон food-records со своим .git, а исходники его игнорируют целиком.
   При первом запуске приложение встаёт на уже существующую историю
   сервера, а не заводит параллельную.

2. Фасовки товара. Пачка печенья 10 шт за 200 ₽ и та же печенька поштучно
   за 30 ₽ — один товар с двумя фасовками. Остатки, себестоимость и FIFO
   считаются в базовых единицах, поэтому поштучные продажи вычитаются из
   купленных пачек. Размер фасовки хранится в документе слепком.
   Миграция схемы 1→2 не меняет поведение уже заведённых данных.

3. Быстрый ввод продаж за период: выбор диапазона дат, строка таблицы —
   отдельная продажа, ввод с клавиатуры, запись всех разом. Незнакомое имя
   заводится как контрагент, повтор периода подсвечивается.

Тесты больше не имеют настроенного remote, чтобы не ходить в сеть.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-22 21:25:39 +03:00

39 lines
1.3 KiB
Python
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.

from datetime import date, timedelta
import pytest
from app import journal
from app.storage import Vault
@pytest.fixture
def vault(tmp_path):
v = Vault.create(tmp_path / "vault.fmdb", "pw")
# По умолчанию адрес репозитория данных уже прописан, а тесты не должны
# ходить в сеть и уж тем более трогать настоящий репозиторий. Проверки
# синхронизации работают против локального bare-репо в test_gitsync.
v.doc.settings.git.remote_url = ""
v.doc.settings.git.enabled = False
v.save(force=True)
return v
@pytest.fixture
def buns(vault):
"""Три булки из примера пользователя, с фиксированными ценами поставщика."""
return {
"повидло": journal.create_product(vault, "Булка с повидлом", cost_price=30, retail_price=50),
"мак": journal.create_product(vault, "Булка с маком", cost_price=20, retail_price=35),
"корица": journal.create_product(vault, "Булка с корицей", cost_price=25, retail_price=40),
}
@pytest.fixture
def today():
return date.today()
@pytest.fixture
def in_two_weeks(today):
return today + timedelta(days=14)