use super::{Effect, EffectResult, MockEffectHandler};
mod commit_effects;
mod development_effects;
mod lifecycle_effects;
mod planning_effects;
mod review_effects;
impl MockEffectHandler {
pub fn execute_mock(&mut self, effect: &Effect) -> EffectResult {
self.captured_state.push_effect(effect.clone());
if let Some((event, ui_events, additional_events)) =
self.handle_lifecycle_effect(effect.clone())
{
ui_events
.iter()
.for_each(|e| self.captured_state.push_ui_event(e.clone()));
self.captured_state.push_event(event.clone());
additional_events
.iter()
.for_each(|e| self.captured_state.push_event(e.clone()));
return EffectResult {
event,
additional_events,
ui_events,
};
}
let (event, ui_events) = self
.handle_planning_effect(effect)
.or_else(|| self.handle_development_effect(effect))
.or_else(|| self.handle_review_effect(effect))
.or_else(|| Self::handle_fix_effect(effect))
.or_else(|| self.handle_commit_effect(effect.clone()))
.unwrap_or_else(|| {
panic!("MockEffectHandler::execute_mock received unhandled effect: {effect:?}")
});
ui_events
.iter()
.for_each(|e| self.captured_state.push_ui_event(e.clone()));
self.captured_state.push_event(event.clone());
EffectResult {
event,
additional_events: Vec::new(),
ui_events,
}
}
}