Skip to content
Snippets Groups Projects
Select Git revision
  • 8fea58409c0d99f5145e64bc4605dfd4a7c47bee
  • main default protected
  • wip-injection
3 results

PlayerIntegrationTest.kt

Blame
  • PlayerIntegrationTest.kt 1.95 KiB
    package player
    
    import BaseIntegrationTest
    import betclic.test.player.dtos.PlayerCreationDTO
    import betclic.test.player.dtos.PlayerUpdateDTO
    import betclic.test.player.entities.Player
    import betclic.test.player.repositories.PlayerRepository
    import io.ktor.client.request.*
    import io.ktor.http.*
    import kotlinx.serialization.encodeToString
    import kotlinx.serialization.json.Json
    import org.assertj.core.api.Assertions.assertThat
    import org.junit.Test
    import org.koin.test.inject
    import kotlin.test.assertEquals
    
    
    private const val NAME_1 = "Clement"
    private const val NAME_2 = "Maxime"
    
    class PlayerIntegrationTest : BaseIntegrationTest() {
    
        @Test
        fun `When calling player creation, a player should be saved in DB`() = iTest {
            val response = client.post("/players") {
                val player = PlayerCreationDTO(pseudo = NAME_1)
                val json = Json.encodeToString(player)
                header(HttpHeaders.ContentType, ContentType.Application.Json)
                setBody(json)
            }
    
            assertEquals(HttpStatusCode.Created, response.status)
    
            val playerRepository by inject<PlayerRepository>()
            val player = playerRepository.findPlayerByPseudo(NAME_1)
            assertThat(player).extracting("pseudo", "pointsNumber")
                .containsExactly(NAME_1, 0)
        }
    
        @Test
        fun `When calling player update, a player should be updated in DB`() = iTest {
            val playerRepository by inject<PlayerRepository>()
            playerRepository.createNewPlayer(Player(pseudo = NAME_2, pointsNumber = 0))
            val response = client.put("/players") {
                header(HttpHeaders.ContentType, ContentType.Application.Json)
                setBody(Json.encodeToString(PlayerUpdateDTO(pseudo = NAME_2, pointsNumber = 30)))
            }
            assertEquals(HttpStatusCode.OK, response.status)
            val player = playerRepository.findPlayerByPseudo(NAME_2)
            assertThat(player).extracting("pseudo", "pointsNumber")
                .containsExactly(NAME_2, 30)
        }
    }