feat: migrate to VitePress from monorepo docs, add test-contour section
This commit is contained in:
+211
@@ -0,0 +1,211 @@
|
||||
# Проверка локального контура
|
||||
|
||||
Эта страница описывает, как быстро убедиться, что локальные `backend`, `cabinet`, БД и тестовые данные работают корректно.
|
||||
|
||||
## Подготовка
|
||||
|
||||
Запустите локальный контур и соберите ассеты cabinet:
|
||||
|
||||
```bash
|
||||
make local-up
|
||||
make local-assets
|
||||
```
|
||||
|
||||
Если нужно заново пересоздать тестовые данные:
|
||||
|
||||
```bash
|
||||
make local-seed
|
||||
```
|
||||
|
||||
## Автоматическая smoke-проверка
|
||||
|
||||
Основная команда проверки:
|
||||
|
||||
```bash
|
||||
make local-smoke
|
||||
```
|
||||
|
||||
Она проверяет:
|
||||
|
||||
- Swagger backend: `http://localhost:8081/docs`;
|
||||
- Swagger cabinet: `http://localhost:8082/api/swagger`;
|
||||
- backend авторизацию через JWT;
|
||||
- backend справочники филиалов, отделений, врачей и прайса;
|
||||
- cabinet страницу логина;
|
||||
- cabinet авторизацию тестовым пользователем;
|
||||
- cabinet главную страницу после логина;
|
||||
- cabinet API баннера, прайса и врачей.
|
||||
|
||||
Успешный результат выглядит так:
|
||||
|
||||
```text
|
||||
== Backend ==
|
||||
OK backend swagger UI (200)
|
||||
OK backend swagger JSON (200)
|
||||
OK backend login
|
||||
OK backend filial list
|
||||
OK backend department list
|
||||
OK backend specialist list
|
||||
OK backend price list
|
||||
|
||||
== Cabinet ==
|
||||
OK cabinet login page (200)
|
||||
OK cabinet swagger UI (200)
|
||||
OK cabinet swagger JSON (200)
|
||||
OK cabinet login response
|
||||
OK cabinet authenticated home (200)
|
||||
OK cabinet banner API
|
||||
OK cabinet price departments API
|
||||
OK cabinet doctors API
|
||||
|
||||
Local smoke test passed.
|
||||
```
|
||||
|
||||
## Тестовые пользователи
|
||||
|
||||
Backend API:
|
||||
|
||||
- login: `local.backend@example.test`
|
||||
- password: `local-password`
|
||||
- uid: `100001`
|
||||
- region: `91`
|
||||
- роли: `ROLE_USER`, `ROLE_ADMIN`
|
||||
|
||||
Cabinet:
|
||||
|
||||
- login: `local.cabinet@example.test`
|
||||
- password: `local-password`
|
||||
- uid: `200001`
|
||||
- роли: `ROLE_USER`, `ROLE_ADMIN`
|
||||
|
||||
## Ручная проверка в браузере
|
||||
|
||||
1. Откройте `http://localhost:8081/docs`.
|
||||
Должна открыться Swagger UI backend.
|
||||
|
||||
2. Откройте `http://localhost:8082/api/swagger`.
|
||||
Должна открыться Swagger UI cabinet.
|
||||
|
||||
3. Откройте `http://localhost:8082/login`.
|
||||
Должна открыться страница входа без ошибки `500`.
|
||||
|
||||
4. Войдите в cabinet:
|
||||
- email: `local.cabinet@example.test`;
|
||||
- password: `local-password`.
|
||||
|
||||
5. После входа должна открыться главная cabinet: `http://localhost:8082/`.
|
||||
|
||||
6. Откройте публичные API cabinet:
|
||||
- `http://localhost:8082/api/banner/91`;
|
||||
- `http://localhost:8082/api/pricelist/departments`;
|
||||
- `http://localhost:8082/api/doctors/91`.
|
||||
|
||||
## Ручная проверка backend API
|
||||
|
||||
Получить JWT:
|
||||
|
||||
```bash
|
||||
TOKEN=$(curl -sS \
|
||||
-X POST http://localhost:8081/user/login \
|
||||
-H 'Content-Type: application/json' \
|
||||
--data '{"username":"local.backend@example.test","password":"local-password"}' \
|
||||
| python3 -c 'import sys,json; print(json.load(sys.stdin)["token"])')
|
||||
```
|
||||
|
||||
Проверить текущего пользователя:
|
||||
|
||||
```bash
|
||||
curl -sS http://localhost:8081/user/ \
|
||||
-H "Authorization: Bearer $TOKEN" \
|
||||
| python3 -m json.tool
|
||||
```
|
||||
|
||||
Ожидаемый смысл ответа: `successful: true`, `uid: 100001`, `regionId: 91`.
|
||||
|
||||
Проверить филиалы:
|
||||
|
||||
```bash
|
||||
curl -sS 'http://localhost:8081/filial/list?regionId=91' \
|
||||
| python3 -m json.tool
|
||||
```
|
||||
|
||||
В ответе должен быть филиал `Сова Local`.
|
||||
|
||||
Проверить отделения:
|
||||
|
||||
```bash
|
||||
curl -sS http://localhost:8081/department/list \
|
||||
| python3 -m json.tool
|
||||
```
|
||||
|
||||
В ответе должно быть отделение `Терапия`.
|
||||
|
||||
Проверить врачей:
|
||||
|
||||
```bash
|
||||
curl -sS 'http://localhost:8081/specialist/list?regionId=91' \
|
||||
| python3 -m json.tool
|
||||
```
|
||||
|
||||
В ответе должен быть врач `Иванов Иван Иванович` с alias `ivanov-ivan`.
|
||||
|
||||
Проверить прайс:
|
||||
|
||||
```bash
|
||||
curl -sS http://localhost:8081/pricelist/list \
|
||||
| python3 -m json.tool
|
||||
```
|
||||
|
||||
В ответе должна быть услуга `Прием терапевта` с локальной ценой.
|
||||
|
||||
## Ручная проверка cabinet API
|
||||
|
||||
Проверить баннер региона:
|
||||
|
||||
```bash
|
||||
curl -sS http://localhost:8082/api/banner/91 \
|
||||
| python3 -m json.tool
|
||||
```
|
||||
|
||||
Ожидается JSON с `active: true`.
|
||||
|
||||
Проверить группы прайса:
|
||||
|
||||
```bash
|
||||
curl -sS http://localhost:8082/api/pricelist/departments \
|
||||
| python3 -m json.tool
|
||||
```
|
||||
|
||||
В ответе должна быть группа `Консультации`.
|
||||
|
||||
Проверить список врачей:
|
||||
|
||||
```bash
|
||||
curl -sS http://localhost:8082/api/doctors/91 \
|
||||
| python3 -m json.tool
|
||||
```
|
||||
|
||||
В ответе должен быть врач `Иванов Иван Иванович`, отзывы и прайс.
|
||||
|
||||
## Что делать при ошибках
|
||||
|
||||
Если `cabinet /login` отдает `500` с ошибкой про `public/build/entrypoints.json`, соберите ассеты:
|
||||
|
||||
```bash
|
||||
make local-assets
|
||||
```
|
||||
|
||||
Если API отдает пустые данные или ошибки типов, пересоздайте seed:
|
||||
|
||||
```bash
|
||||
make local-seed
|
||||
make local-smoke
|
||||
```
|
||||
|
||||
Если контейнеры были пересозданы с нуля:
|
||||
|
||||
```bash
|
||||
make local-up
|
||||
make local-assets
|
||||
make local-smoke
|
||||
```
|
||||
Reference in New Issue
Block a user