1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#[macro_use]
extern crate serde_derive;
extern crate reqwest;
extern crate serde;

pub mod model;
pub mod themoviedb;

#[cfg(test)]
mod integration_tests {

    use model::{FindMovie, Movie, SearchMovie, TV};
    use themoviedb::*;

    const API_KEY: &str = env!("TMDB_API_KEY");
    const LANGUAGE: &str = "en";
    const TMDB: TMDb = TMDb {
        api_key: API_KEY,
        language: LANGUAGE,
    };

    #[test]
    fn fetch_movie() {
        let movie: Movie = TMDB.fetch().id(157336).execute().unwrap();

        assert_eq!("Interstellar", movie.original_title);
    }

    #[test]
    fn fetch_movie_languages() {
        let tmdb_en = TMDb {
            api_key: API_KEY,
            language: "en",
        };
        let movie_en: Movie = tmdb_en.fetch().id(2277).execute().unwrap();
        assert_eq!("Bicentennial Man", movie_en.title);

        let tmdb_de = TMDb {
            api_key: API_KEY,
            language: "de",
        };
        let movie_de: Movie = tmdb_de.fetch().id(2277).execute().unwrap();
        assert_eq!("Der 200 Jahre Mann", movie_de.title);

        let tmdb_es = TMDb {
            api_key: API_KEY,
            language: "es",
        };
        let movie_es: Movie = tmdb_es.fetch().id(2277).execute().unwrap();
        assert_eq!("El hombre bicentenario", movie_es.title);
    }

    #[test]
    fn fetch_movie_append_to_response() {
        let movie: Movie = TMDB
            .fetch()
            .id(2277)
            .append_videos()
            .append_credits()
            .execute()
            .unwrap();

        assert_eq!(true, movie.videos.is_some());
        assert_eq!(true, movie.credits.is_some());
    }

    #[test]
    fn search_movie() {
        let empty_movies: Vec<SearchMovie> = vec![];

        let page = TMDB
            .search()
            .title("Bicentennial Man")
            .year(1999)
            .execute()
            .unwrap();

        let movies = page.results;

        assert_eq!(1, page.total_results);
        assert_ne!(empty_movies, movies);
        assert_eq!("Bicentennial Man", movies[0].title);
    }

    #[test]
    fn find_movie_by_imdb_id() {
        let empty_movies: Vec<FindMovie> = vec![];

        let find_result = TMDB.find().imdb_id("tt0816692").execute().unwrap();

        let movies = find_result.movie_results;

        assert_eq!(1, movies.len());
        assert_ne!(empty_movies, movies);
        assert_eq!("Interstellar", movies[0].title);
    }

    #[test]
    fn fetch_searched_movie() {
        let page = TMDB
            .search()
            .title("Bicentennial Man")
            .year(1999)
            .execute()
            .unwrap();

        let movies = page.results;
        let movie = movies[0].fetch(&TMDB).unwrap();

        assert_eq!(2277, movie.id);
    }

    #[test]
    fn fetch_tv() {
        let tv: TV = TMDB.fetch().id(2316).execute().unwrap();

        assert_eq!("The Office", tv.original_name);
    }

    #[test]
    fn fetch_tv_append_to_response() {
        let tv: TV = TMDB
            .fetch()
            .id(2316)
            .append_videos()
            .append_credits()
            .execute()
            .unwrap();

        assert_eq!(true, tv.videos.is_some());
        assert_eq!(true, tv.credits.is_some());
    }
}