konnektoren_core/achievements/
achievement_definition.rs1use 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}