Skip to main content

tmdb/
lib.rs

1#[macro_use]
2extern crate serde_derive;
3extern crate reqwest;
4extern crate serde;
5
6pub mod model;
7pub mod themoviedb;
8
9#[cfg(test)]
10mod integration_tests {
11
12    use model::{FindMovie, Movie, SearchMovie, TV};
13    use themoviedb::*;
14
15    const API_KEY: &str = env!("TMDB_API_KEY");
16    const LANGUAGE: &str = "en";
17    const TMDB: TMDb = TMDb {
18        api_key: API_KEY,
19        language: LANGUAGE,
20    };
21
22    #[test]
23    fn fetch_movie() {
24        let movie: Movie = TMDB.fetch().id(157336).execute().unwrap();
25
26        assert_eq!("Interstellar", movie.original_title);
27    }
28
29    #[test]
30    fn fetch_movie_languages() {
31        let tmdb_en = TMDb {
32            api_key: API_KEY,
33            language: "en",
34        };
35        let movie_en: Movie = tmdb_en.fetch().id(2277).execute().unwrap();
36        assert_eq!("Bicentennial Man", movie_en.title);
37
38        let tmdb_de = TMDb {
39            api_key: API_KEY,
40            language: "de",
41        };
42        let movie_de: Movie = tmdb_de.fetch().id(2277).execute().unwrap();
43        assert_eq!("Der 200 Jahre Mann", movie_de.title);
44
45        let tmdb_es = TMDb {
46            api_key: API_KEY,
47            language: "es",
48        };
49        let movie_es: Movie = tmdb_es.fetch().id(2277).execute().unwrap();
50        assert_eq!("El hombre bicentenario", movie_es.title);
51    }
52
53    #[test]
54    fn fetch_movie_append_to_response() {
55        let movie: Movie = TMDB
56            .fetch()
57            .id(2277)
58            .append_videos()
59            .append_credits()
60            .execute()
61            .unwrap();
62
63        assert_eq!(true, movie.videos.is_some());
64        assert_eq!(true, movie.credits.is_some());
65    }
66
67    #[test]
68    fn search_movie() {
69        let empty_movies: Vec<SearchMovie> = vec![];
70
71        let page = TMDB
72            .search()
73            .title("Bicentennial Man")
74            .year(1999)
75            .execute()
76            .unwrap();
77
78        let movies = page.results;
79
80        assert_eq!(1, page.total_results);
81        assert_ne!(empty_movies, movies);
82        assert_eq!("Bicentennial Man", movies[0].title);
83    }
84
85    #[test]
86    fn find_movie_by_imdb_id() {
87        let empty_movies: Vec<FindMovie> = vec![];
88
89        let find_result = TMDB.find().imdb_id("tt0816692").execute().unwrap();
90
91        let movies = find_result.movie_results;
92
93        assert_eq!(1, movies.len());
94        assert_ne!(empty_movies, movies);
95        assert_eq!("Interstellar", movies[0].title);
96    }
97
98    #[test]
99    fn fetch_searched_movie() {
100        let page = TMDB
101            .search()
102            .title("Bicentennial Man")
103            .year(1999)
104            .execute()
105            .unwrap();
106
107        let movies = page.results;
108        let movie = movies[0].fetch(&TMDB).unwrap();
109
110        assert_eq!(2277, movie.id);
111    }
112
113    #[test]
114    fn fetch_tv() {
115        let tv: TV = TMDB.fetch().id(2316).execute().unwrap();
116
117        assert_eq!("The Office", tv.original_name);
118    }
119
120    #[test]
121    fn fetch_tv_append_to_response() {
122        let tv: TV = TMDB
123            .fetch()
124            .id(2316)
125            .append_videos()
126            .append_credits()
127            .execute()
128            .unwrap();
129
130        assert_eq!(true, tv.videos.is_some());
131        assert_eq!(true, tv.credits.is_some());
132    }
133}