generated from aura-ascend/template-service
add AccountUtil.kt
- AccountEntity toResponse - Account Request toEntity
This commit is contained in:
18
src/main/kotlin/ltd/lulz/util/AccountUtil.kt
Normal file
18
src/main/kotlin/ltd/lulz/util/AccountUtil.kt
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
package ltd.lulz.util
|
||||||
|
|
||||||
|
import java.math.RoundingMode.DOWN
|
||||||
|
import ltd.lulz.model.Account
|
||||||
|
import ltd.lulz.model.AccountEntity
|
||||||
|
import org.springframework.http.HttpStatus.INTERNAL_SERVER_ERROR
|
||||||
|
import org.springframework.web.server.ResponseStatusException
|
||||||
|
|
||||||
|
fun Account.Request.toEntity(): AccountEntity = AccountEntity(
|
||||||
|
name = name,
|
||||||
|
amount = amount.setScale(2, DOWN),
|
||||||
|
)
|
||||||
|
|
||||||
|
fun AccountEntity.toResponse(): Account.Response = Account.Response(
|
||||||
|
id = id ?: throw ResponseStatusException(INTERNAL_SERVER_ERROR),
|
||||||
|
name = name,
|
||||||
|
amount = amount,
|
||||||
|
)
|
||||||
75
src/test/kotlin/ltd/lulz/util/AccountUtilKtTest.kt
Normal file
75
src/test/kotlin/ltd/lulz/util/AccountUtilKtTest.kt
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
package ltd.lulz.util
|
||||||
|
|
||||||
|
import java.math.BigDecimal
|
||||||
|
import java.util.UUID
|
||||||
|
import kotlin.test.Test
|
||||||
|
import ltd.lulz.model.Account
|
||||||
|
import ltd.lulz.model.AccountEntity
|
||||||
|
import org.assertj.core.api.Assertions.assertThat
|
||||||
|
import org.junit.jupiter.api.assertThrows
|
||||||
|
import org.springframework.web.server.ResponseStatusException
|
||||||
|
|
||||||
|
@Suppress("MayBeConstant")
|
||||||
|
class AccountUtilKtTest {
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
val name: String = "some name"
|
||||||
|
val amount: BigDecimal = BigDecimal.valueOf(0.01)
|
||||||
|
val uuid: UUID = UUID.fromString("00000000-0000-0000-0000-000000000000")
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `account request to account entity`() {
|
||||||
|
// given
|
||||||
|
val request = Account.Request(name, amount)
|
||||||
|
|
||||||
|
// when
|
||||||
|
val result = request.toEntity()
|
||||||
|
|
||||||
|
// then
|
||||||
|
assertThat(result.id).isNull()
|
||||||
|
assertThat(result.name).isEqualTo(name)
|
||||||
|
assertThat(result.amount).isEqualTo(amount)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `account request to account entity cut decimals`() {
|
||||||
|
// given
|
||||||
|
val request = Account.Request(name, BigDecimal.valueOf(0.0099))
|
||||||
|
|
||||||
|
// when
|
||||||
|
val result = request.toEntity()
|
||||||
|
|
||||||
|
// then
|
||||||
|
assertThat(result.id).isNull()
|
||||||
|
assertThat(result.name).isEqualTo(name)
|
||||||
|
assertThat(result.amount.toString()).isEqualTo("0.00")
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `account entity to account response`() {
|
||||||
|
// given
|
||||||
|
val entity = AccountEntity(uuid, name, amount)
|
||||||
|
|
||||||
|
// when
|
||||||
|
val result = entity.toResponse()
|
||||||
|
|
||||||
|
// then
|
||||||
|
assertThat(result.id).isEqualTo(uuid)
|
||||||
|
assertThat(result.name).isEqualTo(name)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `account entity to account response - fail`() {
|
||||||
|
// given
|
||||||
|
val entity = AccountEntity(null, name, amount)
|
||||||
|
|
||||||
|
// when
|
||||||
|
val exception = assertThrows<ResponseStatusException> {
|
||||||
|
entity.toResponse()
|
||||||
|
}
|
||||||
|
|
||||||
|
// then
|
||||||
|
assertThat(exception.message).isEqualTo("500 INTERNAL_SERVER_ERROR")
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user