Пример #1
0
        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);
                }
            }
        }
Пример #2
0
        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();
                    }
                }
            }
        }
Пример #3
0
        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);
            }
        }