Stage 2 console classes and the shared LoanPolicy, then a Spring Boot 4.1.2 + JPA API (H2, @Version optimistic locking, problem+json errors). Tests write output/ transcripts while asserting the same numbers; scripts regenerate everything. Co-Authored-By: Claude Sonnet 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_017ic4b4DPL6dtpFg4U4LHc2
58 lines
4.2 KiB
Plaintext
58 lines
4.2 KiB
Plaintext
> POST /api/books {"isbn":"978-0134685991","title":"Effective Java","author":"Joshua Bloch","copies":2}
|
|
< 201 {"id":1,"isbn":"978-0134685991","title":"Effective Java","author":"Joshua Bloch","totalCopies":2,"availableCopies":2}
|
|
|
|
> POST /api/books {"isbn":"978-0134685991","title":"Effective Java","author":"Joshua Bloch","copies":2}
|
|
< 409 {"detail":"ISBN 978-0134685991 already exists","instance":"/api/books","status":409,"title":"Conflict"}
|
|
|
|
> POST /api/books {"isbn":"978-0000000000","title":"","author":"Nobody","copies":0}
|
|
< 400 {"detail":"request body failed validation","instance":"/api/books","status":400,"title":"Bad Request","errors":{"copies":"must be greater than or equal to 1","title":"must not be blank"}}
|
|
|
|
> POST /api/books {"isbn":"978-0596009205","title":"Head First Java","author":"Kathy Sierra","copies":1}
|
|
< 201 {"id":2,"isbn":"978-0596009205","title":"Head First Java","author":"Kathy Sierra","totalCopies":1,"availableCopies":1}
|
|
|
|
> POST /api/books {"isbn":"978-0132350884","title":"Clean Code","author":"Robert Martin","copies":1}
|
|
< 201 {"id":3,"isbn":"978-0132350884","title":"Clean Code","author":"Robert Martin","totalCopies":1,"availableCopies":1}
|
|
|
|
> POST /api/books {"isbn":"978-0321356680","title":"Effective Java 2e","author":"Joshua Bloch","copies":1}
|
|
< 201 {"id":4,"isbn":"978-0321356680","title":"Effective Java 2e","author":"Joshua Bloch","totalCopies":1,"availableCopies":1}
|
|
|
|
> POST /api/members {"name":"Asha","email":"[email protected]"}
|
|
< 201 {"id":1,"name":"Asha","email":"[email protected]"}
|
|
|
|
> POST /api/members {"name":"Ravi","email":"[email protected]"}
|
|
< 201 {"id":2,"name":"Ravi","email":"[email protected]"}
|
|
|
|
> POST /api/loans {"memberId":1,"bookId":2}
|
|
< 201 {"id":1,"bookTitle":"Head First Java","memberName":"Asha","borrowedOn":"2026-11-01","dueOn":"2026-11-15","returnedOn":null,"fine":0}
|
|
|
|
> POST /api/loans {"memberId":2,"bookId":2}
|
|
< 409 {"detail":"no copies of 'Head First Java' are available","instance":"/api/loans","status":409,"title":"Conflict"}
|
|
|
|
> POST /api/loans {"memberId":99,"bookId":1}
|
|
< 404 {"detail":"no member with id 99","instance":"/api/loans","status":404,"title":"Not Found"}
|
|
|
|
> POST /api/loans/1/return {"returnedOn":"2026-11-20"}
|
|
< 200 {"id":1,"bookTitle":"Head First Java","memberName":"Asha","borrowedOn":"2026-11-01","dueOn":"2026-11-15","returnedOn":"2026-11-20","fine":10}
|
|
|
|
> POST /api/loans/1/return {"returnedOn":"2026-11-21"}
|
|
< 409 {"detail":"loan 1 was already returned on 2026-11-20","instance":"/api/loans/1/return","status":409,"title":"Conflict"}
|
|
|
|
> POST /api/loans {"memberId":1,"bookId":1}
|
|
< 201 {"id":2,"bookTitle":"Effective Java","memberName":"Asha","borrowedOn":"2026-11-01","dueOn":"2026-11-15","returnedOn":null,"fine":0}
|
|
|
|
> POST /api/loans {"memberId":1,"bookId":3}
|
|
< 201 {"id":3,"bookTitle":"Clean Code","memberName":"Asha","borrowedOn":"2026-11-01","dueOn":"2026-11-15","returnedOn":null,"fine":0}
|
|
|
|
> POST /api/loans {"memberId":1,"bookId":4}
|
|
< 201 {"id":4,"bookTitle":"Effective Java 2e","memberName":"Asha","borrowedOn":"2026-11-01","dueOn":"2026-11-15","returnedOn":null,"fine":0}
|
|
|
|
> POST /api/loans {"memberId":1,"bookId":2}
|
|
< 422 {"detail":"Asha already has 3 active loans (max 3)","instance":"/api/loans","status":422,"title":"Unprocessable Content"}
|
|
|
|
> GET /api/books
|
|
< 200 [{"id":1,"isbn":"978-0134685991","title":"Effective Java","author":"Joshua Bloch","totalCopies":2,"availableCopies":1},{"id":2,"isbn":"978-0596009205","title":"Head First Java","author":"Kathy Sierra","totalCopies":1,"availableCopies":1},{"id":3,"isbn":"978-0132350884","title":"Clean Code","author":"Robert Martin","totalCopies":1,"availableCopies":0},{"id":4,"isbn":"978-0321356680","title":"Effective Java 2e","author":"Joshua Bloch","totalCopies":1,"availableCopies":0}]
|
|
|
|
> GET /api/loans
|
|
< 200 [{"id":1,"bookTitle":"Head First Java","memberName":"Asha","borrowedOn":"2026-11-01","dueOn":"2026-11-15","returnedOn":"2026-11-20","fine":10},{"id":2,"bookTitle":"Effective Java","memberName":"Asha","borrowedOn":"2026-11-01","dueOn":"2026-11-15","returnedOn":null,"fine":0},{"id":3,"bookTitle":"Clean Code","memberName":"Asha","borrowedOn":"2026-11-01","dueOn":"2026-11-15","returnedOn":null,"fine":0},{"id":4,"bookTitle":"Effective Java 2e","memberName":"Asha","borrowedOn":"2026-11-01","dueOn":"2026-11-15","returnedOn":null,"fine":0}]
|
|
|