GithubHelp home page GithubHelp logo

skyengtask's Introduction

SkyEngTestTask

Реализация тестового задания для SkyWay

Оглавление:

  1. Условия задачи
  2. Реализация
  3. Функционал
  4. Собранное приложение
  5. Скрин покрытия тестами

Условия задачи

Необходимо реализовать REST API, который позволяет отслеживать почтовые отправления. В системе должны регистрировать почтовые отправления — письма, посылки — их передвижение между почтовыми отделениями, а также должна быть реализована возможность получения информации и всей истории передвижения конкретного почтового отправления.

  1. Операции, которые должны быть реализованы:
  • регистрации почтового отправления, его прибытие в промежуточное почтовое отделение, его убытие из почтового отделения, его получение адресатом, просмотр статуса и полной истории движения почтового отправления.
  1. Почтовое отправление определяется следующими свойствами:
  • идентификатор, тип (письмо, посылка, бандероль, открытка), индекс получателя,адрес получателя,имя получателя.
  1. Почтовое отделение характеризуется следующими свойствами : индекс, название, адрес получателя.
  • Сервис может быть реализован в видео JSON либо XML-сервиса на выбор. Сервис может быть реализован при помощи стека Java EE или Spring.
  • СУБД для хранения данных может использоваться любая.
  • Работа с данными должна быть выполнена с помощью ORM, библиотека может использоваться любая.
  • Приложение должно быть собрано при помощи Maven или Gradle.
  • Результатом работы должен быть war или ear-архив, который может быть размещен на сервер приложений. Для отладки и демонстрации может использоваться любой сервер приложений.
  • К приложению должно прилагаться описание его API — структура запросов и ответов, список допустимых операций, можно это реализовать в виде проекта SoapUI.
  • Код должен быть покрыт тестами минимум на 70% (приложить скрин покрытия)

Реализация:

Использован стек: Java 17 (corretto), Spring 2.7.14, Gradle, Hibernate, Swagger, Junit, FlyWay, H2

  • Созданы сущности:
  1. MailItemEntity - Хранит: Тип посылки, Адрес, Имя и индекс получателя
  2. PostalOfficeEntity - Хранит: Индекс, Название и Адрес офиса
  3. MailItemHistoryEntity - Хранит: Состояние отправления (находится в пути или офисе), Тип и Время взаимодействия с отправлением, id отправления, Объекты офисов - текущий и финальный.
  • Созданы ENUM для типов отправления и типов взаимодействия с отправлением

  • Созданы Repository, Service и Controller

  • Подключена H2 с включенной консолью, адрес БД: jdbc:h2:mem:skyeng, user: sa, password:

http://localhost:9000/h2-console

  • Подключен Swagger в качестве документации по API

http://localhost:9000/swagger-ui/index.html

Функционал:

  1. Почтовые офисы:
  • Создание офиса
  • Поиск офиса по id
  • Поиск офиса по индексу
  1. Отправление:
  • Создание отправления
  • Пересылка отправления в другой офис
  • Получение отправленной посылки
  • Передача посылки конченому адресату
  • Получение текущего состояния отправления и ее данных (история отправления)
  1. Написаны тесты для всех сервисов и контроллеров проекта
  2. Добавлена возможность перейти с автогенерации таблиц на миграцию через FlyWay (изменить настройки)

Ссылка на собранный war

War файл

Скрин покрытия кода тестами:

screen

Наверх

skyengtask's People

Contributors

wmhillock avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.