mirror of
https://github.com/aljazceru/cdk.git
synced 2026-02-05 21:26:13 +01:00
fix(cashu): preserve original case for custom CurrencyUnit values
Custom currency units were incorrectly being converted to uppercase during deserialization. This change ensures custom units maintain their original case while still allowing case-insensitive matching for standard units.
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user