Skip to content

Commit 6d6a53b

Browse files
committed
test: add unit tests for TransactionService
1 parent e0a915c commit 6d6a53b

File tree

1 file changed

+82
-0
lines changed

1 file changed

+82
-0
lines changed

src/test/java/fun/trackmoney/transaction/service/TransactionServiceTest.java

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121

2222
import java.math.BigDecimal;
2323
import java.sql.Timestamp;
24+
import java.time.LocalDate;
25+
import java.time.LocalDateTime;
2426
import java.util.*;
2527

2628
import static org.junit.jupiter.api.Assertions.*;
@@ -175,4 +177,84 @@ void getExpense_shouldReturnTotalExpense() {
175177

176178
assertEquals(totalIncome, result);
177179
}
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+
}
178260
}

0 commit comments

Comments
 (0)