Merge pull request #41 from lumijiez/testing_branch

Testing branch
This commit was merged in pull request #41.
This commit is contained in:
Dmitrii Cravcenco
2023-12-08 17:47:06 +02:00
committed by GitHub
4 changed files with 83 additions and 16 deletions

View File

@@ -5,25 +5,19 @@ import com.faf223.expensetrackerfaf.dto.ExpenseDTO;
import com.faf223.expensetrackerfaf.model.Expense; import com.faf223.expensetrackerfaf.model.Expense;
import com.faf223.expensetrackerfaf.service.ExpenseCategoryService; import com.faf223.expensetrackerfaf.service.ExpenseCategoryService;
import com.faf223.expensetrackerfaf.service.ExpenseService; import com.faf223.expensetrackerfaf.service.ExpenseService;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.time.LocalDate; import java.time.LocalDate;
@Component @Component
@RequiredArgsConstructor
public class ExpenseMapper { public class ExpenseMapper {
private final ExpenseService expenseService;
private final ExpenseCategoryService expenseCategoryService; private final ExpenseCategoryService expenseCategoryService;
private final UserMapper userMapper; 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) { public ExpenseDTO toDto(Expense expense) {
return new ExpenseDTO(expense.getId(), userMapper.toDto(expense.getUser()), return new ExpenseDTO(expense.getId(), userMapper.toDto(expense.getUser()),
expense.getCategory(), expense.getDate(), expense.getAmount()); expense.getCategory(), expense.getDate(), expense.getAmount());

View File

@@ -6,25 +6,19 @@ import com.faf223.expensetrackerfaf.model.Expense;
import com.faf223.expensetrackerfaf.model.Income; import com.faf223.expensetrackerfaf.model.Income;
import com.faf223.expensetrackerfaf.service.IncomeCategoryService; import com.faf223.expensetrackerfaf.service.IncomeCategoryService;
import com.faf223.expensetrackerfaf.service.IncomeService; import com.faf223.expensetrackerfaf.service.IncomeService;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.time.LocalDate; import java.time.LocalDate;
@Component @Component
@RequiredArgsConstructor
public class IncomeMapper { public class IncomeMapper {
private final IncomeService incomeService;
private final IncomeCategoryService incomeCategoryService; private final IncomeCategoryService incomeCategoryService;
private final UserMapper userMapper; 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) { public IncomeDTO toDto(Income income) {
return new IncomeDTO(income.getId(), userMapper.toDto(income.getUser()), return new IncomeDTO(income.getId(), userMapper.toDto(income.getUser()),
income.getCategory(), income.getDate(), income.getAmount()); income.getCategory(), income.getDate(), income.getAmount());

View File

@@ -3,10 +3,16 @@ package com.faf223.expensetrackerfaf.model;
import jakarta.persistence.*; import jakarta.persistence.*;
import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor;
@Data @Data
@Entity(name = "income_categories") @Entity(name = "income_categories")
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class IncomeCategory implements IMoneyTransactionCategory { public class IncomeCategory implements IMoneyTransactionCategory {
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)

View File

@@ -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<Income> incomes = new ArrayList<>();
when(incomeRepository.findByUser(user)).thenReturn(List.of(income));
incomes = incomeRepository.findByUser(user);
// TODO: finish service test
}
}