public void FilmLookup_async_fetches_ids_in_background() { AsyncContext.Run(async () => { var idLookupService = new FilmLookupService(new MockHttpService("")); string result = await idLookupService.LookupAsync("Superman", (l) => new LookupChoice("tt0078346")); Assert.AreEqual("tt0078346", result); }); }
public void FilmLookup_handles_timeout_by_passing_status() { var exception = new System.Net.WebException("The operation has timed out", System.Net.WebExceptionStatus.Timeout); var result = new FilmLookupService(new MockHttpService(s => { throw exception; })).Search("The Usual Status"); var message = result.FailureMessage(); Assert.IsTrue(message.Contains("timed out")); Assert.IsTrue(message.Contains("myapifilms")); Assert.IsTrue(message.Contains("Usual")); }
public void FilmLookup_returns_null_if_callback_tells_it_to_give_up() { string imdbId = new FilmLookupService(new MockHttpService(MyApiFilmsResponse)).Lookup(filmName, (l) => new LookupChoice(LookupChoice.Action.GiveUp)); Assert.IsNull(imdbId); }
public void FilmLookup_returns_id_chosen_by_callback() { LookupResult pick = null; string imdbId = new FilmLookupService(new MockHttpService(MyApiFilmsResponse)).Lookup(filmName, (lookup) => { pick = lookup.Results.ElementAt(new Random().Next(0, lookup.Results.Count - 1)); return new LookupChoice(pick); }); Assert.AreEqual(imdbId, pick.ImdbId); }
public void FilmLookup_provides_title_to_callback() { string query = ""; string imdbId = new FilmLookupService(new MockHttpService(MyApiFilmsResponse)).Lookup(filmName, (lookup) => { query = lookup.Query; return new LookupChoice(LookupChoice.Action.GiveUp); }); Assert.AreEqual(filmName, query); }
public void Search_returns_multiple_results_for_ambiguous_titles() { var results = new FilmLookupService(new MockHttpService(FullMyApiFilmsResponse)).Search("Italian Job").Results; Assert.IsTrue(results.Count >= 2); }
public void Search_sorts_results_by_score() { var results = new FilmLookupService(new MockHttpService(MatrixResultsWithSpoofResponse)).Search("The Matrix 1999").Results; var ids = results.Select(r => r.ImdbId).ToList(); Assert.AreEqual(ids.First(), "tt0133093"); Assert.AreEqual(ids.Last(), "tt0274085"); }
public void Search_returns_an_empty_list_when_no_results_found() { //"This is a movie which doesn't exist and never will unless someone reads this an makes one to prove a point" var results = new FilmLookupService(new MockHttpService("{\"code\":110,\"message\":\"Movie not found\"}")).Search("32498238409").Results; Assert.IsTrue(results.Count == 0); }
public void Search_gets_a_correct_imdb_id() { var results = new FilmLookupService(new MockHttpService(FullMyApiFilmsResponse)).Search("Italian Job").Results; var ids = results.Select(r => r.ImdbId).ToList(); CollectionAssert.Contains(ids, "tt0064505"); }
public void Search_filters_titles_before_using_them() { var results = new FilmLookupService(new MockHttpService(url => { if (url.Contains("Directors")) { throw new Exception("Search was not filtered and tried to call url '"+url+"'"); } else { return MyApiFilmsResponse; } })).Search("Italian.Job.1969.Directors.Cut"); }
public void Search_doesnt_throw_exception_when_internet_down() { var results = new FilmLookupService(new MockHttpService(s => { throw new System.Net.WebException("Internet down"); })).Search("32498238409").Results; Assert.IsTrue(results.Count == 0); }
public void FilmLookup_searches_again_for_new_title_given_by_callback() { int attempt = 0; string imdbId = new FilmLookupService(new MockHttpService(url => (url.Contains("Superman")) ? MyApiFilmsSupermanResponse : MyApiFilmsResponse)).Lookup("Superman", (lookup) => { attempt++; return (attempt == 1) ? new LookupChoice(LookupChoice.Action.NewSearch, filmName) : new LookupChoice(lookup.Results.First()); }); Assert.AreEqual("tt0064505", imdbId); }