/
dmuruz
/
Course_Service
Обзор
Документация
Войти
/
dmuruz
/
Course_Service
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
dev
src/test/java/org/example/manager/UserProgressManagerTest.java
75 строк
3 KB
Danil Muruz
MVP
24 апр 2025, 09:39
24 апр 2025, 09:39
16b1c45
Код
Авторство
О чём код?
package org.example.manager; import org.example.dao.UserLessonRepository; import org.example.dto.UserProgressDTO; import org.example.model.LessonStatus; import org.example.model.UserLesson; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import java.util.List; import java.util.Optional; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.Mockito.*; class UserProgressManagerTest { @Mock private UserLessonRepository userLessonRepository; @InjectMocks private UserProgressManager userProgressManager; private UserLesson ul; @BeforeEach void setUp() { MockitoAnnotations.openMocks(this); ul = new UserLesson(); ul.setId(3L); ul.setStatus(LessonStatus.NOT_STARTED); } @Test void resumeCourse_ShouldReturnFirstUnfinished() { when(userLessonRepository.findFirstByUserIdAndLesson_CourseIdAndStatusNot(1L,1L,LessonStatus.COMPLETED.name())) .thenReturn(ul); UserLesson result = userProgressManager.resumeCourse(1L,1L); assertEquals(ul, result); } @Test void getTrainingProgress_ShouldComputePercentage() { UserLesson done = new UserLesson(); done.setStatus(LessonStatus.COMPLETED); List<UserLesson> list = List.of(done, ul); when(userLessonRepository.findByUserIdAndLesson_CourseId(1L,1L)).thenReturn(list); UserProgressDTO dto = userProgressManager.getTrainingProgress(1L,1L); assertEquals(50.0, dto.getProgressPercentage()); assertEquals(1, dto.getLessonsCompleted()); } @Test void updateUserLessonStatus_ShouldSave() { // Подготовка существующего UserLesson ul.setStatus(LessonStatus.IN_PROGRESS); // Мокаем поиск по userId + lessonId when(userLessonRepository.findByUserIdAndLesson_Id(1L, 2L)) .thenReturn(Optional.of(ul)); // Мокаем сохранение when(userLessonRepository.save(ul)) .thenReturn(ul); // Вызываем метод с новым сигнатурным методом UserLesson updated = userProgressManager.updateUserLessonStatus( 1L, // userId 2L, // lessonId LessonStatus.COMPLETED, 5 // completedSteps ); // Проверяем, что статус и шаги обновились assertEquals(LessonStatus.COMPLETED, updated.getStatus()); assertEquals(5, updated.getCompletedSteps()); } }