/
java56
/
Minesweeper
Обзор
Документация
Войти
/
java56
/
Minesweeper
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/test/java/com/mikhail/minesweeper/service/GameServiceTest.java
95 строк
3 KB
Mikhail Gorbatenkov
50 - add a test for the game service
20 фев 2025, 11:02
20 фев 2025, 11:02
dbc8543
Код
Авторство
О чём код?
package com.mikhail.minesweeper.service; import com.mikhail.minesweeper.dto.request.GameTurnRequest; import com.mikhail.minesweeper.dto.request.NewGameRequest; import com.mikhail.minesweeper.dto.response.GameInfoResponse; import com.mikhail.minesweeper.mapper.GameMapper; import com.mikhail.minesweeper.model.Game; import com.mikhail.minesweeper.model.GameStatus; import com.mikhail.minesweeper.storage.InMemoryGameStorage; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; import java.util.ArrayList; import java.util.List; import java.util.UUID; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.Mockito.*; @ExtendWith(MockitoExtension.class) class GameServiceTest { @Mock private GameFieldService gameFieldService; @Mock private GameValidationService gameValidationService; @Mock private GameMapper gameMapper; private GameService serviceUnderTest; @BeforeEach void setUp() { serviceUnderTest = new GameService(gameFieldService, gameValidationService, gameMapper); } @DisplayName(value = "Должен вернуть DTO, когда создаем игру") @Test void shouldReturnGameInfoResponseWhenCreateGame() { // Given NewGameRequest gameRequest = new NewGameRequest(); gameRequest.setWidth(10); gameRequest.setHeight(10); gameRequest.setMinesCount(10); Game game = new Game(10, 10, 10); List<List<String>> field = new ArrayList<>(); game.setField(field); when(gameFieldService.generateGameField(any(Game.class))).thenReturn(field); when(gameMapper.toGameInfoResponse(any(Game.class))).thenReturn(new GameInfoResponse()); // When GameInfoResponse response = serviceUnderTest.createGame(gameRequest); // Then assertNotNull(response); verify(gameFieldService, times(1)).generateGameField(any(Game.class)); verify(gameMapper, times(1)).toGameInfoResponse(any(Game.class)); } @DisplayName(value = "Должен вернуть ответ, когда пользователь делает корректный ход.") @Test void shouldReturnGameInfoResponseWhenMakeMove() { // Given UUID gameId = UUID.randomUUID(); Game game = new Game(10, 10, 10); game.setStatus(GameStatus.ONGOING); game.setGameId(gameId); GameTurnRequest request = new GameTurnRequest(); request.setGameId(gameId); request.setRow(5); request.setCol(5); InMemoryGameStorage.addGame(game); when(gameMapper.toGameInfoResponse(game)).thenReturn(new GameInfoResponse()); // When GameInfoResponse response = serviceUnderTest.makeMove(request); // Then verify(gameValidationService).validateMove(game, request); verify(gameFieldService).openCell(game, 5, 5); verify(gameValidationService).isGameCompleted(game); verify(gameMapper).toGameInfoResponse(game); assertNotNull(response); } }