konnektoren_core/events/
challenge_event.rs

1use super::{EventType, event::EventTrait};
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5pub enum ChallengeEvent {
6    SolvedCorrect(usize),
7    SolvedIncorrect(usize),
8    #[default]
9    Started,
10    Completed,
11    Error(String),
12}
13
14impl EventTrait for ChallengeEvent {
15    fn get_type(&self) -> EventType {
16        EventType::Challenge
17    }
18
19    fn get_action(&self) -> &str {
20        match self {
21            ChallengeEvent::SolvedCorrect(_) => "SolvedCorrect",
22            ChallengeEvent::SolvedIncorrect(_) => "SolvedIncorrect",
23            ChallengeEvent::Started => "Started",
24            ChallengeEvent::Completed => "Completed",
25            ChallengeEvent::Error(_) => "Error",
26        }
27    }
28}
29
30#[cfg(test)]
31mod tests {
32    use super::*;
33
34    #[test]
35    fn test_challenge_event_trait() {
36        let event = ChallengeEvent::SolvedCorrect(1);
37        assert_eq!(event.get_type(), EventType::Challenge);
38        assert_eq!(event.get_action(), "SolvedCorrect");
39    }
40}