diff --git a/src/main/java/com/faf223/expensetrackerfaf/model/IncomeCategory.java b/src/main/java/com/faf223/expensetrackerfaf/model/IncomeCategory.java index 6fd4f99..ac6f393 100644 --- a/src/main/java/com/faf223/expensetrackerfaf/model/IncomeCategory.java +++ b/src/main/java/com/faf223/expensetrackerfaf/model/IncomeCategory.java @@ -3,10 +3,16 @@ package com.faf223.expensetrackerfaf.model; import jakarta.persistence.*; import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; @Data @Entity(name = "income_categories") +@Builder +@NoArgsConstructor +@AllArgsConstructor public class IncomeCategory implements IMoneyTransactionCategory { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) diff --git a/src/test/java/com/faf223/expensetrackerfaf/service/IncomeServiceTest.java b/src/test/java/com/faf223/expensetrackerfaf/service/IncomeServiceTest.java index bcb74ca..8b0e8c3 100644 --- a/src/test/java/com/faf223/expensetrackerfaf/service/IncomeServiceTest.java +++ b/src/test/java/com/faf223/expensetrackerfaf/service/IncomeServiceTest.java @@ -1,5 +1,6 @@ package com.faf223.expensetrackerfaf.service; +import com.faf223.expensetrackerfaf.model.IMoneyTransaction; import com.faf223.expensetrackerfaf.model.Income; import com.faf223.expensetrackerfaf.model.IncomeCategory; import com.faf223.expensetrackerfaf.model.User; @@ -11,12 +12,17 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks; import org.mockito.Mock; +import org.mockito.Mockito; import org.mockito.junit.jupiter.MockitoExtension; import java.math.BigDecimal; import java.time.LocalDate; +import java.util.ArrayList; +import java.util.List; import java.util.Optional; +import static org.mockito.Mockito.when; + @ExtendWith(MockitoExtension.class) public class IncomeServiceTest { @@ -29,22 +35,38 @@ public class IncomeServiceTest { @InjectMocks private IncomeService incomeService; +// public void createOrUpdate(IMoneyTransaction income) { +// incomeRepository.save((Income) income); +// } + @Test public void IncomeService_CreateIncome_ReturnsIncome() { - // TODO: move income creation to service or move this test to controller tests - Optional user = userRepository.findByUsername("Deep Deep"); - Assertions.assertThat(user.isPresent()).isTrue(); - IncomeCategory incomeCategory = incomeCategoryRepository.getReferenceById(4L); + User user = User.builder().build(); + when(userRepository.findByUsername("Deep Deep")).thenReturn(Optional.of(user)); + user = userRepository.findByUsername("Deep Deep").get(); + + IncomeCategory incomeCategory = IncomeCategory.builder().build(); + when(incomeCategoryRepository.findById(1L)).thenReturn(Optional.of(incomeCategory)); + incomeCategory = incomeCategoryRepository.findById(1L).get(); Income income = Income.builder() - .user(user.get()) - .amount(BigDecimal.valueOf(700)) + .user(user) + .amount(BigDecimal.valueOf(111)) .category(incomeCategory) .date(LocalDate.of(2023,10,5)) .build(); + when(incomeRepository.save(Mockito.any(Income.class))).thenReturn(income); + incomeService.createOrUpdate(income); + Assertions.assertThat(income.getId()).isGreaterThan(0); + + List incomes = new ArrayList<>(); + when(incomeRepository.findByUser(user)).thenReturn(List.of(income)); + incomes = incomeRepository.findByUser(user); + + // TODO: finish service test }