|
24 | 24 | */ |
25 | 25 | package com.iluwatar.idempotentconsumer; |
26 | 26 |
|
| 27 | +import static org.junit.jupiter.api.Assertions.assertEquals; |
| 28 | +import static org.junit.jupiter.api.Assertions.assertThrows; |
| 29 | +import static org.mockito.ArgumentMatchers.any; |
| 30 | +import static org.mockito.Mockito.times; |
| 31 | +import static org.mockito.Mockito.verify; |
| 32 | +import static org.mockito.Mockito.when; |
| 33 | + |
| 34 | +import java.util.Optional; |
| 35 | +import java.util.UUID; |
27 | 36 | import org.junit.jupiter.api.BeforeEach; |
28 | 37 | import org.junit.jupiter.api.Test; |
29 | 38 | import org.junit.jupiter.api.extension.ExtendWith; |
30 | 39 | import org.mockito.Mock; |
31 | 40 | import org.mockito.junit.jupiter.MockitoExtension; |
32 | 41 |
|
33 | | -import java.util.Optional; |
34 | | -import java.util.UUID; |
35 | | - |
36 | | -import static org.junit.jupiter.api.Assertions.*; |
37 | | -import static org.mockito.ArgumentMatchers.any; |
38 | | -import static org.mockito.Mockito.times; |
39 | | -import static org.mockito.Mockito.verify; |
40 | | -import static org.mockito.Mockito.when; |
41 | | - |
42 | 42 | @ExtendWith(MockitoExtension.class) |
43 | 43 | class RequestServiceTests { |
44 | 44 | private RequestService requestService; |
@@ -92,6 +92,26 @@ void startRequest_whenIsPending() { |
92 | 92 | verify(requestRepository, times(1)).save(startedEntity); |
93 | 93 | } |
94 | 94 |
|
| 95 | + @Test |
| 96 | + void startRequest_whenIsStarted_shouldThrowError() { |
| 97 | + UUID uuid = UUID.randomUUID(); |
| 98 | + Request requestStarted = new Request(uuid, Request.Status.STARTED); |
| 99 | + when(requestRepository.findById(any())).thenReturn(Optional.of(requestStarted)); |
| 100 | + assertThrows(InvalidNextStateException.class, ()->requestService.start(uuid)); |
| 101 | + verify(requestRepository, times(1)).findById(uuid); |
| 102 | + verify(requestRepository, times(0)).save(any()); |
| 103 | + } |
| 104 | + |
| 105 | + @Test |
| 106 | + void startRequest_whenIsCompleted_shouldThrowError() { |
| 107 | + UUID uuid = UUID.randomUUID(); |
| 108 | + Request requestStarted = new Request(uuid, Request.Status.COMPLETED); |
| 109 | + when(requestRepository.findById(any())).thenReturn(Optional.of(requestStarted)); |
| 110 | + assertThrows(InvalidNextStateException.class, ()->requestService.start(uuid)); |
| 111 | + verify(requestRepository, times(1)).findById(uuid); |
| 112 | + verify(requestRepository, times(0)).save(any()); |
| 113 | + } |
| 114 | + |
95 | 115 | @Test |
96 | 116 | void completeRequest_whenStarted() { |
97 | 117 | UUID uuid = UUID.randomUUID(); |
|
0 commit comments