Необходимо реализовать сервис, который позволит сотрудникам обмениваться монетками и приобретать на них мерч. Каждый сотрудник должен иметь возможность видеть:
- Список купленных им мерчовых товаров
- Сгруппированную информацию о перемещении монеток в его кошельке, включая:
- Кто ему передавал монетки и в каком количестве
- Кому сотрудник передавал монетки и в каком количестве Количество монеток не может быть отрицательным, запрещено уходить в минус при операциях с монетками.
Мерч — это продукт, который можно купить за монетки. Всего в магазине доступно 10 видов мерча. Каждый товар имеет уникальное название и цену. Ниже приведён список наименований и их цены.
Название | Цена |
---|---|
t-shirt | 80 |
cup | 20 |
book | 50 |
pen | 10 |
powerbank | 200 |
hoody | 300 |
umbrella | 200 |
socks | 10 |
wallet | 50 |
pink-hoody | 500 |
Предполагается, что в магазине бесконечный запас каждого вида мерча.
Язык сервиса: Go.
База данных: PostgreSQL.
Для деплоя зависимостей и самого сервиса используйте Docker Compose. Порт доступа к сервису должен быть 8080 и быть доступен снаружи как localhost:8080
.
- Запуск сервиса производится командой docker compose -f ./deploy/Compose.yml up из корневой директории
- Для запуска интеграционных тестов необходимо открыть терминал в директории e2e и запустить команду go test.
- Для тестов сервисы запускаются в docker контейнерах.
- Реализованы E2E-тесты на сценарий покупки мерча, передачи монеток другим сотрудникам, информации о пользователе.
- Результаты стресс-тестов находятся в директории docs/performance
- Во время второго тестирования также был запущен клиент, создающий записи в БД
- Необходимые переменные окружения должны быть определены в .env файлах:
- В корневом каталоге для запуска сервиса
- В каталоге e2e для запуска тестов
- POSTGRES_DB=merch_shop
- POSTGRES_USER=admin
- POSTGRES_PASSWORD=123
- POSTGRES_PORT=5432
- SECRET_KEY="my-secret-key"
- ENV=development
- APPLICATION_PORT=8080
Bearer {Токен}