diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/App.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/App.java index b32564cbc..5554c36df 100644 --- a/hexagonal/src/main/java/com/iluwatar/hexagonal/App.java +++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/App.java @@ -28,7 +28,14 @@ package com.iluwatar.hexagonal; * */ public class App { + /** + * Program entry point + */ public static void main(String[] args) { - System.out.println("Running hexagonal example"); + // submit some lottery tickets + + // perform lottery + + // check all the tickets } } diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/domain/LotteryAdministration.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/domain/LotteryAdministration.java index a68ea73b0..58edd9b28 100644 --- a/hexagonal/src/main/java/com/iluwatar/hexagonal/domain/LotteryAdministration.java +++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/domain/LotteryAdministration.java @@ -22,7 +22,7 @@ */ package com.iluwatar.hexagonal.domain; -import java.util.List; +import java.util.Map; /** * @@ -31,7 +31,7 @@ import java.util.List; */ public interface LotteryAdministration { - List getAllSubmittedTickets(); + Map getAllSubmittedTickets(); LotteryNumbers performLottery(); } diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/domain/LotteryAdministrationImpl.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/domain/LotteryAdministrationImpl.java new file mode 100644 index 000000000..ee1d56f45 --- /dev/null +++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/domain/LotteryAdministrationImpl.java @@ -0,0 +1,29 @@ +package com.iluwatar.hexagonal.domain; + +import java.util.Map; + +import com.iluwatar.hexagonal.database.LotteryTicketRepositoryMock; + +/** + * + * Lottery administration implementation + * + */ +public class LotteryAdministrationImpl implements LotteryAdministration { + + private final LotteryTicketRepository repository; + + public LotteryAdministrationImpl() { + repository = new LotteryTicketRepositoryMock(); + } + + @Override + public Map getAllSubmittedTickets() { + return repository.findAll(); + } + + @Override + public LotteryNumbers performLottery() { + return LotteryNumbers.createRandom(); + } +} diff --git a/hexagonal/src/main/java/com/iluwatar/hexagonal/domain/LotteryServiceImpl.java b/hexagonal/src/main/java/com/iluwatar/hexagonal/domain/LotteryServiceImpl.java index d74ba240f..2f5191601 100644 --- a/hexagonal/src/main/java/com/iluwatar/hexagonal/domain/LotteryServiceImpl.java +++ b/hexagonal/src/main/java/com/iluwatar/hexagonal/domain/LotteryServiceImpl.java @@ -27,6 +27,11 @@ import java.util.Optional; import com.iluwatar.hexagonal.database.LotteryTicketRepositoryMock; import com.iluwatar.hexagonal.domain.LotteryTicketCheckResult.CheckResult; +/** + * + * Implementation for lottery service + * + */ public class LotteryServiceImpl implements LotteryService { private final LotteryTicketRepository repository; @@ -45,7 +50,7 @@ public class LotteryServiceImpl implements LotteryService { Optional optional = repository.findById(id); if (optional.isPresent()) { if (optional.get().getNumbers().equals(winningNumbers)) { - return new LotteryTicketCheckResult(CheckResult.WIN_PRIZE); + return new LotteryTicketCheckResult(CheckResult.WIN_PRIZE, 1000); } else { return new LotteryTicketCheckResult(CheckResult.NO_PRIZE); } diff --git a/hexagonal/src/test/java/com/iluwatar/hexagonal/domain/LotteryAdministrationTest.java b/hexagonal/src/test/java/com/iluwatar/hexagonal/domain/LotteryAdministrationTest.java new file mode 100644 index 000000000..be953a4e5 --- /dev/null +++ b/hexagonal/src/test/java/com/iluwatar/hexagonal/domain/LotteryAdministrationTest.java @@ -0,0 +1,38 @@ +package com.iluwatar.hexagonal.domain; + +import static org.junit.Assert.assertEquals; + +import org.junit.Before; +import org.junit.Test; + +import com.iluwatar.hexagonal.database.LotteryTicketRepositoryMock; + +/** + * + * Tests for lottery administration + * + */ +public class LotteryAdministrationTest { + + private LotteryTicketRepository repository = new LotteryTicketRepositoryMock(); + private LotteryAdministration admin = new LotteryAdministrationImpl(); + + @Before + public void submitTickets() { + repository.save(LotteryTestUtils.createLotteryTicket()); + repository.save(LotteryTestUtils.createLotteryTicket()); + repository.save(LotteryTestUtils.createLotteryTicket()); + repository.save(LotteryTestUtils.createLotteryTicket()); + repository.save(LotteryTestUtils.createLotteryTicket()); + } + + @Test + public void testGetAllTickets() { + assertEquals(admin.getAllSubmittedTickets().size(), 4); + } + + @Test + public void testPerformLottery() { + assertEquals(admin.performLottery().getNumbers().size(), 4); + } +}