diff --git a/src/main/kotlin/ltd/hlaeja/service/NodeService.kt b/src/main/kotlin/ltd/hlaeja/service/NodeService.kt new file mode 100644 index 0000000..15b3f00 --- /dev/null +++ b/src/main/kotlin/ltd/hlaeja/service/NodeService.kt @@ -0,0 +1,19 @@ +package ltd.hlaeja.service + +import ltd.hlaeja.entity.NodeEntity +import ltd.hlaeja.repository.NodeRepository +import mu.KotlinLogging +import org.springframework.stereotype.Service + +private val log = KotlinLogging.logger {} + +@Service +class NodeService( + private val nodeRepository: NodeRepository, +) { + + suspend fun addNode( + node: NodeEntity, + ): NodeEntity = nodeRepository.save(node) + .also { log.debug { "Added node ${it.id}" } } +} diff --git a/src/test/kotlin/ltd/hlaeja/service/NodeServiceTest.kt b/src/test/kotlin/ltd/hlaeja/service/NodeServiceTest.kt new file mode 100644 index 0000000..19a45de --- /dev/null +++ b/src/test/kotlin/ltd/hlaeja/service/NodeServiceTest.kt @@ -0,0 +1,35 @@ +package ltd.hlaeja.service + +import io.mockk.coEvery +import io.mockk.coVerify +import io.mockk.mockk +import kotlinx.coroutines.test.runTest +import ltd.hlaeja.entity.NodeEntity +import ltd.hlaeja.repository.NodeRepository +import org.junit.jupiter.api.BeforeEach +import org.junit.jupiter.api.Test + +class NodeServiceTest { + + val repository: NodeRepository = mockk() + lateinit var service: NodeService + + @BeforeEach + fun setUp() { + service = NodeService(repository) + } + + @Test + fun `add new node - success`() = runTest { + // given + val entity: NodeEntity = mockk() + + coEvery { repository.save(any()) } returns entity + + // when + service.addNode(entity) + + // then + coVerify(exactly = 1) { repository.save(any()) } + } +}