Написать сервис личного банка, взаимодействие с которым реализуется по REST API. Необходимо предоставить работающий сервис и описание API (желательно Postman коллекцией с тестами на указанные кейсы).
Возможности банка и условия его работы:
- Вы там являетесь единственным вкладчиком и у вас там уже открыт счёт.
- Валюта счёта - суверенный лысый попугай SBP (sovereign bald parrot). Дробная часть SBP - это 2х значное суверенное пёрышко - spf (sovereign parrot feather). Курс SBP2RUB обеспечен рабским трудом фрилансеров на галерах и статичен много лет, составляя 0,7523.
- Все операции со счётом производятся в валюте счёта.
- Банк даёт возможность пополнять счёт любыми суммами.
- Банк обеспечивает накопления в размере 6% от суммы на счёте сразу же после каждого пополнения. Сумма дохода складывается на этот же счёт.
- Банк позволяет узнать баланс вашего счёта как в валюте счета (по-умолчанию), так и в RUB.
- Банк предоставляет возможность снятия денег со счёта, но не более 70% от суммы на счёте за раз.
Банк у нас прогрессивный, работает на sqlite базе. Первый запуск сервиса должен создать базу и проинициализировать её.
В репозитории находится интерфейс, который должен реализовывать объект счёта.
Формат входных-выходных данных: JSON
Других ограничений или требований при реализации не предусматривается.
API будет проверено следующими тест-кейсами:
- Успешное пополнение изначального нулевого баланса на 72.00 SBP
- Запрос баланса в SBP. Результат должен быть равен 76.32 SBP
- Успешное пополнение на 37.50 SBP
- Запрос баланса в SBP. Результат должен быть равен 120.65 SBP
- Успешное пополнение на 10.20 SBP
- Запрос баланса в SBP. Результат должен быть равен 138.71SBP
- Неуспешный вывод 127.60 SBP
- Запрос баланса в SBP. Результат должен быть равен 138.71SBP
- Успешный вывод 30.00 SBP
- Запрос баланса в SBP. Результат должен быть равен 108.71SBP
- Запрос баланса в RUB. Результат должен быть равен 81.78RUB
Последовательность действий и проверка результатов следует оформить в Postman тестах (проверяем значение баланса) для ускорения проверки.
Код должен быть оформлен в виде форка данного репозитория.