generated from pricelees/issue-pr-template
refactor: 분리한 common.persistence 모듈 테스트 코드 추가
This commit is contained in:
parent
4f0bbe096e
commit
89eeefbf0c
@ -0,0 +1,53 @@
|
||||
package com.sangdol.common.persistence
|
||||
|
||||
import com.sangdol.common.utils.MdcPrincipalIdUtil
|
||||
import io.kotest.assertions.assertSoftly
|
||||
import io.kotest.core.spec.style.FunSpec
|
||||
import io.kotest.matchers.date.shouldBeBefore
|
||||
import io.kotest.matchers.equality.shouldBeEqualUsingFields
|
||||
import io.kotest.matchers.nulls.shouldNotBeNull
|
||||
import io.kotest.matchers.shouldBe
|
||||
import org.springframework.boot.test.context.SpringBootTest
|
||||
import java.time.LocalDateTime
|
||||
|
||||
@SpringBootTest
|
||||
class BaseEntityTest(
|
||||
private val testPersistableBaseEntityRepository: TestPersistableBaseEntityRepository,
|
||||
private val testAuditingBaseEntityRepository: TestAuditingBaseEntityRepository,
|
||||
private val idGenerator: IDGenerator
|
||||
) : FunSpec({
|
||||
context("TestPersistableBaseEntityRepository") {
|
||||
test("PK를 지정하여 INSERT 쿼리를 한번만 전송한다.") {
|
||||
val entity = TestPersistableBaseEntity(idGenerator.create(), "hello").also {
|
||||
testPersistableBaseEntityRepository.saveAndFlush(it)
|
||||
}
|
||||
|
||||
testPersistableBaseEntityRepository.findById(entity.id).also {
|
||||
it.shouldNotBeNull()
|
||||
it.get() shouldBeEqualUsingFields entity
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
context("TestAuditingBaseEntityRepository") {
|
||||
test("Entity 저장 후 Audit 정보를 확인한다.") {
|
||||
val id = idGenerator.create()
|
||||
.also {
|
||||
MdcPrincipalIdUtil.set(it.toString())
|
||||
}.also {
|
||||
testAuditingBaseEntityRepository.saveAndFlush(TestAuditingBaseEntity(it, "hello"))
|
||||
}
|
||||
|
||||
testAuditingBaseEntityRepository.findById(id).also {
|
||||
it.shouldNotBeNull()
|
||||
|
||||
assertSoftly(it.get()) {
|
||||
this.createdAt shouldBeBefore LocalDateTime.now()
|
||||
this.updatedAt shouldBeBefore LocalDateTime.now()
|
||||
this.createdBy shouldBe id
|
||||
this.updatedBy shouldBe id
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
@ -0,0 +1,6 @@
|
||||
package com.sangdol.common.persistence
|
||||
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication
|
||||
|
||||
@SpringBootApplication
|
||||
class TestApplication
|
||||
@ -0,0 +1,12 @@
|
||||
package com.sangdol.common.persistence
|
||||
|
||||
import jakarta.persistence.Entity
|
||||
import org.springframework.data.jpa.repository.JpaRepository
|
||||
|
||||
@Entity
|
||||
class TestAuditingBaseEntity(
|
||||
id: Long,
|
||||
val name: String
|
||||
): AuditingBaseEntity(id)
|
||||
|
||||
interface TestAuditingBaseEntityRepository: JpaRepository<TestAuditingBaseEntity, Long>
|
||||
@ -0,0 +1,12 @@
|
||||
package com.sangdol.common.persistence
|
||||
|
||||
import jakarta.persistence.Entity
|
||||
import org.springframework.data.jpa.repository.JpaRepository
|
||||
|
||||
@Entity
|
||||
class TestPersistableBaseEntity(
|
||||
id: Long,
|
||||
val name: String
|
||||
): PersistableBaseEntity(id)
|
||||
|
||||
interface TestPersistableBaseEntityRepository: JpaRepository<TestPersistableBaseEntity, Long>
|
||||
18
common/persistence/src/test/resources/application.yaml
Normal file
18
common/persistence/src/test/resources/application.yaml
Normal file
@ -0,0 +1,18 @@
|
||||
spring:
|
||||
jpa:
|
||||
properties:
|
||||
hibernate:
|
||||
format_sql: true
|
||||
hibernate:
|
||||
ddl-auto: create-drop
|
||||
show-sql: true
|
||||
h2:
|
||||
console:
|
||||
enabled: true
|
||||
path: /h2-console
|
||||
datasource:
|
||||
hikari:
|
||||
jdbc-url: jdbc:h2:mem:database
|
||||
driver-class-name: org.h2.Driver
|
||||
username: sa
|
||||
password:
|
||||
Loading…
x
Reference in New Issue
Block a user