mirror of
https://github.com/paradigmxyz/reth.git
synced 2026-01-30 01:28:21 -05:00
fix: convert empty topic vec to vec None (#3856)
This commit is contained in:
@@ -379,7 +379,13 @@ impl Filter {
|
||||
ValueOrArray::Value(s) => {
|
||||
vec![*s]
|
||||
}
|
||||
ValueOrArray::Array(s) => s.clone(),
|
||||
ValueOrArray::Array(s) => {
|
||||
if s.is_empty() {
|
||||
vec![None]
|
||||
} else {
|
||||
s.clone()
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
vec![None]
|
||||
@@ -1007,6 +1013,49 @@ mod tests {
|
||||
serde_json::to_value(t).expect("Failed to serialize value")
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_empty_filter_topics_list() {
|
||||
let s = r#"{"fromBlock": "0xfc359e", "toBlock": "0xfc359e", "topics": [["0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"], [], ["0x0000000000000000000000000c17e776cd218252adfca8d4e761d3fe757e9778"]]}"#;
|
||||
let filter = serde_json::from_str::<Filter>(s).unwrap();
|
||||
similar_asserts::assert_eq!(
|
||||
filter.topics,
|
||||
[
|
||||
Some(ValueOrArray::Array(vec![Some(
|
||||
"0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
|
||||
.parse()
|
||||
.unwrap()
|
||||
),])),
|
||||
Some(ValueOrArray::Array(vec![])),
|
||||
Some(ValueOrArray::Array(vec![Some(
|
||||
"0x0000000000000000000000000c17e776cd218252adfca8d4e761d3fe757e9778"
|
||||
.parse()
|
||||
.unwrap()
|
||||
)])),
|
||||
None
|
||||
]
|
||||
);
|
||||
|
||||
let filtered_params = FilteredParams::new(Some(filter));
|
||||
let topics = filtered_params.flat_topics;
|
||||
assert_eq!(
|
||||
topics,
|
||||
vec![ValueOrArray::Array(vec![
|
||||
Some(
|
||||
"0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
|
||||
.parse()
|
||||
.unwrap()
|
||||
),
|
||||
None,
|
||||
Some(
|
||||
"0x0000000000000000000000000c17e776cd218252adfca8d4e761d3fe757e9778"
|
||||
.parse()
|
||||
.unwrap()
|
||||
),
|
||||
None
|
||||
])]
|
||||
)
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn can_serde_value_or_array() {
|
||||
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
|
||||
|
||||
Reference in New Issue
Block a user