public void InsertScrapedMovieTest() { IServiceProvider serviceProvider = DIHelper.Initialize(); ProductionDataFetchSettings productionDataFetchSettings = new FullProductionDataFetchSettings(); DbContextOptionsBuilder <JMoviesEntities> dbContextOptionsBuilder = new DbContextOptionsBuilder <JMoviesEntities>(); dbContextOptionsBuilder.UseLazyLoadingProxies(true); using (JMoviesEntities entities = new JMoviesEntities(dbContextOptionsBuilder.Options)) { long[] imdbIDs = new long[] { 1477834, 18652, 16624, 8269, 6958 }; foreach (long imdbID in imdbIDs) { //DBHelper.EmptyDB(entities); IIMDbDataProvider iMDbDataProvider = serviceProvider.GetRequiredService <IIMDbDataProvider>(); Movie movie = iMDbDataProvider.GetMovie(imdbID, productionDataFetchSettings); ProductionPersistanceManager.Persist(entities, movie); Movie savedMovie = entities.Production.SingleOrDefault(e => e.IMDbID == movie.IMDbID) as Movie; Assert.IsNotNull(savedMovie); Assert.AreEqual(movie.IMDbID, savedMovie.IMDbID); Assert.AreEqual(movie.Title, savedMovie.Title); } } }
static void Main(string[] args) { var builder = new ConfigurationBuilder() .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) .AddJsonFile($"appsettings.{EnvironmentUtilities.GetEnvironmentName()}.json", optional: true, reloadOnChange: true) .AddEnvironmentVariables() .AddCommandLine(args); BaseJobConfiguration configuration = builder.Build().Get <BaseJobConfiguration>(); InitializationHelper.Initialize(configuration); var services = new ServiceCollection(); services.AddOptions(); var serviceProvider = services.BuildServiceProvider(); if (configuration.MaxRecordCount == default(int)) { configuration.MaxRecordCount = ConfigurationConstants.PersisterRecordCountPerRun; } using (JMoviesEntities entities = new JMoviesEntities()) { IIMDbDataProvider imdbDataProvider = new IMDbScraperDataProvider(); if (configuration.StartRecordID == default(long) || configuration.WorkingType == PersisterWorkingTypeEnum.UpdateInternalData) { configuration.StartRecordID = PersisterHelper.DetermineTheStartID(EntityType, DataSource, configuration.WorkingType, configuration.StartRecordID, entities); } long dataID = configuration.StartRecordID; for (int i = 0; i < configuration.MaxRecordCount; i++) { if (i != 0) { dataID = PersisterHelper.GetNextID(EntityType, DataSource, configuration.WorkingType, entities, dataID); } if (dataID != default(long)) { if (dataID > ConfigurationConstants.IMDBMaxID) { dataID = 1; } try { Production production = imdbDataProvider.GetProduction(dataID, ProductionDataFetchSettings); DbContextOptionsBuilder <JMoviesEntities> dbContextOptionsBuilder = new DbContextOptionsBuilder <JMoviesEntities>(); dbContextOptionsBuilder.UseLazyLoadingProxies(true); using (JMoviesEntities productionPersistanceEntities = new JMoviesEntities(dbContextOptionsBuilder.Options)) { ProductionPersistanceManager.Persist(productionPersistanceEntities, production); } PersisterHelper.SavePersisterHistory(entities, dataID, DataSource, EntityType, string.Empty); } catch (Exception exception) { PersisterHelper.SavePersisterHistory(entities, dataID, DataSource, EntityType, exception.ToString()); } entities.SaveChanges(); } } } }
public void InsertMovieTest() { DbContextOptionsBuilder <JMoviesEntities> dbContextOptionsBuilder = new DbContextOptionsBuilder <JMoviesEntities>(); dbContextOptionsBuilder.UseLazyLoadingProxies(true); using (JMoviesEntities entities = new JMoviesEntities(dbContextOptionsBuilder.Options)) { IServiceProvider serviceProvider = DIHelper.Initialize(); //DBHelper.EmptyDB(entities); Movie movie = new Movie(); movie.AKAs = new List <AKA> { new AKA { Description = "Test2", Name = "Test2" } }; movie.Budget = new Budget { Amount = new Amount { Currency = "$", Value = 50000 }, Description = "Test Budget" }; Country turkey = new Country { Identifier = "tr", Name = "Turkey" }; movie.Countries = new List <ProductionCountry> { new ProductionCountry { Country = turkey, Production = movie } }; movie.Credits = new List <Credit> { new Credit { Person = new Person { FullName = "Test Person" }, RoleType = CreditRoleType.Actor } }; movie.FilmingLocations = new List <string> { "Eskiþehir", "Ýstanbul", "Barcelona", "Hamburg" }; movie.Genres = new List <Genre> { new Genre { Identifier = "action", Value = "Action" } }; movie.IMDbID = 123; movie.Keywords = new List <Keyword> { new Keyword { Identifier = "punching", Value = "Punching" } }; movie.Languages = new List <ProductionLanguage> { new ProductionLanguage { Language = new Language { Identifier = "tr", Name = "Turkish" }, Production = movie } }; movie.OfficialSites = new List <OfficialSite> { new OfficialSite { Title = "Official Site", URL = "https://official.io" } }; movie.OriginalTitle = "Test Movie 2"; movie.PlotSummary = "This is a summary"; movie.ProductionCompanies = new Company[] { new Company { Name = "Test Company" } }; movie.Rating = new Rating { DataSource = new DataSource(DataSourceTypeEnum.IMDb), RateCount = 500, Value = 9.9 }; movie.ReleaseDates = new List <ReleaseDate> { new ReleaseDate { Country = turkey, Date = DateTime.Now } }; movie.Runtime = TimeSpan.FromMinutes(120); movie.StoryLine = "Story line"; movie.TagLines = new List <TagLine> { new TagLine { Content = "test" }, new TagLine { Content = "line" } }; movie.Title = "Test Movie"; movie.Year = 2019; ProductionPersistanceManager.Persist(entities, movie); //entities.Add(movie); //entities.SaveChanges(); Movie savedMovie = entities.Production.SingleOrDefault(e => e.IMDbID == 123) as Movie; Assert.IsNotNull(savedMovie); Assert.AreEqual(movie.IMDbID, savedMovie.IMDbID); Assert.AreEqual(movie.Title, savedMovie.Title); } }