public async Task AddMovie_AllPropertiesAreMissing_SavesDataCorrectly() { // Arrange // Using fake URL to prevent requests to Kinopoisk if stub is misconfigured. var movieUri = new Uri("https://www.kinopoisk-test.ru/film/111543/"); var movieInfo = new MovieInfoModel { Title = "Темный рыцарь", MovieUri = movieUri, }; var serviceProvider = await BootstrapTests(seedData : true, StubClock(new DateTimeOffset(2020, 04, 26, 12, 55, 35, TimeSpan.FromHours(3)))); var target = serviceProvider.GetRequiredService <IMoviesToGetService>(); // Act var newMovieId = await target.AddMovie(movieInfo, CancellationToken.None); // Assert var expectedMovie = new MovieToGetModel { Id = newMovieId, TimestampOfAddingToGetList = new DateTimeOffset(2020, 04, 26, 12, 55, 35, TimeSpan.FromHours(3)), MovieInfo = movieInfo, }; var storedMovie = target.GetAllMovies().SingleOrDefault(m => m.MovieInfo.MovieUri == movieUri); storedMovie.Should().BeEquivalentTo(expectedMovie); }
public MovieToGetViewModel(MovieToGetModel movie) { _ = movie ?? throw new ArgumentNullException(nameof(movie)); Id = movie.Id; TimestampOfAddingToGetList = movie.TimestampOfAddingToGetList; MovieInfo = new MovieInfoViewModel(movie.MovieInfo); }
private static MovieId GetMovieId(IServiceProvider serviceProvider, MovieToGetModel movie) { var target = serviceProvider.GetRequiredService <IMoviesToGetService>(); return(target .GetAllMovies() .Single(m => m.MovieInfo.MovieUri == movie.MovieInfo.MovieUri).Id); }
public async Task <MovieId> AddMovie(MovieInfoModel movieInfo, CancellationToken cancellationToken) { logger.LogInformation("Adding movie to get '{SourceMovieUri}' ...", movieInfo.MovieUri); var movieToGet = new MovieToGetModel { TimestampOfAddingToGetList = clock.Now, MovieInfo = movieInfo, }; return(await moviesToGetRepository.AddMovie(movieToGet, cancellationToken)); }
public async Task <MovieId> AddMovie(MovieToGetModel movie, CancellationToken cancellationToken) { var document = movie.ToDocument(); document.Id = idGenerator.GenerateId(); var insertOptions = new InsertOneOptions { BypassDocumentValidation = false, }; await collection.InsertOneAsync(document, insertOptions, cancellationToken); return(document.Id.ToMovieId()); }
public async Task AddMovie_AllPropertiesAreFilled_SavesDataCorrectly() { // Arrange // Using fake URL to prevent requests to Kinopoisk if stub is misconfigured. var movieUri = new Uri("https://www.kinopoisk-test.ru/film/111543/"); var movieInfo = new MovieInfoModel { Title = "Темный рыцарь", Year = 2008, MovieUri = movieUri, PosterUri = new Uri("https://st.kp.yandex.net/images/film_iphone/iphone360_111543.jpg"), Directors = new[] { "Кристофер Нолан" }, Cast = new[] { "Кристиан Бэйл", "Хит Леджер", "Аарон Экхарт", "Мэгги Джилленхол", "Гари Олдман", }, Rating = new MovieRatingModel(8.499M, 463508), Duration = TimeSpan.FromMinutes(152), Genres = new[] { "фантастика", "боевик", "триллер", "криминал", "драма", }, Countries = new[] { "США", "Великобритания", }, SummaryParagraphs = new[] { "Бэтмен поднимает ставки в войне с криминалом..." }, }; var serviceProvider = await BootstrapTests(seedData : true, StubClock(new DateTimeOffset(2020, 04, 26, 12, 55, 35, TimeSpan.FromHours(3)))); var target = serviceProvider.GetRequiredService <IMoviesToGetService>(); // Act var newMovieId = await target.AddMovie(movieInfo, CancellationToken.None); // Assert var expectedMovie = new MovieToGetModel { Id = newMovieId, TimestampOfAddingToGetList = new DateTimeOffset(2020, 04, 26, 12, 55, 35, TimeSpan.FromHours(3)), MovieInfo = movieInfo, }; var storedMovie = target.GetAllMovies().SingleOrDefault(m => m.MovieInfo.MovieUri == movieUri); storedMovie.Should().BeEquivalentTo(expectedMovie); }
public static MovieToGetDocument ToDocument(this MovieToGetModel model) { return(new MovieToGetDocument { Id = model.Id != null ? new ObjectId(model.Id.Value) : default,