generated from pricelees/issue-pr-template
[#48] Tosspay mocking 서버 구현을 위한 멀티모듈 전환 #49
@ -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