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"); }
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."); } ; }
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); }
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"); }
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."); }
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."); }
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" }); }
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."); } ; }
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 }); }