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}