Удалена вся документация .md из репозитория

- Удалены все файлы .md (30 файлов)
- Добавлена маска *.md в .gitignore для защиты от будущих коммитов
- Причина: .md файлы содержали примеры паролей и внутреннюю документацию

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-12-02 15:05:46 +03:00
parent 387f5dfdb4
commit 384f3c22f8
31 changed files with 3 additions and 7947 deletions

View File

@@ -1,137 +0,0 @@
# 🧪 Критические тесты переходов между статусами заказов
## 📋 Описание
Набор из **5 критических тестов**, проверяющих корректность работы системы резервирования и списания товаров при переходах между статусами заказов.
## 🎯 Тестируемые сценарии
### 1⃣ **Тест "Танцы туда-сюда"** (`test_01_draft_to_completed_to_cancelled_to_completed`)
Проверяет множественные переходы между статусами:
- `draft``completed``cancelled``completed` (снова)
- **Цель:** Убедиться что Sale не дублируется при повторном переходе в `completed`
### 2⃣ **Тест отмены из черновика** (`test_02_draft_to_cancelled_releases_reservations`)
Проверяет освобождение резервов при отмене:
- `draft``cancelled`
- **Цель:** Резервы должны корректно освобождаться
### 3⃣ **Тест возврата из отмены** (`test_03_cancelled_to_pending_reserves_stock`)
Проверяет резервирование при возврате:
- `draft``cancelled``pending`
- **Цель:** Резервы должны восстанавливаться при возврате из отмены
### 4⃣ **Тест промежуточного статуса** (`test_04_create_order_with_intermediate_status`)
Проверяет создание заказа с новым статусом:
- Создание заказа сразу со статусом "Упаковывается" (не positive, не negative)
- **Цель:** Система должна работать с любыми промежуточными статусами
### 5⃣ **Тест отката от выполненного** (`test_05_completed_to_draft_rollback_sale`)
Проверяет откат Sale:
- `draft``completed``draft`
- **Цель:** Sale должен корректно откатываться, товар возвращаться на склад
## 🚀 Запуск тестов
### Запуск всех тестов:
```bash
cd myproject
python manage.py test inventory.tests.test_order_status_transitions
```
### Запуск конкретного теста:
```bash
python manage.py test inventory.tests.test_order_status_transitions.OrderStatusTransitionCriticalTest.test_01_draft_to_completed_to_cancelled_to_completed
```
### Запуск с подробным выводом:
```bash
python manage.py test inventory.tests.test_order_status_transitions --verbosity=2
```
## ✅ Что проверяет каждый тест
Все тесты проверяют **3 критических аспекта**:
### 1. **Корректность Stock**
- `quantity_available` - доступное количество
- `quantity_reserved` - зарезервированное количество
- `quantity_free` - свободное количество (available - reserved)
### 2. **Корректность Reservation**
- Статус резерва (`reserved`, `converted_to_sale`, `released`)
- Переходы между статусами при изменении статуса заказа
### 3. **Корректность Sale и StockBatch**
- Sale не дублируется при повторных переходах
- StockBatch корректно уменьшается/восстанавливается
- SaleBatchAllocation создаётся только один раз
## 🔍 Пример вывода успешного теста
```
test_01_draft_to_completed_to_cancelled_to_completed ... ok
test_02_draft_to_cancelled_releases_reservations ... ok
test_03_cancelled_to_pending_reserves_stock ... ok
test_04_create_order_with_intermediate_status ... ok
test_05_completed_to_draft_rollback_sale ... ok
----------------------------------------------------------------------
Ran 5 tests in 2.341s
OK
```
## ⚠️ Важные особенности
1. **Тесты используют TransactionTestCase** - каждый тест выполняется в отдельной транзакции
2. **Создаётся отдельная схема БД** `test_order_status` для изоляции
3. **После каждого теста данные очищаются** - тесты не влияют друг на друга
4. **Тесты работают с тенантами** - используется `schema_context()`
## 🐛 Если тесты падают
### Проверьте сигналы:
- `inventory/signals.py` - все сигналы должны быть подключены
- `inventory/apps.py` - сигналы должны импортироваться в `ready()`
### Проверьте модели:
- `Reservation.status` - должны быть варианты: `reserved`, `converted_to_sale`, `released`
- `OrderStatus` - должны быть флаги `is_positive_end`, `is_negative_end`
### Проверьте БД:
```bash
python manage.py migrate
```
## 📝 Добавление новых тестов
Чтобы добавить новый тест:
1. Создайте метод в классе `OrderStatusTransitionCriticalTest`
2. Начните имя с `test_` (обязательно!)
3. Используйте вспомогательные методы:
- `_create_order(status, quantity)` - создать заказ
- `_assert_stock_state(available, reserved, free)` - проверить Stock
- `_assert_reservation_status(order, expected_status)` - проверить резерв
- `_assert_sale_exists(order, should_exist)` - проверить Sale
Пример:
```python
def test_06_my_new_scenario(self):
"""Описание сценария"""
with schema_context('test_order_status'):
order = self._create_order(self.status_draft, quantity=Decimal('10.00'))
# Ваши проверки
self._assert_stock_state(
available=Decimal('100.00'),
reserved=Decimal('10.00'),
free=Decimal('90.00')
)
```
## 🎓 Дополнительная информация
- Документация Django Testing: https://docs.djangoproject.com/en/stable/topics/testing/
- Django Tenants Testing: https://django-tenants.readthedocs.io/en/latest/test.html