Esempio n. 1
0
        public void GivenAVideoAlreadyExistsInTheRecord(string typeOfContent)
        {
            object request;

            switch (typeOfContent.ToUpperInvariant())
            {
            case "MOVIE":
                request = RequestGenerator.GetMovieRequest();
                (request as MovieRequest).Plot = "Original Plot";
                Database.AddRequestItem(request as MovieRequest, _container.Resolve <IConfiguration>());
                (request as MovieRequest).Plot = "New Plot";
                break;

            case "TV EPISODE":
                request = RequestGenerator.GetTvEpisodeRequest();
                (request as TvEpisodeRequest).EpisodePlot = "Original Plot";
                Database.AddRequestItem(request as TvEpisodeRequest, _container.Resolve <IConfiguration>());
                (request as TvEpisodeRequest).EpisodePlot = "New Plot";
                break;

            default:
                throw new Exception($"{typeOfContent} is not currently supported.");
            }
            ;


            _container.RegisterInstanceAs(request, name: "RequestBody");
        }
Esempio n. 2
0
        public void GivenAUserThatWantsToSeeWhatMoviesAlreadyExist(string typeOfContent)
        {
            object request;
            var    config = _container.Resolve <IConfiguration>();

            switch (typeOfContent.ToUpperInvariant())
            {
            case "MOVIE":
                foreach (var videoId in Enumerable.Range(1000000, 10))
                {
                    request = RequestGenerator.GetMovieRequest(videoId);
                    Database.AddRequestItem(request as MovieRequest, config);
                }
                break;

            case "SHOW":
            case "TV EPISODE":
                foreach (var tvId in Enumerable.Range(10000000, 10))
                {
                    request = RequestGenerator.GetTvEpisodeRequest(1000000, tvId);
                    Database.AddRequestItem(request as TvEpisodeRequest, config);
                }

                break;

            default:
                throw new Exception($"{typeOfContent} is not currently supported.");
            }
            ;
        }
Esempio n. 3
0
        public void ShouldInsertVideo()
        {
            var repository   = _fixture.Create <MovieRepository>();
            var request      = RequestGenerator.GetMovieRequest(134132);
            var videoEntered = repository.UpsertMovie(request);

            videoEntered.Count().Should().Be(1);
            videoEntered.All(a => a.imdb_id == "tt134132").Should().BeTrue();

            var command = @"SELECT COUNT(*)
FROM video.vw_movies
WHERE imdb_id = 'tt134132'";

            using var sqlConnection = new SqlConnection(_config.CreateConnectionString());
            using var sqlCommand    = new SqlCommand(command, sqlConnection);

            sqlCommand.Connection.Open();

            var reader = sqlCommand.ExecuteReader();

            reader.Read();
            var rowCount = reader.GetInt32(0);

            sqlCommand.Connection.Close();

            rowCount.Should().Be(1);
        }
Esempio n. 4
0
        public void GivenANewVideo(string typeOfContent)
        {
            var request = typeOfContent.ToUpperInvariant() switch
            {
                "MOVIE" => RequestGenerator.GetMovieRequest(),
                "TV EPISODE" => RequestGenerator.GetTvEpisodeRequest(),
                _ => throw new Exception($"{typeOfContent} is not currently supported.")
            };

            _container.RegisterInstanceAs <object>(request, name: "RequestBody");
        }
Esempio n. 5
0
        public void ShouldThrowBadRequestExceptionIfStoredProcedureThrowsValidationError(string property)
        {
            var repository = _fixture.Create <MovieRepository>();
            var request    = RequestGenerator.GetMovieRequest();

            request.GetType()
            .GetProperty(property)
            .SetValue(request, null);

            Action exception = () => repository.UpsertMovie(request);

            exception.Should()
            .Throw <EvoBadRequestException>()
            .WithMessage($"{property} can not be null.");
        }
Esempio n. 6
0
        public void ShouldThrowExceptionWhenRequestIsInvalid()
        {
            var repository = _fixture.Create <MovieRepository>();
            var request    = RequestGenerator.GetMovieRequest();

            request.Actors
            .First()
            .Modify(gr => gr.FirstName, null);

            Action exception = () => repository.UpsertMovie(request);

            exception.Should()
            .Throw <EvoException>()
            .WithMessage(@"Cannot insert the value NULL into column 'first_name', table '@persons'; column does not allow nulls. INSERT fails.
The data for table-valued parameter ""@persons"" doesn't conform to the table type of the parameter. SQL Server error is: 515, state: 2
The statement has been terminated.");
        }
Esempio n. 7
0
        public void ShouldRetrieveSpecificVideosInDatastore()
        {
            foreach (var id in Enumerable.Range(1, 10))
            {
                var request = RequestGenerator.GetMovieRequest(id);
                Features.Steps.Support.Database.AddRequestItem(request, _config);
            }

            var repository = _fixture.Create <MovieRepository>();
            var videos     = repository.GetMovies("tt1");

            videos
            .Select(s => s.imdb_id)
            .Should()
            .HaveCount(1)
            .And
            .BeEquivalentTo(new[]
            {
                "tt1"
            });
        }
Esempio n. 8
0
        public void GivenAUserThatWantsToSeeAMovieThatAlreadyExists(string typeOfContent)
        {
            var config = _container.Resolve <IConfiguration>();

            switch (typeOfContent.ToUpperInvariant())
            {
            case "MOVIE":
                foreach (var videoId in Enumerable.Range(1000000, 10))
                {
                    var movieRequest = RequestGenerator.GetMovieRequest(videoId);
                    Database.AddRequestItem(movieRequest as MovieRequest, config);
                }
                _container.RegisterInstanceAs <object>("tt1000005", name: "RequestID");
                break;

            case "SHOW":
                foreach (var tvId in Enumerable.Range(10000000, 10))
                {
                    var tvRequest = RequestGenerator.GetTvEpisodeRequest(1000000, tvId);
                    Database.AddRequestItem(tvRequest as TvEpisodeRequest, config);
                }
                _container.RegisterInstanceAs <object>("tt1000000", name: "RequestID");
                break;

            case "TV EPISODE":
                foreach (var tvId in Enumerable.Range(10000000, 10))
                {
                    var tvRequest = RequestGenerator.GetTvEpisodeRequest(1000000, tvId);
                    Database.AddRequestItem(tvRequest as TvEpisodeRequest, config);
                }
                _container.RegisterInstanceAs <object>("tt10000005", name: "RequestID");

                break;

            default:
                throw new Exception($"{typeOfContent} is not currently supported.");
            }
            ;
        }
Esempio n. 9
0
        public void ShouldMapVideoDatamodelToViewModel()
        {
            _videoRepo.Setup(s => s.UpsertMovie(It.IsAny <MovieRequest>()))
            .Returns(CreateVideoDataModel("tt1234"));

            var service = _fixture.Create <VideoService>();


            var result = service.UpsertMovie(RequestGenerator.GetMovieRequest());

            result.Should()
            .BeEquivalentTo(
                new MovieViewModel
            {
                VideoId     = "tt1234",
                Title       = "title",
                MpaaRating  = "R",
                Plot        = "plot",
                ReleaseDate = DateTime.MaxValue,
                Runtime     = 120.33M,
                VideoType   = VideoType.Movie
            });
        }