|
|
|
@@ -4,7 +4,7 @@ import de.nowchess.api.dto.*
|
|
|
|
|
import de.nowchess.chess.exception.BadRequestException
|
|
|
|
|
import io.quarkus.test.junit.QuarkusTest
|
|
|
|
|
import jakarta.inject.Inject
|
|
|
|
|
import org.junit.jupiter.api.{Test, DisplayName}
|
|
|
|
|
import org.junit.jupiter.api.{DisplayName, Test}
|
|
|
|
|
import org.junit.jupiter.api.Assertions.*
|
|
|
|
|
|
|
|
|
|
import scala.compiletime.uninitialized
|
|
|
|
@@ -20,7 +20,7 @@ class GameResourceIntegrationTest:
|
|
|
|
|
@Test
|
|
|
|
|
@DisplayName("createGame returns 201")
|
|
|
|
|
def testCreateGame(): Unit =
|
|
|
|
|
val req = CreateGameRequestDto(None, None)
|
|
|
|
|
val req = CreateGameRequestDto(None, None)
|
|
|
|
|
val resp = resource.createGame(req)
|
|
|
|
|
assertEquals(201, resp.getStatus)
|
|
|
|
|
val dto = resp.getEntity.asInstanceOf[GameFullDto]
|
|
|
|
@@ -30,8 +30,8 @@ class GameResourceIntegrationTest:
|
|
|
|
|
@DisplayName("getGame returns 200")
|
|
|
|
|
def testGetGame(): Unit =
|
|
|
|
|
val createResp = resource.createGame(CreateGameRequestDto(None, None))
|
|
|
|
|
val gameId = createResp.getEntity.asInstanceOf[GameFullDto].gameId
|
|
|
|
|
val getResp = resource.getGame(gameId)
|
|
|
|
|
val gameId = createResp.getEntity.asInstanceOf[GameFullDto].gameId
|
|
|
|
|
val getResp = resource.getGame(gameId)
|
|
|
|
|
assertEquals(200, getResp.getStatus)
|
|
|
|
|
val dto = getResp.getEntity.asInstanceOf[GameFullDto]
|
|
|
|
|
assertEquals(gameId, dto.gameId)
|
|
|
|
@@ -40,8 +40,8 @@ class GameResourceIntegrationTest:
|
|
|
|
|
@DisplayName("makeMove advances game")
|
|
|
|
|
def testMakeMove(): Unit =
|
|
|
|
|
val createResp = resource.createGame(CreateGameRequestDto(None, None))
|
|
|
|
|
val gameId = createResp.getEntity.asInstanceOf[GameFullDto].gameId
|
|
|
|
|
val moveResp = resource.makeMove(gameId, "e2e4")
|
|
|
|
|
val gameId = createResp.getEntity.asInstanceOf[GameFullDto].gameId
|
|
|
|
|
val moveResp = resource.makeMove(gameId, "e2e4")
|
|
|
|
|
assertEquals(200, moveResp.getStatus)
|
|
|
|
|
val state = moveResp.getEntity.asInstanceOf[GameStateDto]
|
|
|
|
|
assertEquals("black", state.turn)
|
|
|
|
@@ -50,15 +50,15 @@ class GameResourceIntegrationTest:
|
|
|
|
|
@DisplayName("makeMove with invalid UCI throws")
|
|
|
|
|
def testMakeMoveInvalid(): Unit =
|
|
|
|
|
val createResp = resource.createGame(CreateGameRequestDto(None, None))
|
|
|
|
|
val gameId = createResp.getEntity.asInstanceOf[GameFullDto].gameId
|
|
|
|
|
val gameId = createResp.getEntity.asInstanceOf[GameFullDto].gameId
|
|
|
|
|
assertThrows(classOf[BadRequestException], () => resource.makeMove(gameId, "invalid"))
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
@DisplayName("getLegalMoves returns moves")
|
|
|
|
|
def testGetLegalMoves(): Unit =
|
|
|
|
|
val createResp = resource.createGame(CreateGameRequestDto(None, None))
|
|
|
|
|
val gameId = createResp.getEntity.asInstanceOf[GameFullDto].gameId
|
|
|
|
|
val movesResp = resource.getLegalMoves(gameId, "")
|
|
|
|
|
val gameId = createResp.getEntity.asInstanceOf[GameFullDto].gameId
|
|
|
|
|
val movesResp = resource.getLegalMoves(gameId, "")
|
|
|
|
|
assertEquals(200, movesResp.getStatus)
|
|
|
|
|
val dto = movesResp.getEntity.asInstanceOf[LegalMovesResponseDto]
|
|
|
|
|
assertFalse(dto.moves.isEmpty)
|
|
|
|
@@ -67,18 +67,18 @@ class GameResourceIntegrationTest:
|
|
|
|
|
@DisplayName("resignGame updates state")
|
|
|
|
|
def testResignGame(): Unit =
|
|
|
|
|
val createResp = resource.createGame(CreateGameRequestDto(None, None))
|
|
|
|
|
val gameId = createResp.getEntity.asInstanceOf[GameFullDto].gameId
|
|
|
|
|
val gameId = createResp.getEntity.asInstanceOf[GameFullDto].gameId
|
|
|
|
|
val resignResp = resource.resignGame(gameId)
|
|
|
|
|
assertEquals(200, resignResp.getStatus)
|
|
|
|
|
val getResp = resource.getGame(gameId)
|
|
|
|
|
val state = getResp.getEntity.asInstanceOf[GameFullDto].state
|
|
|
|
|
val state = getResp.getEntity.asInstanceOf[GameFullDto].state
|
|
|
|
|
assertEquals("resign", state.status)
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
@DisplayName("undoMove reverts")
|
|
|
|
|
def testUndoMove(): Unit =
|
|
|
|
|
val createResp = resource.createGame(CreateGameRequestDto(None, None))
|
|
|
|
|
val gameId = createResp.getEntity.asInstanceOf[GameFullDto].gameId
|
|
|
|
|
val gameId = createResp.getEntity.asInstanceOf[GameFullDto].gameId
|
|
|
|
|
resource.makeMove(gameId, "e2e4")
|
|
|
|
|
val undoResp = resource.undoMove(gameId)
|
|
|
|
|
assertEquals(200, undoResp.getStatus)
|
|
|
|
@@ -89,7 +89,7 @@ class GameResourceIntegrationTest:
|
|
|
|
|
@DisplayName("redoMove restores")
|
|
|
|
|
def testRedoMove(): Unit =
|
|
|
|
|
val createResp = resource.createGame(CreateGameRequestDto(None, None))
|
|
|
|
|
val gameId = createResp.getEntity.asInstanceOf[GameFullDto].gameId
|
|
|
|
|
val gameId = createResp.getEntity.asInstanceOf[GameFullDto].gameId
|
|
|
|
|
resource.makeMove(gameId, "e2e4")
|
|
|
|
|
resource.undoMove(gameId)
|
|
|
|
|
val redoResp = resource.redoMove(gameId)
|
|
|
|
@@ -101,15 +101,15 @@ class GameResourceIntegrationTest:
|
|
|
|
|
@DisplayName("drawAction offer")
|
|
|
|
|
def testDrawActionOffer(): Unit =
|
|
|
|
|
val createResp = resource.createGame(CreateGameRequestDto(None, None))
|
|
|
|
|
val gameId = createResp.getEntity.asInstanceOf[GameFullDto].gameId
|
|
|
|
|
val resp = resource.drawAction(gameId, "offer")
|
|
|
|
|
val gameId = createResp.getEntity.asInstanceOf[GameFullDto].gameId
|
|
|
|
|
val resp = resource.drawAction(gameId, "offer")
|
|
|
|
|
assertEquals(200, resp.getStatus)
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
@DisplayName("drawAction accept")
|
|
|
|
|
def testDrawActionAccept(): Unit =
|
|
|
|
|
val createResp = resource.createGame(CreateGameRequestDto(None, None))
|
|
|
|
|
val gameId = createResp.getEntity.asInstanceOf[GameFullDto].gameId
|
|
|
|
|
val gameId = createResp.getEntity.asInstanceOf[GameFullDto].gameId
|
|
|
|
|
resource.drawAction(gameId, "offer")
|
|
|
|
|
val resp = resource.drawAction(gameId, "accept")
|
|
|
|
|
assertEquals(200, resp.getStatus)
|
|
|
|
@@ -117,8 +117,8 @@ class GameResourceIntegrationTest:
|
|
|
|
|
@Test
|
|
|
|
|
@DisplayName("importFen creates game")
|
|
|
|
|
def testImportFen(): Unit =
|
|
|
|
|
val fen = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"
|
|
|
|
|
val req = ImportFenRequestDto(fen, None, None)
|
|
|
|
|
val fen = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"
|
|
|
|
|
val req = ImportFenRequestDto(fen, None, None)
|
|
|
|
|
val resp = resource.importFen(req)
|
|
|
|
|
assertEquals(201, resp.getStatus)
|
|
|
|
|
val dto = resp.getEntity.asInstanceOf[GameFullDto]
|
|
|
|
@@ -127,7 +127,7 @@ class GameResourceIntegrationTest:
|
|
|
|
|
@Test
|
|
|
|
|
@DisplayName("importPgn creates game")
|
|
|
|
|
def testImportPgn(): Unit =
|
|
|
|
|
val req = ImportPgnRequestDto("1. e4 c5")
|
|
|
|
|
val req = ImportPgnRequestDto("1. e4 c5")
|
|
|
|
|
val resp = resource.importPgn(req)
|
|
|
|
|
assertEquals(201, resp.getStatus)
|
|
|
|
|
val dto = resp.getEntity.asInstanceOf[GameFullDto]
|
|
|
|
@@ -137,8 +137,8 @@ class GameResourceIntegrationTest:
|
|
|
|
|
@DisplayName("exportFen returns FEN")
|
|
|
|
|
def testExportFen(): Unit =
|
|
|
|
|
val createResp = resource.createGame(CreateGameRequestDto(None, None))
|
|
|
|
|
val gameId = createResp.getEntity.asInstanceOf[GameFullDto].gameId
|
|
|
|
|
val resp = resource.exportFen(gameId)
|
|
|
|
|
val gameId = createResp.getEntity.asInstanceOf[GameFullDto].gameId
|
|
|
|
|
val resp = resource.exportFen(gameId)
|
|
|
|
|
assertEquals(200, resp.getStatus)
|
|
|
|
|
assertTrue(resp.getEntity.asInstanceOf[String].contains("rnbqkbnr"))
|
|
|
|
|
|
|
|
|
@@ -146,7 +146,7 @@ class GameResourceIntegrationTest:
|
|
|
|
|
@DisplayName("exportPgn returns PGN")
|
|
|
|
|
def testExportPgn(): Unit =
|
|
|
|
|
val createResp = resource.createGame(CreateGameRequestDto(None, None))
|
|
|
|
|
val gameId = createResp.getEntity.asInstanceOf[GameFullDto].gameId
|
|
|
|
|
val gameId = createResp.getEntity.asInstanceOf[GameFullDto].gameId
|
|
|
|
|
resource.makeMove(gameId, "e2e4")
|
|
|
|
|
val resp = resource.exportPgn(gameId)
|
|
|
|
|
assertEquals(200, resp.getStatus)
|
|
|
|
|