public async Task Handle_ShouldReturnOnlyShowsWithDrmEnabled(string firstExpectedTitle)
        {
            var handler = new TvShowRequestHandler();
            var request = new TvShowRequest()
            {
                Payload = new List <TvShowRequestDetails>()
                {
                    new TvShowRequestDetails()
                    {
                        Title = "ignored show 1", Drm = false, EpisodeCount = 100
                    },
                    new TvShowRequestDetails()
                    {
                        Title = firstExpectedTitle, Drm = true, EpisodeCount = 100
                    },
                    new TvShowRequestDetails()
                    {
                        Title = "ignored show 2", Drm = false, EpisodeCount = 100
                    },
                    new TvShowRequestDetails()
                    {
                        Title = "ignored show 3", Drm = false, EpisodeCount = 100
                    }
                }
            };

            var result = await handler.Handle(request, CancellationToken.None);

            Assert.NotNull(result?.Response);
            Assert.Single(result.Response);
            Assert.Equal(firstExpectedTitle, result.Response[0].Title);
        }
        public async Task Handle_ShouldThrowValidationExceptionForInvalidData()
        {
            var handler = new TvShowRequestHandler();
            var request = new TvShowRequest();

            await Assert.ThrowsAsync <ValidationException>(() => handler.Handle(request, CancellationToken.None));
        }
        public async Task Handle_ShouldReturnOnlyShowsWithEpisodes(string firstExpectedTitle, string secondExpectedTitle)
        {
            var handler = new TvShowRequestHandler();
            var request = new TvShowRequest()
            {
                Payload = new List <TvShowRequestDetails>()
                {
                    new TvShowRequestDetails()
                    {
                        Title = "ignored show 1", EpisodeCount = 0, Drm = true
                    },
                    new TvShowRequestDetails()
                    {
                        Title = firstExpectedTitle, EpisodeCount = 100, Drm = true
                    },
                    new TvShowRequestDetails()
                    {
                        Title = secondExpectedTitle, EpisodeCount = 1, Drm = true
                    },
                    new TvShowRequestDetails()
                    {
                        Title = "ignored show 1", EpisodeCount = -1, Drm = true
                    }
                }
            };

            var result = await handler.Handle(request, CancellationToken.None);

            Assert.NotNull(result?.Response);
            Assert.Equal(2, result.Response.Count);
            Assert.Equal(firstExpectedTitle, result.Response[0].Title);
            Assert.Equal(secondExpectedTitle, result.Response[1].Title);
        }