diff --git a/src/main/java/com/faf223/expensetrackerfaf/dto/mappers/ExpenseMapper.java b/src/main/java/com/faf223/expensetrackerfaf/dto/mappers/ExpenseMapper.java index 9bc257f..654dbee 100644 --- a/src/main/java/com/faf223/expensetrackerfaf/dto/mappers/ExpenseMapper.java +++ b/src/main/java/com/faf223/expensetrackerfaf/dto/mappers/ExpenseMapper.java @@ -5,25 +5,19 @@ import com.faf223.expensetrackerfaf.dto.ExpenseDTO; import com.faf223.expensetrackerfaf.model.Expense; import com.faf223.expensetrackerfaf.service.ExpenseCategoryService; import com.faf223.expensetrackerfaf.service.ExpenseService; +import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.time.LocalDate; @Component +@RequiredArgsConstructor public class ExpenseMapper { - private final ExpenseService expenseService; private final ExpenseCategoryService expenseCategoryService; private final UserMapper userMapper; - @Autowired - public ExpenseMapper(ExpenseService expenseService, ExpenseCategoryService expenseCategoryService, UserMapper userMapper) { - this.expenseService = expenseService; - this.expenseCategoryService = expenseCategoryService; - this.userMapper = userMapper; - } - public ExpenseDTO toDto(Expense expense) { return new ExpenseDTO(expense.getId(), userMapper.toDto(expense.getUser()), expense.getCategory(), expense.getDate(), expense.getAmount()); diff --git a/src/main/java/com/faf223/expensetrackerfaf/dto/mappers/IncomeMapper.java b/src/main/java/com/faf223/expensetrackerfaf/dto/mappers/IncomeMapper.java index a59a2dd..b3059ce 100644 --- a/src/main/java/com/faf223/expensetrackerfaf/dto/mappers/IncomeMapper.java +++ b/src/main/java/com/faf223/expensetrackerfaf/dto/mappers/IncomeMapper.java @@ -6,25 +6,19 @@ import com.faf223.expensetrackerfaf.model.Expense; import com.faf223.expensetrackerfaf.model.Income; import com.faf223.expensetrackerfaf.service.IncomeCategoryService; import com.faf223.expensetrackerfaf.service.IncomeService; +import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.time.LocalDate; @Component +@RequiredArgsConstructor public class IncomeMapper { - private final IncomeService incomeService; private final IncomeCategoryService incomeCategoryService; private final UserMapper userMapper; - @Autowired - public IncomeMapper(IncomeService incomeService, IncomeCategoryService incomeCategoryService, UserMapper userMapper) { - this.incomeService = incomeService; - this.incomeCategoryService = incomeCategoryService; - this.userMapper = userMapper; - } - public IncomeDTO toDto(Income income) { return new IncomeDTO(income.getId(), userMapper.toDto(income.getUser()), income.getCategory(), income.getDate(), income.getAmount()); 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 new file mode 100644 index 0000000..8b0e8c3 --- /dev/null +++ b/src/test/java/com/faf223/expensetrackerfaf/service/IncomeServiceTest.java @@ -0,0 +1,73 @@ +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; +import com.faf223.expensetrackerfaf.repository.IncomeCategoryRepository; +import com.faf223.expensetrackerfaf.repository.IncomeRepository; +import com.faf223.expensetrackerfaf.repository.UserRepository; +import org.assertj.core.api.Assertions; +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 { + + @Mock + private IncomeRepository incomeRepository; + @Mock + private IncomeCategoryRepository incomeCategoryRepository; + @Mock + private UserRepository userRepository; + @InjectMocks + private IncomeService incomeService; + +// public void createOrUpdate(IMoneyTransaction income) { +// incomeRepository.save((Income) income); +// } + + @Test + public void IncomeService_CreateIncome_ReturnsIncome() { + + 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) + .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 + + } + +}