Добрый день! У меня большая просьба к проверяющим. Если решение не проходит - пожалуйста, дайте фидбек по ошибкам, если это возможно, чтоб я мог проработать их - для меня это очень важно.
Небольшие отклонения от задания
- У ручки Login в API только 2 статус кода 200 и 401 в документации. Добавил к ним Bad Request (400).
- Ручка dummyLogin логинится через заранее созданных на этапе миграции пользователей для теста (dummy_moderator@test.com и dummy_employee@test.com), поэтому возвращает еще статус код 401.
- Сущность Пункт приёма заказов (ПВЗ) помимо прочих полей содержит также ID пользователя. На этапе проектирования сделал так, не успел переделать.
- Тестовое покрытие считал средним по usecase, storage, middlewares и delivery.
- Добавил чуть больше интеграционных тестов, которые проверяют граничные случаи.
Инструкция по запуску
Для работы потребуется docker-compose, goose(для удобства работы с миграциями), make
Порядок запуска приложения:
- В корневой директории выполните:
make start-windows
- Перейдите в директорию cmd и запустите приложение:
go run .
Сервер запустится на порту 8080.
Порядок запуска приложения (не используя make):
- В корневой директории выполните:
docker-compose -f .\docker-compose.dev.yml up -d
- Перейдите по пути internal\storage\migrations и выполните команды:
goose postgres "postgres://postgres:postgres@localhost:5432/postgres?sslmode=disable" up
goose postgres "postgres://postgres_test:postgres_test@localhost:5433/postgres_test?sslmode=disable" up
- Перейдите в директорию cmd и запустите приложение:
go run .
Сервер запустится на порту 8080.
Как запускать тесты?
Тесты лучше запускать через make.
run-all-tests
Во-первых, там используется репо для анализа покрытия тестов.
Во вторых, при интеграционном тестировании используется тестовая БД, которая сбрасывается откатом миграции.