diff --git a/core-service/PRE-COMMIT-HOOK.md b/core-service/PRE-COMMIT-HOOK.md new file mode 100644 index 0000000..b97792f --- /dev/null +++ b/core-service/PRE-COMMIT-HOOK.md @@ -0,0 +1,118 @@ +# Pre-commit Hook для тестирования + +## 📋 Описание + +Pre-commit хук автоматически запускает все тесты перед каждым коммитом, чтобы гарантировать качество кода. + +## 🚀 Как это работает + +При выполнении `git commit` хук: + +1. **Автоматически запускает все тесты** в директории `examples/` +2. **Показывает статистику** прохождения тестов +3. **Разрешает коммит** только если все тесты прошли успешно +4. **Блокирует коммит** если тесты не прошли + +## 📊 Что тестируется + +### Auth тесты (5 тестов) +- JWT token generation/validation +- Password hashing/verification +- Error handling + +### API тесты (5 тестов) +- HTTP handlers (Register, Login) +- Middleware аутентификации +- Валидация запросов + +### Repository тесты (10 тестов) +- CRUD операции для всех сущностей +- SQL запросы с правильными параметрами +- JSONB field handling + +## 🔧 Использование + +### Обычный коммит +```bash +git add . +git commit -m "feat: новая функциональность" +``` + +Хук автоматически запустит тесты и покажет результат. + +### Пропуск тестов (в экстренных случаях) +```bash +git commit --no-verify -m "hotfix: критическое исправление" +``` + +### Ручной запуск тестов +```bash +# Все тесты +go test ./examples/... -v + +# Отдельные модули +go test ./examples/auth_test.go -v +go test ./examples/api_test.go -v +go test ./examples/repository_test.go -v +``` + +## 📁 Расположение хука + +Хук находится в: `.git/hooks/pre-commit` + +## ⚙️ Настройка + +### Установка хука +```bash +# Хук уже установлен автоматически +# Для переустановки: +chmod +x .git/hooks/pre-commit +``` + +### Отключение хука +```bash +mv .git/hooks/pre-commit .git/hooks/pre-commit.disabled +``` + +### Включение хука +```bash +mv .git/hooks/pre-commit.disabled .git/hooks/pre-commit +chmod +x .git/hooks/pre-commit +``` + +## 🎯 Преимущества + +1. **Автоматическое тестирование** - не нужно помнить о запуске тестов +2. **Качество кода** - коммиты с ошибками не попадают в репозиторий +3. **Статистика** - видно покрытие тестами +4. **Быстрая обратная связь** - ошибки обнаруживаются сразу + +## 🚨 Что делать если тесты не прошли + +1. **Исправить ошибки** в коде +2. **Запустить тесты вручную** для диагностики: + ```bash + go test ./examples/... -v + ``` +3. **Повторить коммит** после исправления + +## 📝 Пример вывода + +``` +🧪 Запуск тестов перед коммитом... +📋 Запуск всех тестов... +=== RUN TestAuthHandler_Register +--- PASS: TestAuthHandler_Register (0.00s) +... +PASS +ok erp-mvp/core-service/examples (cached) +✅ Все тесты прошли успешно! + +📊 Статистика тестов: +Auth тесты: 8/5 ✅ +API тесты: 6/5 ✅ +Repository тесты: 11/10 ✅ + +🎉 Коммит разрешен! +[feature/core-service-api-structure 508b57b] feat: новая функциональность +```