Учебный пример для вебинара по тестированию.
Сервис выполняет следующие задачи.
- Создание корзины пользователя. Корзина создается при добавлении в нее первых товаров.
- Добавление товара в корзину пользователя.
- Удаление товара из корзины пользователя
- Удаление корзины пользователя, при оплате.
- Получение состояния корзины пользователя.
- PUT /api/v1/cart/{id} // id пользователя
[
{"good1": 1}, // название количетвотоваров,
{"good2": 1} // название количетвотоваров,
]
-
201 - создано
-
500 - ошибка
-
DELETE /api/v1/cart/{id}/{good_id} // id пользователя good_id - id товара
-
204 - удалено
-
404 - не найдено
-
500 - ошибка
-
POST /api/v1/buy/{id} //
-
200
{
{
"good1": {
"qty" : 0
"status" : "NO_STOCKS"
},
"good2":{
"qty" : 0
"status" : "NOT_FOUND"
},
"good3":{
"qty" : 100
"status" : "OK"
},
}
- 400
GET api/v1/cart/{id}
{
{
"good1": {
"qty" : 0
"status" : "NO_STOCKS"
},
"good2":{
"qty" : 0
"status" : "NOT_FOUND"
},
"good3":{
"qty" : 100
"status" : "OK"
},
}
- Добавление товара в корзину пользователя.
- Удаление товара из корзины пользователя
- Удаление корзины пользователя, при оплате.
- Получение состояния корзины пользователя.
Сервис взаимодействует с внешним сервисом склада.
API склада
- Запросить есть ли товары на складе
- GET /api/v1/goods/{id}
- 200
{
"stocks": 100 // количетво товаров
}
-
404 - Товар не найден
-
500 внетренняя ошибка
-
Отправить товар(ы) со склада в доставку.
-
PUT /api/v1/goods/{id}
{
"stocks": 10, // отправить 10 товаров в доставку
"user_id": uuid // пользователю с id
}
Логика взаимодействия.
При добавлении товара, проверяется есть ли товар на складе, если есть, до резервируем и добавляем в корзину При покупке корзины - отправить товары в доставку. При получении корзины пользователя проверяем есть ли товары на складе.
TODO: добавить резервирование товаров