mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-14 12:11:09 +00:00
fix: also processess initialize and finalize events in event subscription (#321)
This commit is contained in:
+22
-17
@@ -148,22 +148,20 @@ impl<'a, T: Config> EventSubscription<'a, T> {
|
|||||||
Err(err) => return Some(Err(err)),
|
Err(err) => return Some(Err(err)),
|
||||||
Ok(raw_events) => {
|
Ok(raw_events) => {
|
||||||
for (phase, raw) in raw_events {
|
for (phase, raw) in raw_events {
|
||||||
if let Phase::ApplyExtrinsic(i) = phase {
|
if let Some(ext_index) = self.extrinsic {
|
||||||
if let Some(ext_index) = self.extrinsic {
|
if !matches!(phase, Phase::ApplyExtrinsic(i) if i as usize == ext_index)
|
||||||
if i as usize != ext_index {
|
{
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if let Some((module, variant)) = self.event {
|
||||||
|
if let Raw::Event(ref event) = raw {
|
||||||
|
if event.pallet != module || event.variant != variant {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if let Some((module, variant)) = self.event {
|
|
||||||
if let Raw::Event(ref event) = raw {
|
|
||||||
if event.pallet != module || event.variant != variant
|
|
||||||
{
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
self.events.push_back(raw);
|
|
||||||
}
|
}
|
||||||
|
self.events.push_back(raw);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -349,7 +347,12 @@ mod tests {
|
|||||||
let mut events = vec![];
|
let mut events = vec![];
|
||||||
// create all events
|
// create all events
|
||||||
for block_hash in [H256::from([0; 32]), H256::from([1; 32])] {
|
for block_hash in [H256::from([0; 32]), H256::from([1; 32])] {
|
||||||
for phase in [Phase::ApplyExtrinsic(0), Phase::ApplyExtrinsic(1)] {
|
for phase in [
|
||||||
|
Phase::Initialization,
|
||||||
|
Phase::ApplyExtrinsic(0),
|
||||||
|
Phase::ApplyExtrinsic(1),
|
||||||
|
Phase::Finalization,
|
||||||
|
] {
|
||||||
for event in [named_event("a"), named_event("b")] {
|
for event in [named_event("a"), named_event("b")] {
|
||||||
events.push((block_hash, phase.clone(), event))
|
events.push((block_hash, phase.clone(), event))
|
||||||
}
|
}
|
||||||
@@ -360,6 +363,8 @@ mod tests {
|
|||||||
event.2.variant_index = idx as u8;
|
event.2.variant_index = idx as u8;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
let half_len = events.len() / 2;
|
||||||
|
|
||||||
for block_filter in [None, Some(H256::from([1; 32]))] {
|
for block_filter in [None, Some(H256::from([1; 32]))] {
|
||||||
for extrinsic_filter in [None, Some(1)] {
|
for extrinsic_filter in [None, Some(1)] {
|
||||||
for event_filter in [None, Some(("b", "b"))] {
|
for event_filter in [None, Some(("b", "b"))] {
|
||||||
@@ -371,18 +376,17 @@ mod tests {
|
|||||||
events[0].0,
|
events[0].0,
|
||||||
Ok(events
|
Ok(events
|
||||||
.iter()
|
.iter()
|
||||||
.take(4)
|
.take(half_len)
|
||||||
.map(|(_, phase, event)| {
|
.map(|(_, phase, event)| {
|
||||||
(phase.clone(), Raw::Event(event.clone()))
|
(phase.clone(), Raw::Event(event.clone()))
|
||||||
})
|
})
|
||||||
.collect()),
|
.collect()),
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
events[4].0,
|
events[half_len].0,
|
||||||
Ok(events
|
Ok(events
|
||||||
.iter()
|
.iter()
|
||||||
.skip(4)
|
.skip(half_len)
|
||||||
.take(4)
|
|
||||||
.map(|(_, phase, event)| {
|
.map(|(_, phase, event)| {
|
||||||
(phase.clone(), Raw::Event(event.clone()))
|
(phase.clone(), Raw::Event(event.clone()))
|
||||||
})
|
})
|
||||||
@@ -407,6 +411,7 @@ mod tests {
|
|||||||
if let Some(name) = event_filter {
|
if let Some(name) = event_filter {
|
||||||
expected_events.retain(|(_, _, event)| event.pallet == name.0);
|
expected_events.retain(|(_, _, event)| event.pallet == name.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
for expected_event in expected_events {
|
for expected_event in expected_events {
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
subscription.next().await.unwrap().unwrap(),
|
subscription.next().await.unwrap().unwrap(),
|
||||||
|
|||||||
Reference in New Issue
Block a user