BorrowingFacade return reservationId

This commit is contained in:
wkrzywiec
2020-05-20 16:31:21 +02:00
parent 3c4527fff4
commit 4b1fa6048d
3 changed files with 5 additions and 17 deletions

View File

@@ -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();
}
}

View File

@@ -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);
}

View File

@@ -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