Ejemplo n.º 1
0
        public async Task TestScrapeAlpha_WithAParam()
        {
            // arrange
            ISettingRepository settingRepo = new MockSettingsRepository();

            var apiRepo = new MockApiRepository();

            apiRepo.ReadContent(typeof(MockApiRepository).Assembly.GetManifestResourceStream(typeof(MockApiRepository), "Data.TvMazeSearchByA.json"));
            var apiSvclogger = new DebugLogger <TvMazeService>();

            var tvmazeService = new TvMazeService(apiRepo, apiSvclogger);

            var scrapeCtrlLogger = new DebugLogger <ScrapeController>();
            var controller       = new ScrapeController(showService: this.showService, tvMazeService: tvmazeService, logger: scrapeCtrlLogger);

            // act
            var response = await controller.ScrapeAlpha("A").ConfigureAwait(false);

            // assert
            response.Should().BeAssignableTo <ViewResult>(because: "this should now return a View.");
            var viewResponse = (ViewResult)response;

            viewResponse.Model.Should().BeAssignableTo <ScrapeAlphaViewModel>();

            var model = (ScrapeAlphaViewModel)viewResponse.Model;

            model.PreviousInitial.Should().Be("A");
            model.NextInitial.Should().Be("B");
            model.PreviousCount.Should().NotBe(0);
        }
Ejemplo n.º 2
0
        public async Task TestReadShowAndCast_WithOverload()
        {
            var svclogger = new DebugLogger <TvMazeService>();
            var apiRepo   = new MockApiRepository
            {
                StatusToReturn = Core.Support.Constants.ServerTooBusy,
            };

            var svc = new TvMazeService(apiRepo, svclogger);

            var(count, _) = await svc.ScrapeBatchById(999_999).ConfigureAwait(false);

            count.Should().Be(1);
        }
Ejemplo n.º 3
0
        public async Task TestReadCast()
        {
            var apiRepo = new MockApiRepository();

            apiRepo.ReadContent(typeof(MockApiRepository).Assembly.GetManifestResourceStream(typeof(MockApiRepository), "Data.TvMazeATeamCast.json"));
            var svclogger = new DebugLogger <TvMazeService>();

            var svc    = new TvMazeService(apiRepo, svclogger);
            var result = await svc.ScrapeCastMembers(1058).ConfigureAwait(false);

            result.Should().NotBeNull();
            result.Count.Should().Be(7, because: "there are 7 members in the sample.");
            result.Count(m => m.Birthdate.HasValue).Should().Be(6, because: "I set one birthdate to null (as happens).");
            result.Any(m => m.Id <= 0).Should().Be(false, because: "everyone has a positive id number.");
            result.Select(m => m.Id).Distinct().Count().Should().Be(7, because: "ID is unique");
            result.Any(m => m.Name is null).Should().Be(false, because: "everyone has a name defined.");
        }
Ejemplo n.º 4
0
        public async Task TestSearchByInitial()
        {
            ISettingRepository settingRepo = new MockSettingsRepository();

            var apiRepo = new MockApiRepository();

            apiRepo.ReadContent(typeof(MockApiRepository).Assembly.GetManifestResourceStream(typeof(MockApiRepository), "Data.TvMazeSearchByA.json"));
            var svclogger = new DebugLogger <TvMazeService>();

            var svc    = new TvMazeService(apiRepo, svclogger);
            var result = await svc.ScrapeShowsBySearch("a").ConfigureAwait(false);

            result.Should().NotBeNull();
            result.Count.Should().Be(10, because: "there are 10 shows in the sample.");
            result.Count(s => s.CastMembers.Any()).Should().Be(0, because: "there is no cast in this show data.");
            result.Select(m => m.Id).Distinct().Count().Should().Be(10, because: "ID is unique");
        }
Ejemplo n.º 5
0
        public async Task TestReadShowAndCast_NothingFound()
        {
            var svclogger = new DebugLogger <TvMazeService>();
            var apiRepo   = new MockApiRepository
            {
                StatusToReturn = System.Net.HttpStatusCode.NotFound,
            };

            var svc = new TvMazeService(apiRepo, svclogger)
            {
                MaxNumberOfShowsToScrape = 10,
            };

            var(count, shows) = await svc.ScrapeBatchById(999_999).ConfigureAwait(false);

            count.Should().Be(10, because: "I set 10 as the number of tries.");
            shows.Count.Should().Be(0, because: "nothing was supposed to be found.");
        }
Ejemplo n.º 6
0
        public async Task TestReadShowAndCast_Success()
        {
            var svclogger = new DebugLogger <TvMazeService>();
            var apiRepo   = new MockApiRepository();

            apiRepo.ReadContent(typeof(MockApiRepository).Assembly.GetManifestResourceStream(typeof(MockApiRepository), "Data.TvMazeATeamWithCast.json"));

            var svc = new TvMazeService(apiRepo, svclogger)
            {
                MaxNumberOfShowsToScrape = 1,
            };

            var(count, shows) = await svc.ScrapeBatchById(1058).ConfigureAwait(false);

            shows.Count.Should().Be(1);
            shows[0].CastMembers.Count.Should().Be(7);
            shows[0].CastMembers.Count(m => m.Birthdate.HasValue).Should().Be(6);
        }
Ejemplo n.º 7
0
        public async Task TestScrapeAlpha_WithZParam()
        {
            // arrange
            ISettingRepository settingRepo = new MockSettingsRepository();

            var apiRepo = new MockApiRepository();

            apiRepo.ReadContent(typeof(MockApiRepository).Assembly.GetManifestResourceStream(typeof(MockApiRepository), "Data.TvMazeSearchByA.json"));
            var apiSvclogger = new DebugLogger <TvMazeService>();

            var tvmazeService = new TvMazeService(apiRepo, apiSvclogger);

            var scrapeCtrlLogger = new DebugLogger <ScrapeController>();
            var controller       = new ScrapeController(showService: this.showService, tvMazeService: tvmazeService, logger: scrapeCtrlLogger);

            // act
            var response = await controller.ScrapeAlpha("Z").ConfigureAwait(false);

            // assert
            response.Should().BeAssignableTo <RedirectToActionResult>(because: "this should now redirect to Home.");
        }