/
berkas
/
Spend-tracker
Обзор
Документация
Войти
/
berkas
/
Spend-tracker
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
api/src/test/java/com/spendtracker/service/ReportServicePeriodCompareTest.java
114 строк
4 KB
akasianov
Created tests for getPeriodCompareReport and getNominalTotal
15 янв 2026, 10:08
15 янв 2026, 10:08
6552751
Код
Авторство
О чём код?
package com.spendtracker.application.service; import com.spendtracker.application.dto.PeriodCompareReportDto; import com.spendtracker.domain.InflationRate; import com.spendtracker.domain.Transaction; import com.spendtracker.repository.InflationRateRepository; import com.spendtracker.repository.TransactionRepository; import com.spendtracker.repository.filter.TransactionFilter; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import java.math.BigDecimal; import java.time.LocalDateTime; import java.time.YearMonth; import java.util.List; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.*; class ReportServicePeriodCompareTest { private TransactionRepository transactionRepository; private InflationRateRepository inflationRateRepository; private ReportService reportService; @BeforeEach void setUp() { transactionRepository = mock(TransactionRepository.class); inflationRateRepository = mock(InflationRateRepository.class); reportService = new ReportService( transactionRepository, inflationRateRepository ); } @Test void compares_two_periods_with_inflation_adjustment() { when(transactionRepository.findAll(any(TransactionFilter.class))) .thenReturn( List.of( transaction("1000"), transaction("2000") ), List.of( transaction("4000") ) ); when(inflationRateRepository.findAllByStartAndEndDates(2022, 2023)) .thenReturn(List.of( new InflationRate(2023, 1, new BigDecimal("0.10")), new InflationRate(2023, 2, new BigDecimal("0.05")) )); PeriodCompareReportDto report = reportService.getPeriodCompareReport( "user-1", YearMonth.of(2022, 1), YearMonth.of(2022, 12), YearMonth.of(2023, 1), YearMonth.of(2023, 12) ); assertThat(report.getPeriodANominal()) .isEqualByComparingTo("3000"); assertThat(report.getPeriodBNominal()) .isEqualByComparingTo("4000"); assertThat(report.getPeriodAReal()) .isEqualByComparingTo("3465.0000"); assertThat(report.getPeriodBReal()) .isEqualByComparingTo("4000"); assertThat(report.getRealDifference()) .isEqualByComparingTo("535.0000"); } @Test void returns_zero_growth_when_period_a_is_zero() { when(transactionRepository.findAll(any())) .thenReturn(List.of(), List.of(transaction("1000"))); when(inflationRateRepository.findAllByStartAndEndDates(anyInt(), anyInt())) .thenReturn(List.of()); PeriodCompareReportDto report = reportService.getPeriodCompareReport( "user", YearMonth.of(2022, 1), YearMonth.of(2022, 12), YearMonth.of(2023, 1), YearMonth.of(2023, 12) ); assertThat(report.getPeriodANominal()) .isZero(); assertThat(report.getRealGrowthPercent()) .isZero(); } private Transaction transaction(String amount) { return new Transaction( "tx", "user", "cat", new BigDecimal(amount), "EXPENSE", LocalDateTime.now() ); } }