BorrowingFacade return reservationId
This commit is contained in:
@@ -3,7 +3,6 @@ package io.wkrzywiec.hexagonal.library.domain.borrowing;
|
||||
import io.wkrzywiec.hexagonal.library.domain.borrowing.model.ActiveUser;
|
||||
import io.wkrzywiec.hexagonal.library.domain.borrowing.model.MakeBookAvailableCommand;
|
||||
import io.wkrzywiec.hexagonal.library.domain.borrowing.model.ReservationDetails;
|
||||
import io.wkrzywiec.hexagonal.library.domain.borrowing.model.ReservationId;
|
||||
import io.wkrzywiec.hexagonal.library.domain.borrowing.model.exception.ActiveUserNotFoundException;
|
||||
import io.wkrzywiec.hexagonal.library.domain.borrowing.model.AvailableBook;
|
||||
import io.wkrzywiec.hexagonal.library.domain.borrowing.model.exception.AvailableBookNotFoundExeption;
|
||||
@@ -12,16 +11,13 @@ import io.wkrzywiec.hexagonal.library.domain.borrowing.model.ReservedBook;
|
||||
import io.wkrzywiec.hexagonal.library.domain.borrowing.ports.incoming.MakeBookAvailable;
|
||||
import io.wkrzywiec.hexagonal.library.domain.borrowing.ports.incoming.ReserveBook;
|
||||
import io.wkrzywiec.hexagonal.library.domain.borrowing.ports.outgoing.BorrowingDatabase;
|
||||
import io.wkrzywiec.hexagonal.library.domain.borrowing.ports.outgoing.EmailSender;
|
||||
|
||||
public class BorrowingFacade implements MakeBookAvailable, ReserveBook {
|
||||
|
||||
private BorrowingDatabase database;
|
||||
private EmailSender emailSender;
|
||||
|
||||
public BorrowingFacade(BorrowingDatabase database, EmailSender emailSender) {
|
||||
public BorrowingFacade(BorrowingDatabase database) {
|
||||
this.database = database;
|
||||
this.emailSender = emailSender;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -30,7 +26,7 @@ public class BorrowingFacade implements MakeBookAvailable, ReserveBook {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(BookReservationCommand bookReservation) {
|
||||
public Long handle(BookReservationCommand bookReservation) {
|
||||
AvailableBook availableBook =
|
||||
database.getAvailableBook(bookReservation.getBookId())
|
||||
.orElseThrow(() -> new AvailableBookNotFoundExeption(bookReservation.getBookId()));
|
||||
@@ -41,7 +37,6 @@ public class BorrowingFacade implements MakeBookAvailable, ReserveBook {
|
||||
|
||||
ReservedBook reservedBook = activeUser.reserve(availableBook);
|
||||
ReservationDetails reservationDetails = database.save(reservedBook);
|
||||
|
||||
emailSender.sendReservationConfirmationEmail(reservationDetails);
|
||||
return reservationDetails.getReservationId().getIdAsLong();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,5 +3,5 @@ package io.wkrzywiec.hexagonal.library.domain.borrowing.ports.incoming;
|
||||
import io.wkrzywiec.hexagonal.library.domain.borrowing.model.BookReservationCommand;
|
||||
|
||||
public interface ReserveBook {
|
||||
void handle(BookReservationCommand bookReservation);
|
||||
Long handle(BookReservationCommand bookReservation);
|
||||
}
|
||||
|
||||
@@ -8,30 +8,23 @@ import io.wkrzywiec.hexagonal.library.domain.borrowing.model.MakeBookAvailableCo
|
||||
import io.wkrzywiec.hexagonal.library.domain.borrowing.model.exception.ActiveUserNotFoundException;
|
||||
import io.wkrzywiec.hexagonal.library.domain.borrowing.model.exception.AvailableBookNotFoundExeption;
|
||||
import io.wkrzywiec.hexagonal.library.domain.borrowing.model.exception.TooManyBooksAssignedToUserException;
|
||||
import io.wkrzywiec.hexagonal.library.domain.borrowing.ports.outgoing.EmailSender;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.DisplayName;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
public class BorrowingFacadeTest {
|
||||
|
||||
private BorrowingFacade facade;
|
||||
private InMemoryBorrowingDatabase database;
|
||||
@Mock
|
||||
private EmailSender emailSender;
|
||||
|
||||
@BeforeEach
|
||||
public void init(){
|
||||
database = new InMemoryBorrowingDatabase();
|
||||
facade = new BorrowingFacade(database, emailSender);
|
||||
facade = new BorrowingFacade(database);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user