Files
fiber-orm-nim/tests/test_custom_mapping.nim
T
2026-09-02 12:21:23 -05:00

46 lines
1.0 KiB
Nim

import std/[options, unittest]
import fiber_orm/util
import ./custom_db_types
type CustomModel = object
id: ValidatedId
optionalId: Option[ValidatedId]
absentId: Option[ValidatedId]
relatedIds: seq[ValidatedId]
balance: Money
suite "custom database mappings":
test "uses custom mappings for values nested in structural types":
let model = rowToModel(CustomModel, @[
"id_primary",
"id_optional",
"",
"{id_first,id_second}",
"1250",
])
check:
string(model.id) == "ID_PRIMARY"
model.optionalId.isSome
string(model.optionalId.get) == "ID_OPTIONAL"
model.absentId.isNone
model.relatedIds.len == 2
string(model.relatedIds[0]) == "ID_FIRST"
string(model.relatedIds[1]) == "ID_SECOND"
model.balance.cents == 1_250
test "propagates errors from custom mappings without falling back":
expect ValueError:
discard rowToModel(CustomModel, @[
"invalid",
"",
"",
"{}",
"1250",
])