From 18d85c82662f857e1b11882b05da7334c3c324d7 Mon Sep 17 00:00:00 2001 From: Swordsteel Date: Fri, 22 Nov 2024 23:38:33 +0100 Subject: [PATCH] add getNodeFromDevice to NodeService --- .../kotlin/ltd/hlaeja/service/NodeService.kt | 8 ++++ .../ltd/hlaeja/service/NodeServiceTest.kt | 37 ++++++++++++++++++- 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/ltd/hlaeja/service/NodeService.kt b/src/main/kotlin/ltd/hlaeja/service/NodeService.kt index 15b3f00..c7f2bfe 100644 --- a/src/main/kotlin/ltd/hlaeja/service/NodeService.kt +++ b/src/main/kotlin/ltd/hlaeja/service/NodeService.kt @@ -1,9 +1,12 @@ package ltd.hlaeja.service +import java.util.UUID import ltd.hlaeja.entity.NodeEntity import ltd.hlaeja.repository.NodeRepository import mu.KotlinLogging +import org.springframework.http.HttpStatus.NOT_FOUND import org.springframework.stereotype.Service +import org.springframework.web.server.ResponseStatusException private val log = KotlinLogging.logger {} @@ -16,4 +19,9 @@ class NodeService( node: NodeEntity, ): NodeEntity = nodeRepository.save(node) .also { log.debug { "Added node ${it.id}" } } + + suspend fun getNodeFromDevice( + device: UUID, + ): NodeEntity = nodeRepository.findByDevice(device) + ?: throw ResponseStatusException(NOT_FOUND) } diff --git a/src/test/kotlin/ltd/hlaeja/service/NodeServiceTest.kt b/src/test/kotlin/ltd/hlaeja/service/NodeServiceTest.kt index 19a45de..771776e 100644 --- a/src/test/kotlin/ltd/hlaeja/service/NodeServiceTest.kt +++ b/src/test/kotlin/ltd/hlaeja/service/NodeServiceTest.kt @@ -3,15 +3,19 @@ package ltd.hlaeja.service import io.mockk.coEvery import io.mockk.coVerify import io.mockk.mockk +import java.util.UUID import kotlinx.coroutines.test.runTest import ltd.hlaeja.entity.NodeEntity import ltd.hlaeja.repository.NodeRepository +import org.assertj.core.api.Assertions.assertThat import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test +import org.junit.jupiter.api.assertThrows +import org.springframework.web.server.ResponseStatusException class NodeServiceTest { - val repository: NodeRepository = mockk() + val repository: NodeRepository = mockk(relaxed = true) lateinit var service: NodeService @BeforeEach @@ -32,4 +36,35 @@ class NodeServiceTest { // then coVerify(exactly = 1) { repository.save(any()) } } + + @Test + fun `get type - success`() = runTest { + // given + val device = UUID.fromString("00000000-0000-0000-0000-000000000001") + val entity: NodeEntity = mockk() + + coEvery { repository.findByDevice(any()) } returns entity + + // when + service.getNodeFromDevice(device) + + // then + coVerify(exactly = 1) { repository.findByDevice(any()) } + } + + @Test + fun `get type - fail not found`() = runTest { + // given + val device = UUID.fromString("00000000-0000-0000-0000-000000000001") + + coEvery { repository.findByDevice(any()) } returns null + + // when + val exception = assertThrows { + service.getNodeFromDevice(device) + } + + // then + assertThat(exception.message).isEqualTo("404 NOT_FOUND") + } }