@@ -3,7 +3,7 @@ use crate::api::OverrideMap;
33use anilist:: MediaListIdentifier ;
44use serde:: Serialize ;
55
6- #[ derive( Serialize ) ]
6+ #[ derive( Debug , PartialEq , Serialize ) ]
77pub 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