From 3f07eac529e9242284cff156b42686b85a9f5962 Mon Sep 17 00:00:00 2001 From: wkrzywiec Date: Mon, 25 May 2020 08:35:00 +0200 Subject: [PATCH] email domain tests --- .../hexagonal/library/email/EmailFacade.java | 6 ++- .../library/email/EmailFacadeTest.java | 39 +++++++++++++++++++ .../library/email/EmailSenderFake.java | 12 ++++++ .../email/InMemoryLibraryDatabase.java | 21 ++++++++++ 4 files changed, 76 insertions(+), 2 deletions(-) create mode 100644 src/test/java/io/wkrzywiec/hexagonal/library/email/EmailFacadeTest.java create mode 100644 src/test/java/io/wkrzywiec/hexagonal/library/email/EmailSenderFake.java create mode 100644 src/test/java/io/wkrzywiec/hexagonal/library/email/InMemoryLibraryDatabase.java diff --git a/src/main/java/io/wkrzywiec/hexagonal/library/email/EmailFacade.java b/src/main/java/io/wkrzywiec/hexagonal/library/email/EmailFacade.java index afc7164..8c4b648 100644 --- a/src/main/java/io/wkrzywiec/hexagonal/library/email/EmailFacade.java +++ b/src/main/java/io/wkrzywiec/hexagonal/library/email/EmailFacade.java @@ -15,8 +15,10 @@ public class EmailFacade implements SendReservationConfirmation { @Override public void handle(SendReservationConfirmationCommand sendReservationConfirmation) { - String bookTitle = database.getTitleByBookId(sendReservationConfirmation.getBookId()); - String userEmailAddress = database.getUserEmailAddress(sendReservationConfirmation.getUserId()); + String bookTitle = database + .getTitleByBookId(sendReservationConfirmation.getBookId()); + String userEmailAddress = database + .getUserEmailAddress(sendReservationConfirmation.getUserId()); Email email = EmailCreator.reservationEmail( sendReservationConfirmation.getReservationId(), diff --git a/src/test/java/io/wkrzywiec/hexagonal/library/email/EmailFacadeTest.java b/src/test/java/io/wkrzywiec/hexagonal/library/email/EmailFacadeTest.java new file mode 100644 index 0000000..64e0ad4 --- /dev/null +++ b/src/test/java/io/wkrzywiec/hexagonal/library/email/EmailFacadeTest.java @@ -0,0 +1,39 @@ +package io.wkrzywiec.hexagonal.library.email; + +import io.wkrzywiec.hexagonal.library.TestData; +import io.wkrzywiec.hexagonal.library.email.model.SendReservationConfirmationCommand; +import io.wkrzywiec.hexagonal.library.email.ports.outgoing.EmailSender; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; + +public class EmailFacadeTest { + + private EmailFacade facade; + private EmailSender emailSender; + private InMemoryLibraryDatabase database; + + + @BeforeEach + public void init() { + database = new InMemoryLibraryDatabase(); + emailSender = new EmailSenderFake(); + facade = new EmailFacade(emailSender, database); + + database.bookTitles.put(1L, TestData.homoDeusBookTitle()); + database.emailAddresses.put(1L, "john.doe@test.com"); + } + + @Test + @DisplayName("Prepare & send reservation confirmation email") + public void shouldPrepareAndSendReservationConfirmation(){ + //given + SendReservationConfirmationCommand sendReservationConfirmationCommand + = new SendReservationConfirmationCommand(1L, 1L, 1L); + + //when & then + assertDoesNotThrow(() -> facade.handle(sendReservationConfirmationCommand)); + } +} diff --git a/src/test/java/io/wkrzywiec/hexagonal/library/email/EmailSenderFake.java b/src/test/java/io/wkrzywiec/hexagonal/library/email/EmailSenderFake.java new file mode 100644 index 0000000..7b5a4c3 --- /dev/null +++ b/src/test/java/io/wkrzywiec/hexagonal/library/email/EmailSenderFake.java @@ -0,0 +1,12 @@ +package io.wkrzywiec.hexagonal.library.email; + +import io.wkrzywiec.hexagonal.library.email.model.Email; +import io.wkrzywiec.hexagonal.library.email.ports.outgoing.EmailSender; + +public class EmailSenderFake implements EmailSender { + + @Override + public void sendReservationConfirmationEmail(Email email) { + + } +} diff --git a/src/test/java/io/wkrzywiec/hexagonal/library/email/InMemoryLibraryDatabase.java b/src/test/java/io/wkrzywiec/hexagonal/library/email/InMemoryLibraryDatabase.java new file mode 100644 index 0000000..8ca04b0 --- /dev/null +++ b/src/test/java/io/wkrzywiec/hexagonal/library/email/InMemoryLibraryDatabase.java @@ -0,0 +1,21 @@ +package io.wkrzywiec.hexagonal.library.email; + +import io.wkrzywiec.hexagonal.library.email.ports.outgoing.LibraryDatabase; + +import java.util.concurrent.ConcurrentHashMap; + +public class InMemoryLibraryDatabase implements LibraryDatabase { + + ConcurrentHashMap bookTitles = new ConcurrentHashMap<>(); + ConcurrentHashMap emailAddresses = new ConcurrentHashMap<>(); + + @Override + public String getTitleByBookId(Long bookId) { + return bookTitles.get(bookId); + } + + @Override + public String getUserEmailAddress(Long userId) { + return emailAddresses.get(userId); + } +}