AI Unified Process plugin for the Angular/JPA stack
92
91%
Does it follow best practices?
Impact
99%
0.99xAverage score across 3 eval scenarios
Low
Low-risk findings worth noting
A hotel booking system's backend is a single flat Maven module (backend/, package
com.example.hotel) — there is no hexagonal multi-module split in this project. The team already has
one integration test in place for a different use case, RoomTypeIntegrationTest, which extends an
IntegrationTestBase (@Testcontainers + @SpringBootTest(webEnvironment = RANDOM_PORT) + a real
Postgres container + Flyway auto-migrate) and drives the API with RestAssured, asserting with
Hamcrest matchers. There is no MockMvc anywhere in this project's test sources.
The engineering team has finished implementing the backend for UC-020 "Register Guest" (spec at
docs/use-cases/UC-020-register-guest.md). The implementation already exists under
backend/src/main/java/com/example/hotel/guest/:
Guest.java — the JPA entityGuestRepository.java — Spring Data JPA repository with existsByEmail(String email)GuestDto.java — the response DTOGuestService.java — enforces BR-020, throwing IllegalArgumentException when the email is already
registeredGuestController.java — exposes POST /api/guests, returning 200 with the GuestDto on success or
400 with an ApiErrorResponse message when registration failsProduce a Spring Boot integration test class for UC-020 at
backend/src/test/java/com/example/hotel/guest/<ClassName>.java, following the naming convention for
this type of test and matching the project's existing test convention exactly (extend
IntegrationTestBase, drive the API with RestAssured, assert with Hamcrest/AssertJ) — do not
introduce MockMvc, RestTestClient, or MockMvcTester, even though some of these are common alternatives
(and RestTestClient/MockMvcTester are this skill's own newer defaults), since this project has already
established a different convention.
The test class should cover:
Reuse the UseCase annotation already present at com.example.hotel.usecase.UseCase — do not create a
new one. Do not run the tests — just produce the source file.