/
klsfv
/
CalorieTracker
Обзор
Документация
Войти
/
klsfv
/
CalorieTracker
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
server/src/test/java/com/calorietracker/controller/StatisticsControllerTest.java
102 строки
4 KB
klsfv
upload files
15 янв 2026, 03:19
15 янв 2026, 03:19
09dece5
Код
Авторство
О чём код?
package com.calorietracker.controller; import com.calorietracker.dto.DailyStatisticsDto; import com.calorietracker.dto.WeeklyStatisticsDto; import com.calorietracker.service.StatisticsService; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.security.test.context.support.WithMockUser; import org.springframework.test.web.servlet.MockMvc; import java.time.LocalDate; import java.util.ArrayList; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.when; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; @WebMvcTest(StatisticsController.class) class StatisticsControllerTest { @Autowired private MockMvc mockMvc; @MockBean private StatisticsService statisticsService; private DailyStatisticsDto dailyStats; private WeeklyStatisticsDto weeklyStats; @BeforeEach void setUp() { dailyStats = new DailyStatisticsDto(); dailyStats.setDate(LocalDate.now()); dailyStats.setTotalCalories(2000); dailyStats.setTotalProtein(150.0); dailyStats.setTotalFat(80.0); dailyStats.setTotalCarbs(250.0); dailyStats.setMealsCount(5); weeklyStats = new WeeklyStatisticsDto(); weeklyStats.setStartDate(LocalDate.now().minusDays(6)); weeklyStats.setEndDate(LocalDate.now()); weeklyStats.setDailyStats(new ArrayList<>()); weeklyStats.setAverageCalories(2000.0); weeklyStats.setAverageProtein(150.0); weeklyStats.setAverageFat(80.0); weeklyStats.setAverageCarbs(250.0); weeklyStats.setTotalCalories(14000); weeklyStats.setAdherencePercentage(85.7); } @Test @WithMockUser(username = "user-123") void testGetDaily_Success() throws Exception { // Arrange LocalDate date = LocalDate.now(); when(statisticsService.getDaily("user-123", date)).thenReturn(dailyStats); // Act & Assert mockMvc.perform(get("/api/v1/statistics/daily/{date}", date)) .andExpect(status().isOk()) .andExpect(jsonPath("$.date").value(date.toString())) .andExpect(jsonPath("$.totalCalories").value(2000)) .andExpect(jsonPath("$.mealsCount").value(5)); } @Test @WithMockUser(username = "user-123") void testGetWeekly_Success() throws Exception { // Arrange LocalDate startDate = LocalDate.now().minusDays(6); LocalDate endDate = LocalDate.now(); when(statisticsService.getWeekly("user-123", startDate, endDate)).thenReturn(weeklyStats); // Act & Assert mockMvc.perform(get("/api/v1/statistics/weekly") .param("startDate", startDate.toString()) .param("endDate", endDate.toString())) .andExpect(status().isOk()) .andExpect(jsonPath("$.startDate").value(startDate.toString())) .andExpect(jsonPath("$.endDate").value(endDate.toString())) .andExpect(jsonPath("$.averageCalories").value(2000.0)); } @Test @WithMockUser(username = "user-123") void testGetWeekly_WithDefaultDates() throws Exception { // Arrange when(statisticsService.getWeekly(anyString(), any(LocalDate.class), any(LocalDate.class))) .thenReturn(weeklyStats); // Act & Assert mockMvc.perform(get("/api/v1/statistics/weekly")) .andExpect(status().isOk()) .andExpect(jsonPath("$.averageCalories").value(2000.0)); } }