# 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: новая функциональность
```
