Hexagonal pattern: move business logic to core
This commit is contained in:
		| @@ -22,12 +22,12 @@ | ||||
|  */ | ||||
| package com.iluwatar.hexagonal.administration; | ||||
|  | ||||
| import java.util.Map; | ||||
|  | ||||
| import com.iluwatar.hexagonal.domain.LotteryNumbers; | ||||
| import com.iluwatar.hexagonal.domain.LotteryTicket; | ||||
| import com.iluwatar.hexagonal.domain.LotteryTicketId; | ||||
|  | ||||
| import java.util.Map; | ||||
|  | ||||
| /** | ||||
|  *  | ||||
|  * Administrator interface for lottery service. | ||||
|   | ||||
| @@ -22,22 +22,13 @@ | ||||
|  */ | ||||
| package com.iluwatar.hexagonal.administration; | ||||
|  | ||||
| import java.util.Map; | ||||
|  | ||||
| import com.iluwatar.hexagonal.banking.WireTransfers; | ||||
| import com.iluwatar.hexagonal.banking.WireTransfersImpl; | ||||
| import com.iluwatar.hexagonal.database.LotteryTicketRepository; | ||||
| import com.iluwatar.hexagonal.database.LotteryTicketInMemoryRepository; | ||||
| import com.iluwatar.hexagonal.domain.LotteryConstants; | ||||
| import com.iluwatar.hexagonal.domain.LotteryNumbers; | ||||
| import com.iluwatar.hexagonal.domain.LotterySystem; | ||||
| import com.iluwatar.hexagonal.domain.LotterySystemImpl; | ||||
| import com.iluwatar.hexagonal.domain.LotteryTicket; | ||||
| import com.iluwatar.hexagonal.domain.LotteryTicketCheckResult; | ||||
| import com.iluwatar.hexagonal.domain.LotteryTicketCheckResult.CheckResult; | ||||
| import com.iluwatar.hexagonal.domain.LotteryTicketId; | ||||
| import com.iluwatar.hexagonal.notifications.LotteryNotifications; | ||||
| import com.iluwatar.hexagonal.notifications.LotteryNotificationsImpl; | ||||
| import com.iluwatar.hexagonal.service.LotteryService; | ||||
| import com.iluwatar.hexagonal.service.LotteryServiceImpl; | ||||
|  | ||||
| import java.util.Map; | ||||
|  | ||||
| /** | ||||
|  *  | ||||
| @@ -46,42 +37,24 @@ import com.iluwatar.hexagonal.service.LotteryServiceImpl; | ||||
|  */ | ||||
| public class LotteryAdministrationImpl implements LotteryAdministration { | ||||
|  | ||||
|   private final LotteryTicketRepository repository; | ||||
|   private final LotteryService service = new LotteryServiceImpl(); | ||||
|   private final LotteryNotifications notifications = new LotteryNotificationsImpl(); | ||||
|   private final WireTransfers bank = new WireTransfersImpl(); | ||||
|   private final LotterySystem lotterySystem; | ||||
|  | ||||
|   public LotteryAdministrationImpl() { | ||||
|     repository = new LotteryTicketInMemoryRepository(); | ||||
|     lotterySystem = new LotterySystemImpl(); | ||||
|   } | ||||
|    | ||||
|   @Override | ||||
|   public Map<LotteryTicketId, LotteryTicket> getAllSubmittedTickets() { | ||||
|     return repository.findAll(); | ||||
|     return lotterySystem.getAllSubmittedTickets(); | ||||
|   } | ||||
|  | ||||
|   @Override | ||||
|   public LotteryNumbers performLottery() { | ||||
|     LotteryNumbers numbers = LotteryNumbers.createRandom(); | ||||
|     Map<LotteryTicketId, LotteryTicket> tickets = getAllSubmittedTickets(); | ||||
|     for (LotteryTicketId id: tickets.keySet()) { | ||||
|       LotteryTicketCheckResult result = service.checkTicketForPrize(id, numbers); | ||||
|       if (result.getResult().equals(CheckResult.WIN_PRIZE)) { | ||||
|         boolean transferred = bank.transferFunds(LotteryConstants.PRIZE_AMOUNT, LotteryConstants.SERVICE_BANK_ACCOUNT,  | ||||
|             tickets.get(id).getPlayerDetails().getBankAccount()); | ||||
|         if (transferred) { | ||||
|           notifications.notifyPrize(tickets.get(id).getPlayerDetails(), LotteryConstants.PRIZE_AMOUNT); | ||||
|         } else { | ||||
|           notifications.notifyPrizeError(tickets.get(id).getPlayerDetails(), LotteryConstants.PRIZE_AMOUNT); | ||||
|         } | ||||
|       } else if (result.getResult().equals(CheckResult.NO_PRIZE)) { | ||||
|         notifications.notifyNoWin(tickets.get(id).getPlayerDetails()); | ||||
|       } | ||||
|     } | ||||
|     return numbers; | ||||
|     return lotterySystem.performLottery(); | ||||
|   } | ||||
|  | ||||
|   @Override | ||||
|   public void resetLottery() { | ||||
|     repository.deleteAll(); | ||||
|     lotterySystem.resetLottery(); | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -0,0 +1,58 @@ | ||||
| /** | ||||
|  * The MIT License | ||||
|  * Copyright (c) 2014 Ilkka Seppälä | ||||
|  * | ||||
|  * Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
|  * of this software and associated documentation files (the "Software"), to deal | ||||
|  * in the Software without restriction, including without limitation the rights | ||||
|  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
|  * copies of the Software, and to permit persons to whom the Software is | ||||
|  * furnished to do so, subject to the following conditions: | ||||
|  * | ||||
|  * The above copyright notice and this permission notice shall be included in | ||||
|  * all copies or substantial portions of the Software. | ||||
|  * | ||||
|  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
|  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
|  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
|  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
|  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
|  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||||
|  * THE SOFTWARE. | ||||
|  */ | ||||
| package com.iluwatar.hexagonal.domain; | ||||
|  | ||||
| import java.util.Map; | ||||
| import java.util.Optional; | ||||
|  | ||||
| /** | ||||
|  * Lottery system interface | ||||
|  */ | ||||
| public interface LotterySystem { | ||||
|  | ||||
|   /** | ||||
|    * Get all the lottery tickets submitted for lottery | ||||
|    */ | ||||
|   Map<LotteryTicketId, LotteryTicket> getAllSubmittedTickets(); | ||||
|  | ||||
|   /** | ||||
|    * Draw lottery numbers | ||||
|    */ | ||||
|   LotteryNumbers performLottery(); | ||||
|  | ||||
|   /** | ||||
|    * Begin new lottery round | ||||
|    */ | ||||
|   void resetLottery(); | ||||
|  | ||||
|   /** | ||||
|    * Submit lottery ticket to participate in the lottery | ||||
|    */ | ||||
|   Optional<LotteryTicketId> submitTicket(LotteryTicket ticket); | ||||
|  | ||||
|   /** | ||||
|    * Check if lottery ticket has won | ||||
|    */ | ||||
|   LotteryTicketCheckResult checkTicketForPrize(LotteryTicketId id, LotteryNumbers winningNumbers); | ||||
|  | ||||
| } | ||||
| @@ -0,0 +1,107 @@ | ||||
| /** | ||||
|  * The MIT License | ||||
|  * Copyright (c) 2014 Ilkka Seppälä | ||||
|  * | ||||
|  * Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
|  * of this software and associated documentation files (the "Software"), to deal | ||||
|  * in the Software without restriction, including without limitation the rights | ||||
|  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
|  * copies of the Software, and to permit persons to whom the Software is | ||||
|  * furnished to do so, subject to the following conditions: | ||||
|  * | ||||
|  * The above copyright notice and this permission notice shall be included in | ||||
|  * all copies or substantial portions of the Software. | ||||
|  * | ||||
|  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
|  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
|  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
|  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
|  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
|  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||||
|  * THE SOFTWARE. | ||||
|  */ | ||||
| package com.iluwatar.hexagonal.domain; | ||||
|  | ||||
| import com.iluwatar.hexagonal.banking.WireTransfers; | ||||
| import com.iluwatar.hexagonal.banking.WireTransfersImpl; | ||||
| import com.iluwatar.hexagonal.database.LotteryTicketInMemoryRepository; | ||||
| import com.iluwatar.hexagonal.database.LotteryTicketRepository; | ||||
| import com.iluwatar.hexagonal.notifications.LotteryNotifications; | ||||
| import com.iluwatar.hexagonal.notifications.LotteryNotificationsImpl; | ||||
|  | ||||
| import java.util.Map; | ||||
| import java.util.Optional; | ||||
|  | ||||
| /** | ||||
|  * Lottery system implementation | ||||
|  */ | ||||
| public class LotterySystemImpl implements LotterySystem { | ||||
|  | ||||
|   private final LotteryTicketRepository repository; | ||||
|   private final LotteryNotifications notifications = new LotteryNotificationsImpl(); | ||||
|   private final WireTransfers bank = new WireTransfersImpl(); | ||||
|  | ||||
|   public LotterySystemImpl() { | ||||
|     repository = new LotteryTicketInMemoryRepository(); | ||||
|   } | ||||
|  | ||||
|   @Override | ||||
|   public Map<LotteryTicketId, LotteryTicket> getAllSubmittedTickets() { | ||||
|     return repository.findAll(); | ||||
|   } | ||||
|  | ||||
|   @Override | ||||
|   public LotteryNumbers performLottery() { | ||||
|     LotteryNumbers numbers = LotteryNumbers.createRandom(); | ||||
|     Map<LotteryTicketId, LotteryTicket> tickets = getAllSubmittedTickets(); | ||||
|     for (LotteryTicketId id : tickets.keySet()) { | ||||
|       LotteryTicketCheckResult result = checkTicketForPrize(id, numbers); | ||||
|       if (result.getResult().equals(LotteryTicketCheckResult.CheckResult.WIN_PRIZE)) { | ||||
|         boolean transferred = bank.transferFunds(LotteryConstants.PRIZE_AMOUNT, LotteryConstants.SERVICE_BANK_ACCOUNT, | ||||
|             tickets.get(id).getPlayerDetails().getBankAccount()); | ||||
|         if (transferred) { | ||||
|           notifications.notifyPrize(tickets.get(id).getPlayerDetails(), LotteryConstants.PRIZE_AMOUNT); | ||||
|         } else { | ||||
|           notifications.notifyPrizeError(tickets.get(id).getPlayerDetails(), LotteryConstants.PRIZE_AMOUNT); | ||||
|         } | ||||
|       } else if (result.getResult().equals(LotteryTicketCheckResult.CheckResult.NO_PRIZE)) { | ||||
|         notifications.notifyNoWin(tickets.get(id).getPlayerDetails()); | ||||
|       } | ||||
|     } | ||||
|     return numbers; | ||||
|   } | ||||
|  | ||||
|   @Override | ||||
|   public void resetLottery() { | ||||
|     repository.deleteAll(); | ||||
|   } | ||||
|  | ||||
|   @Override | ||||
|   public Optional<LotteryTicketId> submitTicket(LotteryTicket ticket) { | ||||
|     boolean result = bank.transferFunds(LotteryConstants.TICKET_PRIZE, ticket.getPlayerDetails().getBankAccount(), | ||||
|         LotteryConstants.SERVICE_BANK_ACCOUNT); | ||||
|     if (result == false) { | ||||
|       notifications.notifyTicketSubmitError(ticket.getPlayerDetails()); | ||||
|       return Optional.empty(); | ||||
|     } | ||||
|     Optional<LotteryTicketId> optional = repository.save(ticket); | ||||
|     if (optional.isPresent()) { | ||||
|       notifications.notifyTicketSubmitted(ticket.getPlayerDetails()); | ||||
|     } | ||||
|     return optional; | ||||
|   } | ||||
|  | ||||
|   @Override | ||||
|   public LotteryTicketCheckResult checkTicketForPrize(LotteryTicketId id, LotteryNumbers winningNumbers) { | ||||
|     Optional<LotteryTicket> optional = repository.findById(id); | ||||
|     if (optional.isPresent()) { | ||||
|       if (optional.get().getNumbers().equals(winningNumbers)) { | ||||
|         return new LotteryTicketCheckResult(LotteryTicketCheckResult.CheckResult.WIN_PRIZE, 1000); | ||||
|       } else { | ||||
|         return new LotteryTicketCheckResult(LotteryTicketCheckResult.CheckResult.NO_PRIZE); | ||||
|       } | ||||
|     } else { | ||||
|       return new LotteryTicketCheckResult(LotteryTicketCheckResult.CheckResult.TICKET_NOT_SUBMITTED); | ||||
|     } | ||||
|   } | ||||
| } | ||||
| @@ -22,13 +22,13 @@ | ||||
|  */ | ||||
| package com.iluwatar.hexagonal.service; | ||||
|  | ||||
| import java.util.Optional; | ||||
|  | ||||
| import com.iluwatar.hexagonal.domain.LotteryNumbers; | ||||
| import com.iluwatar.hexagonal.domain.LotteryTicket; | ||||
| import com.iluwatar.hexagonal.domain.LotteryTicketCheckResult; | ||||
| import com.iluwatar.hexagonal.domain.LotteryTicketId; | ||||
|  | ||||
| import java.util.Optional; | ||||
|  | ||||
| /** | ||||
|  *  | ||||
|  * Interface for submitting and checking lottery tickets. | ||||
|   | ||||
| @@ -22,20 +22,14 @@ | ||||
|  */ | ||||
| package com.iluwatar.hexagonal.service; | ||||
|  | ||||
| import java.util.Optional; | ||||
|  | ||||
| import com.iluwatar.hexagonal.banking.WireTransfers; | ||||
| import com.iluwatar.hexagonal.banking.WireTransfersImpl; | ||||
| import com.iluwatar.hexagonal.database.LotteryTicketRepository; | ||||
| import com.iluwatar.hexagonal.database.LotteryTicketInMemoryRepository; | ||||
| import com.iluwatar.hexagonal.domain.LotteryConstants; | ||||
| import com.iluwatar.hexagonal.domain.LotteryNumbers; | ||||
| import com.iluwatar.hexagonal.domain.LotterySystem; | ||||
| import com.iluwatar.hexagonal.domain.LotterySystemImpl; | ||||
| import com.iluwatar.hexagonal.domain.LotteryTicket; | ||||
| import com.iluwatar.hexagonal.domain.LotteryTicketCheckResult; | ||||
| import com.iluwatar.hexagonal.domain.LotteryTicketId; | ||||
| import com.iluwatar.hexagonal.domain.LotteryTicketCheckResult.CheckResult; | ||||
| import com.iluwatar.hexagonal.notifications.LotteryNotifications; | ||||
| import com.iluwatar.hexagonal.notifications.LotteryNotificationsImpl; | ||||
|  | ||||
| import java.util.Optional; | ||||
|  | ||||
| /** | ||||
|  *  | ||||
| @@ -44,45 +38,22 @@ import com.iluwatar.hexagonal.notifications.LotteryNotificationsImpl; | ||||
|  */ | ||||
| public class LotteryServiceImpl implements LotteryService { | ||||
|  | ||||
|   private final LotteryTicketRepository repository; | ||||
|  | ||||
|   private final WireTransfers bank = new WireTransfersImpl(); | ||||
|  | ||||
|   private final LotteryNotifications notifications = new LotteryNotificationsImpl(); | ||||
|   private final LotterySystem lotterySystem; | ||||
|  | ||||
|   /** | ||||
|    * Constructor | ||||
|    */ | ||||
|   public LotteryServiceImpl() { | ||||
|     repository = new LotteryTicketInMemoryRepository(); | ||||
|     lotterySystem = new LotterySystemImpl(); | ||||
|   } | ||||
|    | ||||
|   @Override | ||||
|   public Optional<LotteryTicketId> submitTicket(LotteryTicket ticket) { | ||||
|     boolean result = bank.transferFunds(LotteryConstants.TICKET_PRIZE, ticket.getPlayerDetails().getBankAccount(), | ||||
|         LotteryConstants.SERVICE_BANK_ACCOUNT); | ||||
|     if (result == false) { | ||||
|       notifications.notifyTicketSubmitError(ticket.getPlayerDetails()); | ||||
|       return Optional.empty(); | ||||
|     } | ||||
|     Optional<LotteryTicketId> optional = repository.save(ticket); | ||||
|     if (optional.isPresent()) { | ||||
|       notifications.notifyTicketSubmitted(ticket.getPlayerDetails()); | ||||
|     } | ||||
|     return optional; | ||||
|     return lotterySystem.submitTicket(ticket); | ||||
|   } | ||||
|  | ||||
|   @Override | ||||
|   public LotteryTicketCheckResult checkTicketForPrize(LotteryTicketId id, LotteryNumbers winningNumbers) { | ||||
|     Optional<LotteryTicket> optional = repository.findById(id); | ||||
|     if (optional.isPresent()) { | ||||
|       if (optional.get().getNumbers().equals(winningNumbers)) { | ||||
|         return new LotteryTicketCheckResult(CheckResult.WIN_PRIZE, 1000); | ||||
|       } else { | ||||
|         return new LotteryTicketCheckResult(CheckResult.NO_PRIZE); | ||||
|       } | ||||
|     } else { | ||||
|       return new LotteryTicketCheckResult(CheckResult.TICKET_NOT_SUBMITTED); | ||||
|     } | ||||
|     return lotterySystem.checkTicketForPrize(id, winningNumbers); | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -20,7 +20,7 @@ | ||||
|  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||||
|  * THE SOFTWARE. | ||||
|  */ | ||||
| package com.iluwatar.hexagonal.lottery; | ||||
| package com.iluwatar.hexagonal.domain; | ||||
| 
 | ||||
| import static org.junit.Assert.assertEquals; | ||||
| import static org.junit.Assert.assertTrue; | ||||
| @@ -30,22 +30,15 @@ import java.util.HashSet; | ||||
| import java.util.Map; | ||||
| import java.util.Optional; | ||||
| 
 | ||||
| import com.iluwatar.hexagonal.domain.*; | ||||
| import org.junit.Before; | ||||
| import org.junit.Test; | ||||
| 
 | ||||
| import com.iluwatar.hexagonal.administration.LotteryAdministration; | ||||
| import com.iluwatar.hexagonal.administration.LotteryAdministrationImpl; | ||||
| import com.iluwatar.hexagonal.banking.WireTransfers; | ||||
| import com.iluwatar.hexagonal.banking.WireTransfersImpl; | ||||
| import com.iluwatar.hexagonal.database.LotteryTicketRepository; | ||||
| import com.iluwatar.hexagonal.database.LotteryTicketInMemoryRepository; | ||||
| import com.iluwatar.hexagonal.domain.LotteryNumbers; | ||||
| import com.iluwatar.hexagonal.domain.LotteryTicket; | ||||
| import com.iluwatar.hexagonal.domain.LotteryTicketCheckResult; | ||||
| import com.iluwatar.hexagonal.domain.LotteryTicketCheckResult.CheckResult; | ||||
| import com.iluwatar.hexagonal.domain.LotteryTicketId; | ||||
| import com.iluwatar.hexagonal.service.LotteryService; | ||||
| import com.iluwatar.hexagonal.service.LotteryServiceImpl; | ||||
| import com.iluwatar.hexagonal.test.LotteryTestUtils; | ||||
| 
 | ||||
| /** | ||||
| @@ -55,8 +48,7 @@ import com.iluwatar.hexagonal.test.LotteryTestUtils; | ||||
|  */ | ||||
| public class LotteryTest { | ||||
| 
 | ||||
|   private final LotteryAdministration admin = new LotteryAdministrationImpl(); | ||||
|   private final LotteryService service = new LotteryServiceImpl(); | ||||
|   private final LotterySystem lotterySystem = new LotterySystemImpl(); | ||||
|   private final LotteryTicketRepository repository = new LotteryTicketInMemoryRepository(); | ||||
|   private final WireTransfers wireTransfers = new WireTransfersImpl(); | ||||
|    | ||||
| @@ -72,34 +64,34 @@ public class LotteryTest { | ||||
|     wireTransfers.setFunds("123-12312", 100); | ||||
|      | ||||
|     // admin resets the lottery | ||||
|     admin.resetLottery(); | ||||
|     assertEquals(admin.getAllSubmittedTickets().size(), 0); | ||||
|     lotterySystem.resetLottery(); | ||||
|     assertEquals(lotterySystem.getAllSubmittedTickets().size(), 0); | ||||
|      | ||||
|     // players submit the lottery tickets | ||||
|     Optional<LotteryTicketId> ticket1 = service.submitTicket(LotteryTestUtils.createLotteryTicket("cvt@bbb.com", | ||||
|     Optional<LotteryTicketId> ticket1 = lotterySystem.submitTicket(LotteryTestUtils.createLotteryTicket("cvt@bbb.com", | ||||
|         "123-12312", "+32425255", new HashSet<>(Arrays.asList(1, 2, 3, 4)))); | ||||
|     assertTrue(ticket1.isPresent()); | ||||
|     Optional<LotteryTicketId> ticket2 = service.submitTicket(LotteryTestUtils.createLotteryTicket("ant@bac.com", | ||||
|     Optional<LotteryTicketId> ticket2 = lotterySystem.submitTicket(LotteryTestUtils.createLotteryTicket("ant@bac.com", | ||||
|         "123-12312", "+32423455", new HashSet<>(Arrays.asList(11, 12, 13, 14)))); | ||||
|     assertTrue(ticket2.isPresent()); | ||||
|     Optional<LotteryTicketId> ticket3 = service.submitTicket(LotteryTestUtils.createLotteryTicket("arg@boo.com", | ||||
|     Optional<LotteryTicketId> ticket3 = lotterySystem.submitTicket(LotteryTestUtils.createLotteryTicket("arg@boo.com", | ||||
|         "123-12312", "+32421255", new HashSet<>(Arrays.asList(6, 8, 13, 19)))); | ||||
|     assertTrue(ticket3.isPresent()); | ||||
|     assertEquals(admin.getAllSubmittedTickets().size(), 3); | ||||
|     assertEquals(lotterySystem.getAllSubmittedTickets().size(), 3); | ||||
|      | ||||
|     // perform lottery | ||||
|     LotteryNumbers winningNumbers = admin.performLottery(); | ||||
|     LotteryNumbers winningNumbers = lotterySystem.performLottery(); | ||||
| 
 | ||||
|     // cheat a bit for testing sake, use winning numbers to submit another ticket | ||||
|     Optional<LotteryTicketId> ticket4 = service.submitTicket(LotteryTestUtils.createLotteryTicket("lucky@orb.com", | ||||
|     Optional<LotteryTicketId> ticket4 = lotterySystem.submitTicket(LotteryTestUtils.createLotteryTicket("lucky@orb.com", | ||||
|         "123-12312", "+12421255", winningNumbers.getNumbers())); | ||||
|     assertTrue(ticket4.isPresent()); | ||||
|     assertEquals(admin.getAllSubmittedTickets().size(), 4); | ||||
|     assertEquals(lotterySystem.getAllSubmittedTickets().size(), 4); | ||||
|      | ||||
|     // check winners | ||||
|     Map<LotteryTicketId, LotteryTicket> tickets = admin.getAllSubmittedTickets(); | ||||
|     Map<LotteryTicketId, LotteryTicket> tickets = lotterySystem.getAllSubmittedTickets(); | ||||
|     for (LotteryTicketId id: tickets.keySet()) { | ||||
|       LotteryTicketCheckResult checkResult = service.checkTicketForPrize(id, winningNumbers); | ||||
|       LotteryTicketCheckResult checkResult = lotterySystem.checkTicketForPrize(id, winningNumbers); | ||||
|       assertTrue(checkResult.getResult() != CheckResult.TICKET_NOT_SUBMITTED); | ||||
|       if (checkResult.getResult().equals(CheckResult.WIN_PRIZE)) { | ||||
|         assertTrue(checkResult.getPrizeAmount() > 0); | ||||
| @@ -109,7 +101,7 @@ public class LotteryTest { | ||||
|     } | ||||
|      | ||||
|     // check another ticket that has not been submitted | ||||
|     LotteryTicketCheckResult checkResult = service.checkTicketForPrize(new LotteryTicketId(), winningNumbers); | ||||
|     LotteryTicketCheckResult checkResult = lotterySystem.checkTicketForPrize(new LotteryTicketId(), winningNumbers); | ||||
|     assertTrue(checkResult.getResult() == CheckResult.TICKET_NOT_SUBMITTED); | ||||
|     assertEquals(checkResult.getPrizeAmount(), 0); | ||||
|   } | ||||
		Reference in New Issue
	
	Block a user