From 4b1fa6048d3a5a5eed0163babf4bd985c8b8f4c6 Mon Sep 17 00:00:00 2001 From: wkrzywiec Date: Wed, 20 May 2020 16:31:21 +0200 Subject: [PATCH] BorrowingFacade return reservationId --- .../library/domain/borrowing/BorrowingFacade.java | 11 +++-------- .../domain/borrowing/ports/incoming/ReserveBook.java | 2 +- .../library/domain/borrowing/BorrowingFacadeTest.java | 9 +-------- 3 files changed, 5 insertions(+), 17 deletions(-) diff --git a/src/main/java/io/wkrzywiec/hexagonal/library/domain/borrowing/BorrowingFacade.java b/src/main/java/io/wkrzywiec/hexagonal/library/domain/borrowing/BorrowingFacade.java index b4147a4..bb0c32d 100644 --- a/src/main/java/io/wkrzywiec/hexagonal/library/domain/borrowing/BorrowingFacade.java +++ b/src/main/java/io/wkrzywiec/hexagonal/library/domain/borrowing/BorrowingFacade.java @@ -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(); } } diff --git a/src/main/java/io/wkrzywiec/hexagonal/library/domain/borrowing/ports/incoming/ReserveBook.java b/src/main/java/io/wkrzywiec/hexagonal/library/domain/borrowing/ports/incoming/ReserveBook.java index 8cc384f..db7b16d 100644 --- a/src/main/java/io/wkrzywiec/hexagonal/library/domain/borrowing/ports/incoming/ReserveBook.java +++ b/src/main/java/io/wkrzywiec/hexagonal/library/domain/borrowing/ports/incoming/ReserveBook.java @@ -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); } diff --git a/src/test/java/io/wkrzywiec/hexagonal/library/domain/borrowing/BorrowingFacadeTest.java b/src/test/java/io/wkrzywiec/hexagonal/library/domain/borrowing/BorrowingFacadeTest.java index 0414ab2..c7bf1fa 100644 --- a/src/test/java/io/wkrzywiec/hexagonal/library/domain/borrowing/BorrowingFacadeTest.java +++ b/src/test/java/io/wkrzywiec/hexagonal/library/domain/borrowing/BorrowingFacadeTest.java @@ -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