You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
api-themoviedb/themoviedbapi/src/test/java/com/moviejukebox/themoviedb/TheMovieDBTest.java

232 lines
7.4 KiB
Java

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/*
* Copyright (c) 2004-2012 YAMJ Members
* http://code.google.com/p/moviejukebox/people/list
*
* Web: http://code.google.com/p/moviejukebox/
*
* This software is licensed under a Creative Commons License
* See this page: http://code.google.com/p/moviejukebox/wiki/License
*
* For any reuse or distribution, you must make clear to others the
* license terms of this work.
*/
package com.moviejukebox.themoviedb;
import com.moviejukebox.themoviedb.model.*;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import static org.junit.Assert.*;
import org.junit.*;
/**
* Test cases for TheMovieDb API
*
* @author stuart.boston
*/
public class TheMovieDbTest {
private static final Logger LOGGER = Logger.getLogger(TheMovieDbTest.class);
private static final String API_KEY = "5a1a77e2eba8984804586122754f969f";
private static TheMovieDb tmdb;
/*
* Test data
*/
private static final int ID_BLADE_RUNNER = 78;
private static final int ID_STAR_WARS_COLLECTION = 10;
public TheMovieDbTest() throws IOException {
tmdb = new TheMovieDb(API_KEY);
}
@BeforeClass
public static void setUpClass() throws Exception {
}
@AfterClass
public static void tearDownClass() throws Exception {
}
@Before
public void setUp() {
}
@After
public void tearDown() {
}
/**
* Test of getConfiguration method, of class TheMovieDb.
*/
@Test
public void testConfiguration() throws IOException {
LOGGER.info("Test Configuration");
TmdbConfiguration tmdbConfig = tmdb.getConfiguration();
assertNotNull("Configuration failed", tmdbConfig);
assertTrue("No base URL", StringUtils.isNotBlank(tmdbConfig.getBaseUrl()));
assertTrue("No backdrop sizes", tmdbConfig.getBackdropSizes().size() > 0);
assertTrue("No poster sizes", tmdbConfig.getPosterSizes().size() > 0);
assertTrue("No profile sizes", tmdbConfig.getProfileSizes().size() > 0);
LOGGER.info(tmdbConfig.toString());
}
/**
* Test of searchMovie method, of class TheMovieDb.
*/
@Test
public void testSearchMovie() throws UnsupportedEncodingException {
LOGGER.info("searchMovie");
// Try a movie with less than 1 page of results
List<MovieDB> movieList = tmdb.searchMovie("Blade Runner", "", true);
assertTrue("No movies found, should be at least 1", movieList.size() > 0);
// Try a russian langugage movie
movieList = tmdb.searchMovie("О чём говорят мужчины", "ru", true);
assertTrue("No movies found, should be at least 1", movieList.size() > 0);
// Try a movie with more than 20 results
movieList = tmdb.searchMovie("Star Wars", "en", false);
assertTrue("Not enough movies found, should be 20", movieList.size() == 20);
}
/**
* Test of getMovieInfo method, of class TheMovieDb.
*/
@Test
public void testGetMovieInfo() {
LOGGER.info("getMovieInfo");
String language = "en";
MovieDB result = tmdb.getMovieInfo(ID_BLADE_RUNNER, language);
assertEquals("Incorrect movie information", "Blade Runner", result.getOriginalTitle());
}
/**
* Test of getMovieAlternativeTitles method, of class TheMovieDb.
*/
@Test
public void testGetMovieAlternativeTitles() {
LOGGER.info("getMovieAlternativeTitles");
String country = "";
List<AlternativeTitle> results = tmdb.getMovieAlternativeTitles(ID_BLADE_RUNNER, country);
assertTrue("No alternative titles found", results.size() > 0);
country = "US";
results = tmdb.getMovieAlternativeTitles(ID_BLADE_RUNNER, country);
assertTrue("No alternative titles found", results.size() > 0);
}
/**
* Test of getMovieCasts method, of class TheMovieDb.
*/
@Test
public void testGetMovieCasts() {
LOGGER.info("getMovieCasts");
List<Person> people = tmdb.getMovieCasts(ID_BLADE_RUNNER);
assertTrue("No cast information", people.size() > 0);
String name1 = "Harrison Ford";
String name2 = "Charles Knode";
boolean foundName1 = Boolean.FALSE;
boolean foundName2 = Boolean.FALSE;
for (Person person : people) {
if (!foundName1 && person.getName().equalsIgnoreCase(name1)) {
foundName1 = Boolean.TRUE;
}
if (!foundName2 && person.getName().equalsIgnoreCase(name2)) {
foundName2 = Boolean.TRUE;
}
}
assertTrue("Couldn't find " + name1, foundName1);
assertTrue("Couldn't find " + name2, foundName2);
}
/**
* Test of getMovieImages method, of class TheMovieDb.
*/
@Test
public void testGetMovieImages() {
LOGGER.info("getMovieImages");
String language = "";
List<Artwork> result = tmdb.getMovieImages(ID_BLADE_RUNNER, language);
assertFalse("No artwork found", result.isEmpty());
}
/**
* Test of getMovieKeywords method, of class TheMovieDb.
*/
@Test
public void testGetMovieKeywords() {
LOGGER.info("getMovieKeywords");
List<Keyword> result = tmdb.getMovieKeywords(ID_BLADE_RUNNER);
assertFalse("No keywords found", result.isEmpty());
}
/**
* Test of getMovieReleaseInfo method, of class TheMovieDb.
*/
@Test
public void testGetMovieReleaseInfo() {
LOGGER.info("getMovieReleaseInfo");
List<ReleaseInfo> result = tmdb.getMovieReleaseInfo(ID_BLADE_RUNNER, "");
assertFalse("Release information missing", result.isEmpty());
}
/**
* Test of getMovieTrailers method, of class TheMovieDb.
*/
@Test
public void testGetMovieTrailers() {
LOGGER.info("getMovieTrailers");
List<Trailer> result = tmdb.getMovieTrailers(ID_BLADE_RUNNER, "");
assertFalse("Movie trailers missing", result.isEmpty());
}
/**
* Test of getMovieTranslations method, of class TheMovieDb.
*/
@Test
public void testGetMovieTranslations() {
LOGGER.info("getMovieTranslations");
List<Translation> result = tmdb.getMovieTranslations(ID_BLADE_RUNNER);
assertFalse("No translations found", result.isEmpty());
}
/**
* Test of getCollectionInfo method, of class TheMovieDb.
*/
@Test
public void testGetCollectionInfo() {
LOGGER.info("getCollectionInfo");
String language = "";
CollectionInfo result = tmdb.getCollectionInfo(ID_STAR_WARS_COLLECTION, language);
assertFalse("No collection information", result.getParts().isEmpty());
}
@Test
public void testCreateImageUrl() {
LOGGER.info("createImageUrl");
MovieDB movie = tmdb.getMovieInfo(ID_BLADE_RUNNER, "");
String result = tmdb.createImageUrl(movie.getPosterPath(), "original").toString();
assertTrue("Error compiling image URL", !result.isEmpty());
}
/**
* Test of getMovieInfoImdb method, of class TheMovieDb.
*/
@Test
public void testGetMovieInfoImdb() {
LOGGER.info("getMovieInfoImdb");
MovieDB result = tmdb.getMovieInfoImdb("tt0076759", "en-US");
assertTrue("Error getting the movie from IMDB ID", result.getId() == 11);
}
}