Example #1
0
 public TrainingRoomController(ITrainingRoomService trainingRoomService, ITrainingSessionService trainingSessionService) : base(trainingRoomService)
 {
     _trainingSessionService = trainingSessionService;
 }
Example #2
0
        public async Task Initialize()
        {
            IServiceCollection serviceCollection = new ServiceCollection();

            serviceCollection.AddLogging(builder => builder.AddConsole());
            serviceCollection.AddAutoMapper(Assembly.GetAssembly(typeof(TrainingRoomStartupExtensions)));

            #region Database
            // NOTE: to verify if the test works in memory use code below..
            //serviceCollection.AddOptions();
            //serviceCollection.Configure<DbConfiguration>(dbConfig =>
            //{
            //    //InMemory by default
            //    dbConfig.UseLazyLoading = true;
            //    dbConfig.ConnectionString = "";
            //    dbConfig.DbProvider = "";
            //});
            //serviceCollection.AddSingleton<IFactory<TrainingRoomDbContext>, TrainingRoomDatabaseFactory>();
            //serviceCollection.AddTransient<TrainingRoomDbContext>(p => p.GetService<IFactory<TrainingRoomDbContext>>().Create());
            SqliteConnection = new SqliteConnection("Data Source=:memory:");
            SqliteConnection.Open();

            serviceCollection.AddDbContext <TrainingRoomDbContext>(optionsBuilder =>
            {
                optionsBuilder.UseSqlite(SqliteConnection);
                optionsBuilder.EnableSensitiveDataLogging();
            });
            #endregion Database

            #region Validators
            serviceCollection.AddTransient <IEntityValidator <TrainingRoom>, TrainingRoomValidator>();
            serviceCollection.AddTransient <IEntityValidator <TrainingSession>, TrainingSessionValidator>();
            serviceCollection.AddTransient <IEntityValidator <TrainingRoomSettings>, TrainingRoomSettingsValidator>();
            #endregion Validators

            #region Repositories
            serviceCollection.AddTransient <IRepository <TrainingRoom>, Repository <TrainingRoom, TrainingRoomDbContext> >();
            serviceCollection.AddTransient <ITrainingSessionRepository, TrainingSessionRepository>();
            serviceCollection.AddTransient <IRepository <TrainingRoomSettings>, Repository <TrainingRoomSettings, TrainingRoomDbContext> >();
            #endregion Repositories

            #region Services
            serviceCollection.AddTransient <ITrainingRoomService, Application.Services.TrainingRoomService>();
            serviceCollection.AddTransient <ITrainingSessionService, Application.Services.TrainingSessionService>();
            UserId = Guid.NewGuid();
            const string username = "******";
            serviceCollection.AddSingleton <IUserService, UserServiceMock>(p => new UserServiceMock(UserId, username));
            #endregion Services

            GenericServiceProvider = serviceCollection.BuildServiceProvider().ToGenericServiceProvider();
            Logger = GenericServiceProvider.GetService <ILogger <TrainingSessionServiceTests> >();
            Logger.LogInformation("Started initialization!");
            TrainingSessionService = GenericServiceProvider.GetService <ITrainingSessionService>();

            TrainingRoomDbContext context = GenericServiceProvider.GetService <TrainingRoomDbContext>();
            await context.Database.EnsureCreatedAsync();

            ITrainingRoomService trainingRoomService = GenericServiceProvider.GetService <ITrainingRoomService>();
            IUserService         userService         = GenericServiceProvider.GetService <IUserService>();

            TrainingRoomDto trainingRoomDto = new TrainingRoomDto()
            {
                Id                   = Guid.NewGuid(),
                Name                 = "Cool room",
                OwnerId              = UserId,
                Owner                = await userService.FindUserAsync(UserId),
                Generation           = 0,
                TrainingRoomSettings = new TrainingRoomSettingsDto()
                {
                    Id                             = Guid.NewGuid(),
                    OrganismCount                  = (uint)OrganismCount,
                    InputCount                     = 2,
                    OutputCount                    = 1,
                    SpeciesExcessGeneWeight        = 1,
                    SpeciesDisjointGeneWeight      = 1,
                    SpeciesAverageWeightDiffWeight = 0.4,
                    Threshold                      = 3,
                    AddConnectionChance            = 0.05,
                    AddNodeChance                  = 0.03,
                    CrossOverChance                = 0.75,
                    InterSpeciesChance             = 0.001,
                    MutationChance                 = 1,
                    MutateWeightChance             = 0.8,
                    WeightReassignChance           = 0.1,
                    TopAmountToSurvive             = 0.5,
                    EnableConnectionChance         = 0.25,
                    Seed                           = 1,
                    MaxStagnantTime                = 15,
                    ChampionCloneMinSpeciesSize    = 5
                },
                AuthorizedTrainers = new List <TrainerDto>(),
                TrainingSessions   = new List <TrainingSessionDto>()
            };
            (bool success, Guid id) = await trainingRoomService.CreateAsync(trainingRoomDto);

            Logger.LogInformation($"Created a training room: {success} id: {id}");
            TrainingRoomId = id;
            Logger.LogInformation("Finished initialization!");
        }