예제 #1
0
        public void GetAllBots_ExistingBots_ShouldReturnListOfBots()
        {
            var databaseContext = DatabaseFactory.Create();
            var timeProvider    = TimeProviderFactory.Create();
            var botService      = new BotsService(databaseContext, timeProvider);

            databaseContext.Bots.Add(new BotModel
            {
                Id         = "1000",
                Name       = "Bot1",
                CreateTime = timeProvider.Get()
            });
            databaseContext.Bots.Add(new BotModel
            {
                Id         = "1001",
                Name       = "Bot2",
                CreateTime = timeProvider.Get()
            });
            databaseContext.SaveChanges();

            var result = botService.GetAllBots();

            Assert.Equal(2, result.Count);
            Assert.Equal("1000", result[0].Id);
            Assert.Equal("1001", result[1].Id);
        }
예제 #2
0
        public void ShouldGetBots()
        {
            BotsService service;

            Bot[]      result;
            IBotModule subModule;

            subModule = Substitute.For <IBotModule>();
            subModule.GetBots().Returns(new Bot[] { new Bot()
                                                    {
                                                        BotID = 1
                                                    }, new Bot()
                                                    {
                                                        BotID = 2
                                                    }, new Bot()
                                                    {
                                                        BotID = 3
                                                    } });

            service = new BotsService(NullLogger.Instance, subModule, null, null, null, null, null, null);
            result  = service.GetBots();
            Assert.IsNotNull(result);
            Assert.AreEqual(3, result.Length);
            Assert.IsTrue(result.All((item) => item != null));
        }
예제 #3
0
        public void ShouldGetBuildOrdersAtPosition()
        {
            BotsService service;

            BuildOrder[]      result;
            IBuildOrderModule subModule;

            subModule = Substitute.For <IBuildOrderModule>();
            subModule.GetBuildOrders(Arg.Any <int>(), Arg.Any <int>(), Arg.Any <int>()).Returns(new BuildOrder[] { new BuildOrder()
                                                                                                                   {
                                                                                                                       BuildOrderID = 1
                                                                                                                   }, new BuildOrder()
                                                                                                                   {
                                                                                                                       BuildOrderID = 2
                                                                                                                   }, new BuildOrder()
                                                                                                                   {
                                                                                                                       BuildOrderID = 3
                                                                                                                   } });

            service = new BotsService(NullLogger.Instance, null, null, null, null, subModule, null, null);
            result  = service.GetBuildOrdersAtPosition(1, 2, 3);
            Assert.IsNotNull(result);
            Assert.AreEqual(3, result.Length);
            Assert.IsTrue(result.All((item) => item != null));
        }
예제 #4
0
        public void RegisterBot_ExistingBot_ShouldReturnDuplicatedIdError()
        {
            var databaseContext = DatabaseFactory.Create();
            var timeProvider    = TimeProviderFactory.Create();
            var botService      = new BotsService(databaseContext, timeProvider);

            databaseContext.Bots.Add(new BotModel
            {
                Id         = "1000",
                Name       = "Some other bot",
                CreateTime = DateTime.Now
            });
            databaseContext.SaveChanges();

            var bot = new RegisterBotDto
            {
                Id   = "1000",
                Name = "Bot1"
            };

            var result = botService.RegisterBot(bot);

            Assert.Equal(RegisterResult.DuplicatedIdError, result);
            Assert.Equal(1, databaseContext.Bots.Count());
        }
예제 #5
0
        public void GetBot_NonExistingBot_ShouldReturnBotData()
        {
            var databaseContext = DatabaseFactory.Create();
            var timeProvider    = TimeProviderFactory.Create();
            var botService      = new BotsService(databaseContext, timeProvider);

            var result = botService.GetBot("1000");

            Assert.Null(result);
        }
예제 #6
0
        public void IsBotRegistered_NonExistingBot_ShouldReturnTrue()
        {
            var databaseContext = DatabaseFactory.Create();
            var timeProvider    = TimeProviderFactory.Create();
            var botService      = new BotsService(databaseContext, timeProvider);

            var result = botService.IsBotRegistered("1000");

            Assert.False(result);
        }
        public async Task <IActionResult> Index()
        {
            var userId         = HttpContext.Session.GetString("userId");
            var botsViewModels =
                await BotsService.GetBotsViewModels(_configuration, _systemUserRepository, _botsRepository, userId);

            return(View(new PageViewModel
            {
                Bots = botsViewModels
            }));
        }
        public async Task <IActionResult> NewBot(string name, string token, string message)
        {
            var userId = HttpContext.Session.GetString("userId");

            var botsViewModels =
                await BotsService.GetBotsViewModels(_configuration, _systemUserRepository, _botsRepository, userId);

            return(View(new PageViewModel
            {
                Bots = botsViewModels.ToArray()
            }));
        }
예제 #9
0
        public void ShouldDeleteBot()
        {
            BotsService         service;
            IBotSchedulerModule subModule;
            int counter = 0;

            subModule = Substitute.For <IBotSchedulerModule>();
            subModule.When((del) => del.DeleteBot(Arg.Any <int>())).Do((del) => { counter++; });

            service = new BotsService(NullLogger.Instance, null, null, null, null, null, subModule, null);
            service.DeleteBot(1);
            Assert.AreEqual(1, counter);
        }
예제 #10
0
        public async Task <IActionResult> NewInlineUrlKey(string botId)
        {
            var userId = HttpContext.Session.GetString("userId");
            var bots   = await BotsService.GetBotsViewModels(_configuration, _systemUserRepository, _botsRepository, userId);

            var bot = await BotsService.GetBotViewModel(botId, _configuration, _botsRepository);

            return(View(new PageViewModel
            {
                CurrentBot = bot,
                Bots = bots
            }));
        }
예제 #11
0
        public void ShouldNotGetBotForWorkerAndLogError()
        {
            MemoryLogger logger;
            BotsService  service;
            IBotModule   subModule;

            subModule = Substitute.For <IBotModule>();
            subModule.GetBotForWorker(Arg.Any <int>()).Returns((id) => { throw new PIODataException("UnitTestException", null, 1, "UnitTest", "UnitTest"); });

            logger  = new MemoryLogger();
            service = new BotsService(logger, subModule, null, null, null, null, null, null);
            Assert.ThrowsException <FaultException>(() => service.GetBotForWorker(1));
            Assert.IsNotNull(logger.Logs.FirstOrDefault(item => (item.Level == LogLevels.Error) && (item.ComponentName == service.ModuleName)));
        }
예제 #12
0
        public void ShouldNotCreateBuildOrderAndLogError()
        {
            MemoryLogger        logger;
            BotsService         service;
            IOrderManagerModule subModule;

            subModule = Substitute.For <IOrderManagerModule>();
            subModule.CreateBuildOrder(Arg.Any <int>(), Arg.Any <BuildingTypeIDs>(), Arg.Any <int>(), Arg.Any <int>()).Returns((id) => { throw new PIODataException("UnitTestException", null, 1, "UnitTest", "UnitTest"); });

            logger  = new MemoryLogger();
            service = new BotsService(logger, null, null, null, null, null, null, subModule);
            Assert.ThrowsException <FaultException>(() => service.CreateBuildOrder(1, BuildingTypeIDs.Forest, 2, 3));
            Assert.IsNotNull(logger.Logs.FirstOrDefault(item => (item.Level == LogLevels.Error) && (item.ComponentName == service.ModuleName)));
        }
예제 #13
0
        public void ShouldNotDeleteBotAndLogError()
        {
            MemoryLogger        logger;
            BotsService         service;
            IBotSchedulerModule subModule;

            subModule = Substitute.For <IBotSchedulerModule>();
            subModule.When((del) => del.DeleteBot(Arg.Any <int>())).Do((del) => { throw new PIODataException("UnitTestException", null, 1, "UnitTest", "UnitTest"); });

            logger  = new MemoryLogger();
            service = new BotsService(logger, null, null, null, null, null, subModule, null);
            Assert.ThrowsException <FaultException>(() => service.DeleteBot(1));
            Assert.IsNotNull(logger.Logs.FirstOrDefault(item => (item.Level == LogLevels.Error) && (item.ComponentName == service.ModuleName)));
        }
예제 #14
0
        public void ShouldGetBotForWorker()
        {
            BotsService service;
            Bot         result;
            IBotModule  subModule;

            subModule = Substitute.For <IBotModule>();
            subModule.GetBotForWorker(Arg.Any <int>()).Returns(new Bot()
            {
                BotID = 1
            });

            service = new BotsService(NullLogger.Instance, subModule, null, null, null, null, null, null);
            result  = service.GetBotForWorker(1);
            Assert.IsNotNull(result);
            Assert.AreEqual(1, result.BotID);
        }
예제 #15
0
        public void ShouldGetProduceOrder()
        {
            BotsService         service;
            ProduceOrder        result;
            IProduceOrderModule subModule;

            subModule = Substitute.For <IProduceOrderModule>();
            subModule.GetProduceOrder(Arg.Any <int>()).Returns(new ProduceOrder()
            {
                ProduceOrderID = 1
            });

            service = new BotsService(NullLogger.Instance, null, null, subModule, null, null, null, null);
            result  = service.GetProduceOrder(1);
            Assert.IsNotNull(result);
            Assert.AreEqual(1, result.ProduceOrderID);
        }
예제 #16
0
        public void ShouldCreateBuildOrder()
        {
            BotsService         service;
            BuildOrder          result;
            IOrderManagerModule subModule;

            subModule = Substitute.For <IOrderManagerModule>();
            subModule.CreateBuildOrder(Arg.Any <int>(), Arg.Any <BuildingTypeIDs>(), Arg.Any <int>(), Arg.Any <int>()).Returns(new BuildOrder()
            {
                BuildOrderID = 1
            });

            service = new BotsService(NullLogger.Instance, null, null, null, null, null, null, subModule);
            result  = service.CreateBuildOrder(1, BuildingTypeIDs.Forest, 2, 3);
            Assert.IsNotNull(result);
            Assert.AreEqual(1, result.BuildOrderID);
        }
예제 #17
0
        public void ShouldCreateHarvestOrder()
        {
            BotsService         service;
            HarvestOrder        result;
            IOrderManagerModule subModule;

            subModule = Substitute.For <IOrderManagerModule>();
            subModule.CreateHarvestOrder(Arg.Any <int>(), Arg.Any <int>()).Returns(new HarvestOrder()
            {
                HarvestOrderID = 1
            });

            service = new BotsService(NullLogger.Instance, null, null, null, null, null, null, subModule);
            result  = service.CreateHarvestOrder(1, 2);
            Assert.IsNotNull(result);
            Assert.AreEqual(1, result.HarvestOrderID);
        }
예제 #18
0
        public void IsBotRegistered_ExistingBot_ShouldReturnTrue()
        {
            var databaseContext = DatabaseFactory.Create();
            var timeProvider    = TimeProviderFactory.Create();
            var botService      = new BotsService(databaseContext, timeProvider);

            databaseContext.Bots.Add(new BotModel
            {
                Id         = "1000",
                Name       = "Bot1",
                CreateTime = DateTime.Now
            });
            databaseContext.SaveChanges();

            var result = botService.IsBotRegistered("1000");

            Assert.True(result);
        }
        public async Task <IActionResult> Bot(string id)
        {
            var userId = HttpContext.Session.GetString("userId");

            var botsViewModels =
                await BotsService.GetBotsViewModels(_configuration, _systemUserRepository, _botsRepository, userId);

            var botViewModel = await BotsService.GetBotViewModel(id, _configuration, _botsRepository);

            var textMessages     = _textMessageAnswersRepository.GetTextMessageAnswers(id);
            var inlineKeys       = _inlineKeysRepository.GetInlineKeys(id);
            var inlineUrlKeys    = _inlineUrlKeysRepository.GetUrlInlineUrlKeys(id);
            var interviews       = _interviewsRepository.GetInterviews(id);
            var interviewAnswers = _interviewAnswersRepository.GetInterviewAnswers(id).Select(_ =>
                                                                                              new InterviewAnswerViewModel
            {
                Interview       = _interviewsRepository.GetInterview(_.InterviewId),
                InterviewAnswer = _,
                User            = _usersRepository.GetUser(_.UserId, _.BotId)
            });

            var users = _usersRepository.GetUsers(id).Select(_ => new UserViewModel
            {
                Id         = _.Id.ToString(),
                FirstName  = _.FirstName,
                LastName   = _.LastName,
                UserName   = _.UserName,
                TelegramId = _.TelegramId,
                Networking = JsonConvert.DeserializeObject <UserNetworking>(_.Networking)
            });

            return(View(new PageViewModel
            {
                CurrentBot = botViewModel,
                Bots = botsViewModels,
                TextMessages = textMessages,
                InlineKeys = inlineKeys,
                InlineUrlKeys = inlineUrlKeys,
                Interviews = interviews,
                InterviewAnswers = interviewAnswers,
                Users = users
            }));
        }
예제 #20
0
        public void GetBot_ExistingBot_ShouldReturnBotData()
        {
            var databaseContext = DatabaseFactory.Create();
            var timeProvider    = TimeProviderFactory.Create();
            var botService      = new BotsService(databaseContext, timeProvider);

            databaseContext.Bots.Add(new BotModel
            {
                Id         = "1000",
                Name       = "Bot1",
                CreateTime = timeProvider.Get()
            });
            databaseContext.SaveChanges();

            var result = botService.GetBot("1000");

            Assert.Equal("1000", result.Id);
            Assert.Equal("Bot1", result.Name);
            Assert.Equal(timeProvider.Get(), result.CreateTime);
        }
예제 #21
0
        public void RegisterBot_NonExistingBot_ShouldReturnSuccessAndSaveInDatabase()
        {
            var databaseContext = DatabaseFactory.Create();
            var timeProvider    = TimeProviderFactory.Create();
            var botService      = new BotsService(databaseContext, timeProvider);

            var bot = new RegisterBotDto
            {
                Id   = "1000",
                Name = "Bot1"
            };

            var result        = botService.RegisterBot(bot);
            var registeredBot = databaseContext.Bots.First();

            Assert.Equal(RegisterResult.Success, result);
            Assert.Equal(1, databaseContext.Bots.Count());
            Assert.Equal("1000", registeredBot.Id);
            Assert.Equal("Bot1", registeredBot.Name);
            Assert.Equal(timeProvider.Get(), registeredBot.CreateTime);
        }
예제 #22
0
 static AutomationAnywhereApi()
 {
     UsersService       = new UsersService();
     AutomationsService = new AutomationsService();
     BotsService        = new BotsService();
 }