package com.flicklib.service.movie.imdb;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.io.File;
import java.io.IOException;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import com.flicklib.domain.MoviePage;
import com.flicklib.domain.MovieSearchResult;
import com.flicklib.domain.MovieType;
import com.flicklib.service.SourceLoader;
import com.flicklib.service.TestUtil;
import com.flicklib.service.cache.LoggingHttpCache;
public class ImdbInfoFetcherTest {
private SourceLoader loader;
private ImdbInfoFetcher fetcher;
@Before
public void setUp() throws Exception {
loader = TestUtil.createLoader();
if (System.getProperty("flicklib.trace") != null) {
File tempDir = new File(System.getProperty("java.io.tmpdir"));
File logDir = new File(tempDir, "flicklib-http-cache");
logDir.mkdirs();
loader = new LoggingHttpCache(loader, logDir);
}
fetcher = new ImdbInfoFetcher(loader);
}
@Test
public void testSearchString() throws IOException {
List<? extends MovieSearchResult> res = fetcher.search("Twin Peaks");
for(MovieSearchResult result:res){
assertEquals("IMDB", result.getService().getId());
//System.out.println(result.getTitle()+" / "+result.getOriginalTitle()+" / "+result.getYear()+" / "+result.getType());
}
assertEquals("Twin Peaks", res.get(0).getTitle());
//assertEquals("Twin Peaks", res.get(0).getOriginalTitle());
assertEquals(Integer.valueOf(1990), res.get(0).getYear());
assertEquals(MovieType.TV_SERIES, res.get(0).getType());
assertEquals(MovieType.MOVIE, res.get(1).getType());
List<? extends MovieSearchResult> res2 = fetcher.search("mar adentro");
for(MovieSearchResult result:res2){
assertEquals("IMDB", result.getService().getId());
assertNotNull(result.getIdForSite());
System.out.println(result.getTitle()+" / "+result.getOriginalTitle()+" / "+result.getYear()+" / "+result.getType());
}
}
@Test
public void testGetMovieInfo() throws IOException {
MoviePage page = fetcher.getMovieInfo("0133093");
assertEquals("IMDB", page.getService().getId());
assertEquals("The Matrix", page.getPreferredTitle());
assertEquals(2, page.getDirectors().size());
assertTrue(page.getDirectors().contains("Andy Wachowski"));
assertTrue(page.getDirectors().contains("Lana Wachowski"));
assertTrue(page.getActors().contains("Keanu Reeves"));
assertTrue(page.getActors().contains("Laurence Fishburne"));
assertTrue(page.getActors().contains("Carrie-Anne Moss"));
assertNotNull(page.getScore());
assertNotNull(page.getPlot());
assertTrue(page.getGenres().contains("Action"));
assertTrue(page.getGenres().contains("Adventure"));
assertTrue(page.getGenres().contains("Sci-Fi"));
assertNotNull(page.getIdForSite());
}
@Test
public void testIssue107() throws IOException {
List<MovieSearchResult> search = fetcher.search("santa claus is comin' to town");
assertNotNull("searchResult ", search);
}
}