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_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_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");
        }
Esempio n. 5
0
        public FilmFromApi(IFileSystem fileSystem = null, IRatingService ratingService = null, IResultPicker resultPicker = null)
        {
            this.fileSystem    = fileSystem ?? new FileSystem();
            this.ratingService = ratingService ?? new RatingService();
            this.resultPicker  = resultPicker ?? new FirstResultPicker();

            this.idLookupService = new FilmLookupService();
        }
 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_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);
        }
        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);
        }
Esempio n. 10
0
 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");
 }
Esempio n. 11
0
        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);
        }
Esempio n. 12
0
        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);
        }
Esempio n. 13
0
        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);
        }