Add income service test function

This commit is contained in:
Dmitrii Cravcenco
2023-12-08 17:45:43 +02:00
parent 2a83718dd6
commit cf9a18cd33
2 changed files with 34 additions and 6 deletions

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

@@ -1,5 +1,6 @@
package com.faf223.expensetrackerfaf.service; package com.faf223.expensetrackerfaf.service;
import com.faf223.expensetrackerfaf.model.IMoneyTransaction;
import com.faf223.expensetrackerfaf.model.Income; import com.faf223.expensetrackerfaf.model.Income;
import com.faf223.expensetrackerfaf.model.IncomeCategory; import com.faf223.expensetrackerfaf.model.IncomeCategory;
import com.faf223.expensetrackerfaf.model.User; 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.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks; import org.mockito.InjectMocks;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.junit.jupiter.MockitoExtension; import org.mockito.junit.jupiter.MockitoExtension;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional; import java.util.Optional;
import static org.mockito.Mockito.when;
@ExtendWith(MockitoExtension.class) @ExtendWith(MockitoExtension.class)
public class IncomeServiceTest { public class IncomeServiceTest {
@@ -29,22 +35,38 @@ public class IncomeServiceTest {
@InjectMocks @InjectMocks
private IncomeService incomeService; private IncomeService incomeService;
// public void createOrUpdate(IMoneyTransaction income) {
// incomeRepository.save((Income) income);
// }
@Test @Test
public void IncomeService_CreateIncome_ReturnsIncome() { public void IncomeService_CreateIncome_ReturnsIncome() {
// TODO: move income creation to service or move this test to controller tests User user = User.builder().build();
Optional<User> user = userRepository.findByUsername("Deep Deep"); when(userRepository.findByUsername("Deep Deep")).thenReturn(Optional.of(user));
Assertions.assertThat(user.isPresent()).isTrue(); user = userRepository.findByUsername("Deep Deep").get();
IncomeCategory incomeCategory = incomeCategoryRepository.getReferenceById(4L);
IncomeCategory incomeCategory = IncomeCategory.builder().build();
when(incomeCategoryRepository.findById(1L)).thenReturn(Optional.of(incomeCategory));
incomeCategory = incomeCategoryRepository.findById(1L).get();
Income income = Income.builder() Income income = Income.builder()
.user(user.get()) .user(user)
.amount(BigDecimal.valueOf(700)) .amount(BigDecimal.valueOf(111))
.category(incomeCategory) .category(incomeCategory)
.date(LocalDate.of(2023,10,5)) .date(LocalDate.of(2023,10,5))
.build(); .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
} }