konnektoren_core/events/
challenge_event.rs1use 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}