Skip to content

renatmedved/mindbox-test

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

69 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Примеры тел для post запросов

  • {type: 'triangle', description: {base: 88.4, height: 33}}
  • {type: 'circle', description: {radius: 88.4}}

В ответ придёт json с полями

  • errors - если пусто, значит всё ок
  • data - структура с данными

Как добавить новую фигуру

  1. в проекте MindboxTest.Figures, например, в папке {Figure}, добавить классы
  • {Figure}Description, где задать данные фигуры, отнаследовав от IFigureDescription
  • {Figure}Validator, отнаследовав от AbstractValidator<{Figure}Description>
  • {Figure}Calculator<{Figure}Description>, отнаследовав от IAreaCalculator
  1. Добавить в MindboxTest.Figures/Proxy/ProxyFigureInitializator вызов ProxyFigureStorage.AddFigureProcessors по аналогии
  2. Добавить тест проверки инициализатора в MindboxTest.Figures.Tests/Proxy/ProxyFigureDescriptionProviderTests по аналогии

Основные проекты

  • MindboxTest.API - веб часть, пробрасывает запросы к хендлерам в MindboxTest.Handlers
  • MindboxTest.Handlers - "use cases". Выделил его отдельно от API, т.к. зачастую это удобно на больших проектах
  • MindboxTest.Figures - описание логики расчёта и валидации фигур. Выделил отдельно.
  • MindboxTest.DAL - сохранение и выгрузка фигур

О принятых решениях в работе над тестовым заданием

  • Т.к. говорилось про задание контракта, добавил валидацию
  • Не уверен, что я и так проект не переусложнил больше, чем надо :) а посему обработку всех ошибок, задание http кодов, кеширование, логирование и многое-многое другое не делал
  • И вообще говоря, делал бы проще или сложнее в зависимости от контекста
  • Треугольник и круг задал для 2 мерной плоскости в евклидовом пространстве
  • Валидацию юнит-тестами не покрываю специально
  • Использовал реальную базу или не использовал моки в ряде тестов специально
  • Изначально писал с хранением параметров в отдельной табличке, но после решил, что это оверинжиниринг и перевел на json поле

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages