public void Test_PersonRequestItem_AlbumParse()
        {
            var    dir      = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
            string testData = File.ReadAllText(dir + @"\TestData\person_kanyewest_album_100_scraped.txt");

            PersonRequestItem item  = new PersonRequestItem("1", "kanye west", "album");
            IMetacriticData   mItem = item.Parse(new UrlResponsePair("url", testData));

            Assert.AreEqual(((Person)mItem).Name, "Kanye West");
            Assert.AreEqual(((Person)mItem).RatingsSummary.HighestRating, 94);
            Assert.AreEqual(((Person)mItem).RatingsSummary.LowestRating, 66);
            Assert.AreEqual(((Person)mItem).RatingsSummary.ReviewCount, 9);
            Assert.AreEqual(((Person)mItem).CreditMediaPairItems.Count, 9);

            CollectionAssert.Contains(((Person)mItem).CreditMediaPairItems.
                                      Select(c => c.Item),
                                      new MediaItem()
            {
                Title       = "My Beautiful Dark Twisted Fantasy",
                ReleaseDate = "11/22/2010"
            });

            CollectionAssert.AllItemsAreInstancesOfType(((Person)mItem).CreditMediaPairItems.
                                                        Select(c => c.Item), typeof(MediaItem));
        }
        public void Test_PersonRequestItem_AlbumParse2()
        {
            var    dir      = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
            string testData = File.ReadAllText(dir + @"\TestData\person_woodyallen_tvshow_100_scraped.txt");

            PersonRequestItem item  = new PersonRequestItem("1", "woody allen", "album");
            IMetacriticData   mItem = item.Parse(new UrlResponsePair("url", testData));

            Assert.AreEqual(((Person)mItem).Name, "Woody Allen");
            Assert.AreEqual(((Person)mItem).RatingsSummary, default(Person.PersonRatingSummary));
            Assert.AreEqual(((Person)mItem).CreditMediaPairItems, null);
        }
        public void Test_PersonRequestItem_PersonFilterValidUrlsInvalid()
        {
            var    dir          = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
            string testData     = File.ReadAllText(dir + @"\TestData\person_woodyallen_autosearch.txt");
            var    completeData = Newtonsoft.Json.JsonConvert.DeserializeObject <RootObject>(testData);

            PersonRequestItem item = new PersonRequestItem("1", "woody allen", "person");

            item.AutoResult = completeData.AutoComplete.Results;

            Assert.That(() => item.FilterValidUrls(),
                        Throws.Exception.TypeOf <InvalidUrlException>().
                        With.Property("Message").
                        EqualTo(@"Category required for ""person"" request"));
        }
        public void Test_PersonRequestItem_PersonTvShowFilterValidUrls()
        {
            var    dir          = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
            string testData     = File.ReadAllText(dir + @"\TestData\person_woodyallen_autosearch.txt");
            var    completeData = Newtonsoft.Json.JsonConvert.DeserializeObject <RootObject>(testData);

            PersonRequestItem item = new PersonRequestItem("1", "woody allen", "tvshow");

            item.AutoResult = completeData.AutoComplete.Results;
            bool result = item.FilterValidUrls();

            Assert.AreEqual(item.Urls.Count, 1);
            Assert.AreEqual(item.Urls[0], "/person/woody-allen?filter-options=tv&sort_options=date&num_items=100");
            Assert.IsTrue(result);
        }
        public void Test_PersonRequestItem_PersonScrape()
        {
            var    dir      = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
            string testData = File.ReadAllText(dir + @"\TestData\person_woodyallen_movie_100_scraped.txt");

            var webUtils = new Mock <IWebUtils>();

            webUtils.Setup(p => p.HttpGet(It.IsAny <string>(), It.IsAny <string>(),
                                          It.IsAny <int>())).Returns(Task.FromResult(testData));

            PersonRequestItem item = new PersonRequestItem("1", "woody allen", "movie");

            item.Urls = new List <string>();
            item.Urls.Add(@"/person/woody-allen?filter-options=movies&sort_options=date&num_items=100");
            item.WebUtils = webUtils.Object;
            List <UrlResponsePair> resp = item.Scrape();

            Assert.AreEqual(resp.Count, 1);
        }
        public void Test_PersonRequestItem_TvShowParse2()
        {
            var    dir      = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
            string testData = File.ReadAllText(dir + @"\TestData\person_kanyewest_tvshow_100_scraped.txt");

            PersonRequestItem item  = new PersonRequestItem("1", "kanye west", "tvshow");
            IMetacriticData   mItem = item.Parse(new UrlResponsePair("url", testData));

            Assert.AreEqual(((Person)mItem).Name, "Kanye West");
            Assert.AreEqual(((Person)mItem).RatingsSummary.HighestRating, 0);
            Assert.AreEqual(((Person)mItem).RatingsSummary.LowestRating, 0);
            Assert.AreEqual(((Person)mItem).RatingsSummary.ReviewCount, 0);
            Assert.AreEqual(((Person)mItem).CreditMediaPairItems.Count, 7);
            CollectionAssert.Contains(((Person)mItem).CreditMediaPairItems.
                                      Select(c => c.Item),
                                      new MediaItem()
            {
                Title       = "Kourtney and Kim Take New York: Season 1",
                ReleaseDate = "01/23/2011"
            });
            CollectionAssert.AllItemsAreInstancesOfType(((Person)mItem).CreditMediaPairItems.
                                                        Select(c => c.Item), typeof(MediaItem));
        }
        public void Test_PersonRequestItem_TvShowParse()
        {
            var    dir      = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
            string testData = File.ReadAllText(dir + @"\TestData\person_woodyallen_tvshow_100_scraped.txt");

            PersonRequestItem item  = new PersonRequestItem("1", "woody allen", "tvshow");
            IMetacriticData   mItem = item.Parse(new UrlResponsePair("url", testData));

            Assert.AreEqual(((Person)mItem).Name, "Woody Allen");
            Assert.AreEqual(((Person)mItem).RatingsSummary.HighestRating, 0);
            Assert.AreEqual(((Person)mItem).RatingsSummary.LowestRating, 0);
            Assert.AreEqual(((Person)mItem).RatingsSummary.ReviewCount, 0);
            Assert.AreEqual(((Person)mItem).CreditMediaPairItems.Count, 3);
            CollectionAssert.Contains(((Person)mItem).CreditMediaPairItems.
                                      Select(c => c.Item),
                                      new MediaItem()
            {
                Title       = "The Ed Sullivan Show: Season 22",
                ReleaseDate = "09/28/1969"
            });
            CollectionAssert.AllItemsAreInstancesOfType(((Person)mItem).CreditMediaPairItems.
                                                        Select(c => c.Item), typeof(MediaItem));
        }
        public void Test_PersonRequestItem_MovieParse2()
        {
            var    dir      = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
            string testData = File.ReadAllText(dir + @"\TestData\person_kanyewest_movie_100_scraped.txt");

            PersonRequestItem item  = new PersonRequestItem("1", "kanye west", "movie");
            IMetacriticData   mItem = item.Parse(new UrlResponsePair("url", testData));

            Assert.AreEqual(((Person)mItem).Name, "Kanye West");
            Assert.AreEqual(((Person)mItem).RatingsSummary.HighestRating, 81);
            Assert.AreEqual(((Person)mItem).RatingsSummary.LowestRating, 24);
            Assert.AreEqual(((Person)mItem).RatingsSummary.ReviewCount, 6);
            Assert.AreEqual(((Person)mItem).CreditMediaPairItems.Count, 7);
            CollectionAssert.Contains(((Person)mItem).CreditMediaPairItems.
                                      Select(c => c.Item),
                                      new MediaItem()
            {
                Title       = "Made in America",
                ReleaseDate = "07/11/2014"
            });
            CollectionAssert.AllItemsAreInstancesOfType(((Person)mItem).CreditMediaPairItems.
                                                        Select(c => c.Item), typeof(MediaItem));
        }
        public void Test_PersonRequestItem_MovieParse()
        {
            var    dir      = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
            string testData = File.ReadAllText(dir + @"\TestData\person_woodyallen_movie_100_scraped.txt");

            PersonRequestItem item  = new PersonRequestItem("1", "woody allen", "movie");
            IMetacriticData   mItem = item.Parse(new UrlResponsePair("url", testData));

            Assert.AreEqual(((Person)mItem).Name, "Woody Allen");
            Assert.AreEqual(((Person)mItem).RatingsSummary.HighestRating, 90);
            Assert.AreEqual(((Person)mItem).RatingsSummary.LowestRating, 32);
            Assert.AreEqual(((Person)mItem).RatingsSummary.ReviewCount, 36);
            Assert.AreEqual(((Person)mItem).CreditMediaPairItems.Count, 37);
            CollectionAssert.Contains(((Person)mItem).CreditMediaPairItems.
                                      Select(c => c.Item),
                                      new MediaItem()
            {
                Title       = "Hannah and Her Sisters",
                ReleaseDate = "02/01/1986"
            });
            CollectionAssert.AllItemsAreInstancesOfType(((Person)mItem).CreditMediaPairItems.
                                                        Select(c => c.Item), typeof(MediaItem));
        }