konnektoren_core/achievements/
achievement_definition.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Default)]
4pub struct AchievementDefinition {
5    pub id: String,
6    pub name: String,
7    pub description: String,
8    pub icon: String,
9    pub condition: String,
10}
11
12#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Default)]
13pub struct AchievementDefinitions {
14    pub achievements: Vec<AchievementDefinition>,
15}
16
17#[cfg(test)]
18mod tests {
19    use super::*;
20
21    #[test]
22    fn default_achievement_definition() {
23        let achievement_definition = AchievementDefinition {
24            id: "123".to_string(),
25            name: "Konnektoren #1".to_string(),
26            description: "Your first Konnektoren challenge!".to_string(),
27            icon: "icon.png".to_string(),
28            condition: "konnektoren".to_string(),
29        };
30        assert_eq!(achievement_definition.id, "123");
31        assert_eq!(achievement_definition.name, "Konnektoren #1");
32        assert_eq!(
33            achievement_definition.description,
34            "Your first Konnektoren challenge!"
35        );
36        assert_eq!(achievement_definition.icon, "icon.png");
37        assert_eq!(achievement_definition.condition, "konnektoren");
38    }
39
40    #[test]
41    fn deserialize_achievement_definitions() {
42        let data = include_str!("../../assets/achievements.yml");
43        let achievement_definitions: AchievementDefinitions = serde_yaml::from_str(data).unwrap();
44        assert!(!achievement_definitions.achievements.is_empty());
45    }
46}