public StatisticCollectorTest(ITestOutputHelper output)
        {
            _output    = output;
            _dataStubs = new DataStubs(
                accountCreatedAt: DateTime.Now.AddMonths(-6),
                dbLastBattleTime: DateTime.Now.AddHours(-2),
                dbAccessTokenExp: DateTime.Now.AddDays(1),
                wgLastBattleTime: DateTime.Now.AddHours(-1)
                );

            var containerBuilder = new ContainerBuilder();

            var loggerFactory = TestOutputLoggerFactory.CreateLoggerFactory(output);

            containerBuilder.SetupLogger(loggerFactory);
            containerBuilder.AddInMemoryDataBase(loggerFactory);
            containerBuilder.ConfigureBlitzStaticianLogic();
            containerBuilder.SetupWargamingApiMockDependencies(_dataStubs);

            _container = containerBuilder.Build();

            _statisticsCollectorFactory = _container.Resolve <IStatisticsCollectorFactory>();
            _statisticsCollectorEngine  = _container.Resolve <IStatisticsCollectorEngine>();
            _dbContext = _container.Resolve <BlitzStaticianDbContext>();
        }
        public static ContainerBuilder AddInMemoryDataBase(this ContainerBuilder containerBuilder, ILoggerFactory loggerFactory = null)
        {
            var dbContextBuilder = new DbContextOptionsBuilder <BlitzStaticianDbContext>()
                                   .UseInMemoryDatabase("BlitzStatician");

            if (loggerFactory != null)
            {
                dbContextBuilder.UseLoggerFactory(loggerFactory);
            }

            var context = new BlitzStaticianDbContext(dbContextBuilder.Options);

#pragma warning disable CS0618
            var dummyTran           = new Mock <IDbContextTransaction>();
            var accountDataAccessor = new AccountDataAccessor(context, dummyTran.Object);
#pragma warning restore CS0618

            containerBuilder.RegisterInstance(context).As <BlitzStaticianDbContext>().ExternallyOwned();
            containerBuilder.RegisterType <BlitzStaticianDictionary>().As <IBlitzStaticianDictionary>();
            containerBuilder.RegisterInstance(accountDataAccessor).As <IAccountDataAccessor>();
            containerBuilder.RegisterType <ClanInfoDataAccessor>().As <IClanInfoDataAccessor>();
            containerBuilder.RegisterType <AchievementsDataAccessor>().As <IAchievementsDataAccessor>();
            containerBuilder.RegisterType <AccountsTankInfoDataAccessor>().As <IAccountsTankInfoDataAccessor>();
            containerBuilder.RegisterType <AccountInfoViewDataAccessor>().As <IAccountInfoViewDataAccessor>();

            return(containerBuilder);
        }
        public DatabaseFixturesGetter()
        {
            string connectionString = "Data Source=192.168.1.85,1438;Initial Catalog=BlitzStatician;Integrated Security=False;User Id=SA;Password=DevSql123!";
            var    builder          = new DbContextOptionsBuilder <BlitzStaticianDbContext>();

            builder.UseSqlServer(connectionString);
            _dbContext = new BlitzStaticianDbContext(builder.Options);
        }
Beispiel #4
0
        public AccountInfoViewDataAccessor(
            BlitzStaticianDbContext dbContext,
            IQueryableMapper <AccountInfoStatistics, PlayerStatDto> playerStatMapper

            )
        {
            _dbContext        = dbContext;
            _playerStatMapper = playerStatMapper;
        }
Beispiel #5
0
        public SaveAccountClandInfoDataAccessTest()
        {
            var containerBuilder = new ContainerBuilder();

            containerBuilder.AddInMemoryDataBase();

            _container = containerBuilder.Build();
            _dbContext = _container.Resolve <BlitzStaticianDbContext>();
        }
Beispiel #6
0
        public AccountClanInfoHistoryOperationTest()
        {
            var containerBuilder = new ContainerBuilder();

            containerBuilder.AddInMemoryDataBase();
            containerBuilder.RegisterType <CreateAccountClanHistoryOperation>().AsSelf();

            _container = containerBuilder.Build();
            _dbContext = _container.Resolve <BlitzStaticianDbContext>();
        }
        public ProlongAccessTokenOperationTest()
        {
            _operationContext       = PrepareOperationContextForProlongAccessToken();
            _prolongatedAccountInfo = PrepareProlongatedAccountInfo();

            var containerBuilder = new ContainerBuilder();

            containerBuilder.AddWargamingApiClientMock(_prolongatedAccountInfo)
            .AddInMemoryDataBase()
            .AddLoggerMock <ProlongAccessTokenIfNeeded>()
            .RegisterType <ProlongAccessTokenIfNeeded>().AsSelf();

            _container = containerBuilder.Build();
            _dbContext = _container.Resolve <BlitzStaticianDbContext>();
            PopulateDatabase(_dbContext, _operationContext.Accounts.Single().CurrentAccountInfo);
        }
        public static async Task MergeVehicles(this BlitzStaticianDbContext dbContext,
                                               List <VehicleEncyclopedia> vehicles)
        {
            var ids      = vehicles.Select(l => l.TankId);
            var existing = await dbContext.VehicleEncyclopedia
                           .Where(l => ids.Contains(l.TankId))
                           .Select(l => l.TankId)
                           .ToListAsync();

            vehicles.ForEach(v =>
            {
                dbContext.VehicleEncyclopedia.Attach(v);
                dbContext.Entry(v).State = existing.Contains(v.TankId)
                                        ? EntityState.Modified
                                        : EntityState.Added;
            });
        }
Beispiel #9
0
        public static async Task MergeNations(this BlitzStaticianDbContext dbContext, List <DictionaryNations> nations)
        {
            var nationIds = nations.Select(l => l.NationId);
            var existing  = await dbContext.DictionaryNation
                            .Where(l => nationIds.Contains(l.NationId))
                            .Select(l => l.NationId)
                            .AsNoTracking()
                            .ToListAsync();

            nations.ForEach(l =>
            {
                dbContext.DictionaryNation.Attach(l);
                dbContext.Entry(l).State = existing.Contains(l.NationId)
                                        ? EntityState.Modified
                                        : EntityState.Added;
            });
        }
        public static async Task MergeLanguages(this BlitzStaticianDbContext dbContext, List <DictionaryLanguage> languages)
        {
            var langIds  = languages.Select(l => l.LanguageId);
            var existing = await dbContext.DictionaryLanguage
                           .Where(l => langIds.Contains(l.LanguageId))
                           .Select(l => l.LanguageId)
                           .AsNoTracking()
                           .ToListAsync();

            languages.ForEach(l =>
            {
                dbContext.DictionaryLanguage.Attach(l);
                dbContext.Entry(l).State = existing.Contains(l.LanguageId)
                                        ? EntityState.Modified
                                        : EntityState.Added;
            });
        }
        public static async Task MergeVehicleType(this BlitzStaticianDbContext dbContext,
                                                  List <DictionaryVehicleType> vehicleTypes)
        {
            var ids      = vehicleTypes.Select(l => l.VehicleTypeId);
            var existing = await dbContext.DictionaryVehicleType
                           .Where(l => ids.Contains(l.VehicleTypeId))
                           .Select(l => l.VehicleTypeId)
                           .AsNoTracking()
                           .ToListAsync();

            vehicleTypes.ForEach(l =>
            {
                dbContext.DictionaryVehicleType.Attach(l);
                dbContext.Entry(l).State = existing.Contains(l.VehicleTypeId)
                                        ? EntityState.Modified
                                        : EntityState.Added;
            });
        }
Beispiel #12
0
        public static async Task MergeAchievementSection(this BlitzStaticianDbContext dbContext,
                                                         List <AchievementSection> achievementSections)
        {
            var ids      = achievementSections.Select(l => l.Section);
            var existing = await dbContext.AchievementSection
                           .Where(l => ids.Contains(l.Section))
                           .Select(l => l.Section)
                           .AsNoTracking()
                           .ToListAsync();

            achievementSections.ForEach(l =>
            {
                dbContext.AchievementSection.Attach(l);
                dbContext.Entry(l).State = existing.Contains(l.Section)
                                        ? EntityState.Modified
                                        : EntityState.Added;
            });
        }
Beispiel #13
0
        public static async Task MergeClanRoles(this BlitzStaticianDbContext dbContext,
                                                List <DictionaryClanRole> clanRoles)
        {
            var stopwatch = Stopwatch.StartNew();
            var ids       = clanRoles.Select(l => l.ClanRoleId);
            var existing  = await dbContext.DictionaryClanRole
                            .Where(l => ids.Contains(l.ClanRoleId))
                            .Select(l => l.ClanRoleId)
                            .AsNoTracking()
                            .ToListAsync();

            clanRoles.ForEach(l =>
            {
                dbContext.DictionaryClanRole.Attach(l);
                dbContext.Entry(l).State = existing.Contains(l.ClanRoleId)
                                        ? EntityState.Modified
                                        : EntityState.Added;
            });
            stopwatch.Stop();
        }
 public BlitzStaticianDictionary(BlitzStaticianDbContext dbContext, ILogger <BlitzStaticianDictionary> logger)
 {
     _dbContext = dbContext;
     _logger    = logger;
 }
 public AchievementsDataAccessor(BlitzStaticianDbContext dbContext)
 {
     _dbContext = dbContext;
 }
 private static void PopulateDatabase(BlitzStaticianDbContext dbContext, AccountInfo accountInfo)
 {
     dbContext.AccountInfo.Add(accountInfo);
     dbContext.SaveChanges();
 }
Beispiel #17
0
 public AccountDataAccessor(BlitzStaticianDbContext dbContext,
                            IDbContextTransaction tran)
 {
     _dbContext        = dbContext;
     _dummyTransaction = tran;
 }
 public ReplicationDataAccessor(BlitzStaticianDbContext dbContext,
                                ILogger <ReplicationDataAccessor> logger)
 {
     _logger    = logger;
     _dbContext = dbContext;
 }
Beispiel #19
0
 private static async Task DeleteAchievementOptions(BlitzStaticianDbContext dbContext)
 {
     await dbContext.Database.ExecuteSqlCommandAsync("TRUNCATE TABLE wotb.AchievementOption");
 }
Beispiel #20
0
 public AccountsTankInfoDataAccessor(BlitzStaticianDbContext dbContext)
 {
     _dbContext = dbContext;
 }
 public ClanInfoDataAccessor(BlitzStaticianDbContext dbContext)
 {
     _dbContext = dbContext;
 }