Skip to content

Commit 7181d9a

Browse files
committed
Add unit tests for API responses
1 parent cc35798 commit 7181d9a

File tree

1 file changed

+82
-2
lines changed

1 file changed

+82
-2
lines changed

src/api/responses.rs

Lines changed: 82 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use crate::api::OverrideMap;
33
use anilist::MediaListIdentifier;
44
use serde::Serialize;
55

6-
#[derive(Serialize)]
6+
#[derive(Debug, PartialEq, Serialize)]
77
pub struct Anime {
88
pub id: MediaListIdentifier,
99
pub media_id: i32,
@@ -33,7 +33,7 @@ impl Anime {
3333
});
3434
}
3535
result.sort_by(|a, b| a.title.cmp(&b.title));
36-
return result;
36+
result
3737
}
3838
}
3939

@@ -48,3 +48,83 @@ pub struct User {
4848
pub name: String,
4949
pub expiry: i64,
5050
}
51+
52+
#[cfg(test)]
53+
mod tests {
54+
use super::*;
55+
56+
fn make_media_title(title: &str) -> anilist::data::MediaTitle {
57+
anilist::data::MediaTitle {
58+
romaji: Some(String::from("irrelevant")),
59+
english: Some(String::from("irrelevant")),
60+
native: Some(String::from("irrelevant")),
61+
userPreferred: String::from(title),
62+
}
63+
}
64+
65+
#[test]
66+
fn test_build() {
67+
let media_list_group = anilist::data::MediaListGroup {
68+
entries: vec![
69+
anilist::data::MediaList {
70+
id: 12345,
71+
progress: 1,
72+
media: anilist::data::Media {
73+
id: 1234,
74+
title: make_media_title("Watashi wo Tabetai, Hitodenashi"),
75+
},
76+
},
77+
anilist::data::MediaList {
78+
id: 23456,
79+
progress: 2,
80+
media: anilist::data::Media {
81+
id: 2345,
82+
title: make_media_title("Boku no Hero Academia FINAL SEASON"),
83+
},
84+
},
85+
anilist::data::MediaList {
86+
id: 34567,
87+
progress: 3,
88+
media: anilist::data::Media {
89+
id: 3456,
90+
title: make_media_title("SPY×FAMILY Season 3"),
91+
},
92+
},
93+
],
94+
};
95+
let mut overrides = OverrideMap::from([
96+
(
97+
23456,
98+
(Some(String::from("Boku no Hero Academia (2025)")), None),
99+
),
100+
(34567, (None, Some(-37))),
101+
]);
102+
let result = Anime::build(&media_list_group, &mut overrides);
103+
assert_eq!(
104+
result,
105+
vec![
106+
Anime {
107+
id: 23456,
108+
media_id: 2345,
109+
title: String::from("Boku no Hero Academia FINAL SEASON"),
110+
episode_offset: None,
111+
title_override: Some(String::from("Boku no Hero Academia (2025)")),
112+
},
113+
Anime {
114+
id: 34567,
115+
media_id: 3456,
116+
title: String::from("SPY×FAMILY Season 3"),
117+
episode_offset: Some(-37),
118+
title_override: None,
119+
},
120+
Anime {
121+
id: 12345,
122+
media_id: 1234,
123+
title: String::from("Watashi wo Tabetai, Hitodenashi"),
124+
episode_offset: None,
125+
title_override: None,
126+
},
127+
]
128+
);
129+
}
130+
}

0 commit comments

Comments
 (0)