add getNodeFromDevice to NodeService

This commit is contained in:
2024-11-22 23:38:33 +01:00
parent 60f771c28a
commit 18d85c8266
2 changed files with 44 additions and 1 deletions

View File

@@ -1,9 +1,12 @@
package ltd.hlaeja.service package ltd.hlaeja.service
import java.util.UUID
import ltd.hlaeja.entity.NodeEntity import ltd.hlaeja.entity.NodeEntity
import ltd.hlaeja.repository.NodeRepository import ltd.hlaeja.repository.NodeRepository
import mu.KotlinLogging import mu.KotlinLogging
import org.springframework.http.HttpStatus.NOT_FOUND
import org.springframework.stereotype.Service import org.springframework.stereotype.Service
import org.springframework.web.server.ResponseStatusException
private val log = KotlinLogging.logger {} private val log = KotlinLogging.logger {}
@@ -16,4 +19,9 @@ class NodeService(
node: NodeEntity, node: NodeEntity,
): NodeEntity = nodeRepository.save(node) ): NodeEntity = nodeRepository.save(node)
.also { log.debug { "Added node ${it.id}" } } .also { log.debug { "Added node ${it.id}" } }
suspend fun getNodeFromDevice(
device: UUID,
): NodeEntity = nodeRepository.findByDevice(device)
?: throw ResponseStatusException(NOT_FOUND)
} }

View File

@@ -3,15 +3,19 @@ package ltd.hlaeja.service
import io.mockk.coEvery import io.mockk.coEvery
import io.mockk.coVerify import io.mockk.coVerify
import io.mockk.mockk import io.mockk.mockk
import java.util.UUID
import kotlinx.coroutines.test.runTest import kotlinx.coroutines.test.runTest
import ltd.hlaeja.entity.NodeEntity import ltd.hlaeja.entity.NodeEntity
import ltd.hlaeja.repository.NodeRepository import ltd.hlaeja.repository.NodeRepository
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test import org.junit.jupiter.api.Test
import org.junit.jupiter.api.assertThrows
import org.springframework.web.server.ResponseStatusException
class NodeServiceTest { class NodeServiceTest {
val repository: NodeRepository = mockk() val repository: NodeRepository = mockk(relaxed = true)
lateinit var service: NodeService lateinit var service: NodeService
@BeforeEach @BeforeEach
@@ -32,4 +36,35 @@ class NodeServiceTest {
// then // then
coVerify(exactly = 1) { repository.save(any()) } 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<ResponseStatusException> {
service.getNodeFromDevice(device)
}
// then
assertThat(exception.message).isEqualTo("404 NOT_FOUND")
}
} }