|
21 | 21 |
|
22 | 22 | import java.math.BigDecimal; |
23 | 23 | import java.sql.Timestamp; |
| 24 | +import java.time.LocalDate; |
| 25 | +import java.time.LocalDateTime; |
24 | 26 | import java.util.*; |
25 | 27 |
|
26 | 28 | import static org.junit.jupiter.api.Assertions.*; |
@@ -175,4 +177,84 @@ void getExpense_shouldReturnTotalExpense() { |
175 | 177 |
|
176 | 178 | assertEquals(totalIncome, result); |
177 | 179 | } |
| 180 | + |
| 181 | + @Test |
| 182 | + void getBill_shouldReturnBillResponseDTO() { |
| 183 | + var accountId = 1; |
| 184 | + |
| 185 | + var transaction1 = new TransactionEntity(); |
| 186 | + var transaction2 = new TransactionEntity(); |
| 187 | + var transaction3 = new TransactionEntity(); |
| 188 | + |
| 189 | + transaction1.setAmount(BigDecimal.valueOf(100)); |
| 190 | + transaction2.setAmount(BigDecimal.valueOf(100)); |
| 191 | + transaction3.setAmount(BigDecimal.valueOf(100)); |
| 192 | + |
| 193 | + LocalDateTime baseDate = LocalDate.now().atStartOfDay(); |
| 194 | + |
| 195 | + |
| 196 | + var day1 = Timestamp.valueOf(baseDate.minusDays(8)); |
| 197 | + transaction1.setTransactionDate(day1); |
| 198 | + |
| 199 | + var day2 = Timestamp.valueOf(baseDate.plusDays(2)); |
| 200 | + transaction2.setTransactionDate(day2); |
| 201 | + |
| 202 | + var day3 = Timestamp.valueOf(baseDate.plusDays(8)); |
| 203 | + transaction3.setTransactionDate(day3); |
| 204 | + |
| 205 | + CategoryEntity category = new CategoryEntity(1, "bill", "anyColor"); |
| 206 | + |
| 207 | + transaction1.setCategory(category); |
| 208 | + transaction2.setCategory(category); |
| 209 | + transaction3.setCategory(category); |
| 210 | + |
| 211 | + when(transactionRepository.findAllByAccountId(accountId)).thenReturn(List.of(transaction1, transaction2)); |
| 212 | + |
| 213 | + var result = transactionService.getBill(accountId); |
| 214 | + |
| 215 | + assertNotNull(result); |
| 216 | + assertEquals(BigDecimal.valueOf(100), result.totalUpcoming()); |
| 217 | + assertEquals(BigDecimal.valueOf(100), result.bill()); |
| 218 | + assertEquals(BigDecimal.valueOf(100), result.bueSoon()); |
| 219 | + } |
| 220 | + |
| 221 | + @Test |
| 222 | + void getBill_shouldReturnEmptyBillResponseDTOWhenNoBills() { |
| 223 | + var accountId = 1; |
| 224 | + |
| 225 | + var transaction1 = new TransactionEntity(); |
| 226 | + var transaction2 = new TransactionEntity(); |
| 227 | + var transaction3 = new TransactionEntity(); |
| 228 | + |
| 229 | + transaction1.setAmount(BigDecimal.valueOf(100)); |
| 230 | + transaction2.setAmount(BigDecimal.valueOf(100)); |
| 231 | + transaction3.setAmount(BigDecimal.valueOf(100)); |
| 232 | + |
| 233 | + LocalDateTime baseDate = LocalDate.now().atStartOfDay(); |
| 234 | + |
| 235 | + |
| 236 | + var day1 = Timestamp.valueOf(baseDate.minusDays(8)); |
| 237 | + transaction1.setTransactionDate(day1); |
| 238 | + |
| 239 | + var day2 = Timestamp.valueOf(baseDate.plusDays(2)); |
| 240 | + transaction2.setTransactionDate(day2); |
| 241 | + |
| 242 | + var day3 = Timestamp.valueOf(baseDate.plusDays(8)); |
| 243 | + transaction3.setTransactionDate(day3); |
| 244 | + |
| 245 | + CategoryEntity category = new CategoryEntity(1, "otherCategory", "anyColor"); |
| 246 | + |
| 247 | + transaction1.setCategory(category); |
| 248 | + transaction2.setCategory(category); |
| 249 | + transaction3.setCategory(category); |
| 250 | + |
| 251 | + when(transactionRepository.findAllByAccountId(accountId)).thenReturn(List.of(transaction1, transaction2)); |
| 252 | + |
| 253 | + var result = transactionService.getBill(accountId); |
| 254 | + |
| 255 | + assertNotNull(result); |
| 256 | + assertEquals(BigDecimal.valueOf(0), result.totalUpcoming()); |
| 257 | + assertEquals(BigDecimal.valueOf(0), result.bill()); |
| 258 | + assertEquals(BigDecimal.valueOf(0), result.bueSoon()); |
| 259 | + } |
178 | 260 | } |
0 commit comments