Skip to content

Latest commit

 

History

History
63 lines (50 loc) · 3.16 KB

File metadata and controls

63 lines (50 loc) · 3.16 KB

ShareIt

Общая информация

Проект представляет собой сервис аренды вещей между пользователями. Пользователи могут добавлять предметы, которые готовы предоставить во временное пользование, находить нужные вещи и бронировать их на определённый период.

Технологический стек: Java 21, Spring Boot, Spring Data JPA, PostgreSQL, H2, Maven, REST, JUnit 5, Mockito, Lombok.

Основная функциональность

Пользователи (users)

  • создание пользователя
  • обновление данных пользователя
  • получение информации о пользователе
  • удаление пользователя

Вещи (items)

  • добавление новой вещи
  • редактирование информации о вещи
  • получение списка вещей пользователя
  • поиск вещей по текстовому запросу

Комментарии

  • добавление комментария о вещи только после завершения бронирования
  • получение всех комментариев о вещи

Бронирование (bookings)

  • создание бронирования
  • подтверждение бронирования владельцем вещи
  • получение списка бронирований пользователя и владельца вещи

Запросы вещей (requests)

  • создание запроса на необходимую вещь
  • получение списка запросов
  • просмотр запросов других пользователей

Архитектура проекта

Проект реализован как multi-module Maven приложение и состоит из двух модулей:

  • gateway — обработка HTTP запросов и валидация данных
  • server — бизнес-логика и работа с базой данных

Тестирование

Проект покрыт несколькими типами тестов.

Unit тесты

Тестируют работу контроллеров, обработку HTTP-запросов и проверку валидных и невалидных данных. Используемые инструменты:

  • JUnit 5
  • MockMvc
  • Spring Boot Test

Тесты сериализации JSON

Проверяют корректность преобразования DTO объектов в JSON и обратно. Используемые инструменты:

  • @JsonTest
  • Jackson ObjectMapper

Интеграционные тесты

Проверяют работу сервисного слоя, бизнес-логику приложения и взаимодействие с базой данных. Используемые инструменты:

  • SpringBootTest
  • H2 Database
  • Transactional tests