Merge pull request #909 from thesimplekid/fix_unit_ser

fix(cashu): preserve original case for custom CurrencyUnit values
This commit is contained in:
thesimplekid
2025-07-24 16:59:33 +01:00
committed by GitHub
2 changed files with 13 additions and 3 deletions

View File

@@ -23,6 +23,8 @@
- cdk-mintd: Updated to use new mint lifecycle methods for improved service management ([thesimplekid]).
- cdk-integration-tests: Updated test utilities to use new mint lifecycle management ([thesimplekid]).
### Fixed
- cashu: Fixed CurrencyUnit custom units preserving original case instead of being converted to uppercase ([thesimplekid]).
## [0.11.0](https://github.com/cashubtc/cdk/releases/tag/v0.11.0)

View File

@@ -591,14 +591,14 @@ impl CurrencyUnit {
impl FromStr for CurrencyUnit {
type Err = Error;
fn from_str(value: &str) -> Result<Self, Self::Err> {
let value = &value.to_uppercase();
match value.as_str() {
let upper_value = value.to_uppercase();
match upper_value.as_str() {
"SAT" => Ok(Self::Sat),
"MSAT" => Ok(Self::Msat),
"USD" => Ok(Self::Usd),
"EUR" => Ok(Self::Eur),
"AUTH" => Ok(Self::Auth),
c => Ok(Self::Custom(c.to_string())),
_ => Ok(Self::Custom(value.to_string())),
}
}
}
@@ -977,4 +977,12 @@ mod tests {
.unwrap();
assert_eq!(b.len(), 1);
}
#[test]
fn custom_unit_ser_der() {
let unit = CurrencyUnit::Custom(String::from("test"));
let serialized = serde_json::to_string(&unit).unwrap();
let deserialized: CurrencyUnit = serde_json::from_str(&serialized).unwrap();
assert_eq!(unit, deserialized)
}
}