use isocountry::CountryCode;
use isolanguage_1::LanguageCode;
use crate::Client;
const API_KEY: &str = env!("TMDB_API_KEY");
fn client() -> Client {
Client::new(API_KEY.into())
}
#[tokio::test]
async fn fetch_movie() {
let client = client();
let movie = client.movie_by_id(157336, false, false).await.unwrap();
assert_eq!("Interstellar", movie.original_title());
assert_eq!("2014-11-05", movie.release_date().to_string());
assert_eq!(LanguageCode::En, movie.original_language());
let movie = client.movie_by_id(579974, false, false).await.unwrap();
assert_eq!("రౌద్రం రణం రుధిరం", movie.original_title());
assert_eq!("2022-03-24", movie.release_date().to_string());
assert_eq!(LanguageCode::Te, movie.original_language());
}
#[tokio::test]
async fn fetch_movie_languages() {
let client = Client::with_language(API_KEY.into(), "en");
let movie = client.movie_by_id(2277, false, false).await.unwrap();
assert_eq!("Bicentennial Man", movie.title());
assert_eq!(LanguageCode::En, movie.original_language());
let client = Client::with_language(API_KEY.into(), "de");
let movie = client.movie_by_id(2277, false, false).await.unwrap();
assert_eq!("Der 200 Jahre Mann", movie.title());
let client = Client::with_language(API_KEY.into(), "es");
let movie = client.movie_by_id(2277, false, false).await.unwrap();
assert_eq!("El hombre bicentenario", movie.title());
}
#[tokio::test]
async fn fetch_movie_append_to_response() {
let client = client();
let movie = client.movie_by_id(2277, true, true).await.unwrap();
assert!(movie.videos().is_some());
assert!(movie.credits().is_some());
}
#[tokio::test]
async fn search_movie() {
let client = client();
let page = client.movie_search("Bicentennial Man", Some(1999)).await.unwrap();
assert_eq!(1, page.total_results());
assert_eq!("Bicentennial Man", page.results()[0].title());
}
#[tokio::test]
async fn find_movie_by_imdb_id() {
let client = client();
let movie = client.movie_by_imdb_id(816692).await.unwrap();
assert_eq!("Interstellar", movie.title());
}
#[tokio::test]
async fn fetch_searched_movie() {
let client = client();
let page = client.movie_search("Bicentennial Man", Some(1999)).await.unwrap();
let movie = client.movie_by_id(page.results()[0].id(), false, false).await.unwrap();
assert_eq!(2277, movie.id());
}
#[tokio::test]
async fn fetch_tv() {
let client = client();
let series = client.tv_by_id(2316, false, false).await.unwrap();
assert_eq!("The Office", series.original_name());
assert_eq!("2005-03-24", series.first_air_date().to_string());
assert_eq!("2013-05-16", series.last_air_date().to_string());
assert_eq!("2013-05-16", series.last_episode_to_air().unwrap().air_date().to_string());
assert_eq!("2006-07-13", series.seasons()[0].air_date().unwrap().to_string());
assert_eq!("2005-03-24", series.seasons()[1].air_date().unwrap().to_string());
assert_eq!("2005-09-20", series.seasons()[2].air_date().unwrap().to_string());
assert_eq!("2006-09-21", series.seasons()[3].air_date().unwrap().to_string());
assert_eq!("2007-09-27", series.seasons()[4].air_date().unwrap().to_string());
assert_eq!("2008-09-25", series.seasons()[5].air_date().unwrap().to_string());
assert_eq!("2009-09-17", series.seasons()[6].air_date().unwrap().to_string());
assert_eq!("2010-09-23", series.seasons()[7].air_date().unwrap().to_string());
assert_eq!("2011-09-22", series.seasons()[8].air_date().unwrap().to_string());
assert_eq!("2012-09-20", series.seasons()[9].air_date().unwrap().to_string());
assert_eq!(&[LanguageCode::En], series.languages());
assert_eq!(LanguageCode::En, series.original_language());
assert_eq!(Some(CountryCode::USA), series.networks()[0].origin_country());
assert_eq!(&[CountryCode::USA], series.origin_country());
assert_eq!(series.created_by().len(), 1);
assert_eq!("525730af760ee3776a344e95", hex::encode(series.created_by()[0].credit_id()));
let series = client.tv_by_id(45, false, false).await.unwrap();
assert_eq!("Top Gear", series.original_name());
assert_eq!("2002-10-20", series.first_air_date().to_string());
assert_eq!(Some(CountryCode::GBR), series.networks()[0].origin_country());
assert_eq!(Some(CountryCode::GBR), series.networks()[1].origin_country());
assert_eq!(&[CountryCode::GBR], series.origin_country());
assert_eq!(Some(CountryCode::GBR), series.production_companies()[0].origin_country());
assert_eq!("650c3de8f92532010baf9ffb", hex::encode(series.created_by()[0].credit_id()));
}
#[tokio::test]
async fn fetch_tv_languages() {
let client = Client::with_language(API_KEY.into(), "en");
let series = client.tv_by_id(60735, false, false).await.unwrap();
assert_eq!("The Flash", series.name());
let client = Client::with_language(API_KEY.into(), "de");
let series = client.tv_by_id(60735, false, false).await.unwrap();
assert_eq!("The Flash", series.name());
let client = Client::with_language(API_KEY.into(), "es");
let series = client.tv_by_id(60735, false, false).await.unwrap();
assert_eq!("The Flash", series.name());
}
#[tokio::test]
async fn fetch_tv_append_to_response() {
let client = client();
let series = client.tv_by_id(2316, true, true).await.unwrap();
assert!(series.videos().is_some());
assert!(series.credits().is_some());
}
#[tokio::test]
async fn search_tv() {
let client = client();
let page = client.tv_search("The Simpsons", Some(1989)).await.unwrap();
assert_eq!(1, page.total_results());
assert_eq!("The Simpsons", page.results()[0].name());
}
#[tokio::test]
async fn find_tv_by_imdb_id() {
let client = client();
let series = client.tv_by_imdb_id(1520211).await.unwrap();
assert_eq!("The Walking Dead", series.name());
}
#[tokio::test]
async fn find_tv_by_tvdb_id() {
let client = client();
let series = client.tv_by_tvdb_id(94571).await.unwrap();
assert_eq!("Community", series.name());
}
#[tokio::test]
async fn fetch_searched_tv() {
let client = client();
let page = client.tv_search("Futurama", None).await.unwrap();
let series = client.tv_by_id(page.results()[0].id(), false, false).await.unwrap();
assert_eq!(615, series.id());
}
#[tokio::test]
async fn tv_external_ids() {
let client = client();
let ids = client.tv_external_ids(52814).await.unwrap();
assert_eq!(ids.id(), 52814);
assert_eq!(ids.imdb_id(), Some(2934286));
assert_eq!(ids.freebase_mid(), Some("/m/0w1g888"));
assert_eq!(ids.freebase_id(), None);
assert_eq!(ids.tvdb_id(), Some(366524));
assert_eq!(ids.tvrage_id(), None);
assert_eq!(ids.facebook_id(), Some("HaloTheSeries"));
assert_eq!(ids.instagram_id(), Some("halotheseries"));
assert_eq!(ids.twitter_id(), Some("HaloTheSeries"));
}