public void StartBot_StartBotWithoutMarkup_NoMarkupData()
        {
            //Arrange
            Account account = new Account
            {
                Bots = new List <BotDB>
                {
                    new BotDB
                    {
                        Markup = null,
                        Token  = "someToken"
                    }
                },
                Money = 1
            };

            dbContext.Accounts.Add(account);
            dbContext.SaveChanges();

            //Act
            BotStartMessage result = botsAirstripService.StartBot(account.Bots.First().Id, account.Id);

            //Assert
            Assert.IsFalse(result.Success);
            Assert.IsNotNull(result.FailureReason);
            Assert.AreEqual(BotStartFailureReason.NoMarkupData, result.FailureReason);
        }
        public void StartBot_NormalData_SuccessStart()
        {
            //Arrange
            Account account = new Account
            {
                Bots = new List <BotDB>
                {
                    new BotDB
                    {
                        Markup = "someMarkup",
                        Token  = "someData"
                    }
                },
                Money = 1
            };

            dbContext.Accounts.Add(account);
            dbContext.SaveChanges();

            //Act
            BotStartMessage result = botsAirstripService.StartBot(account.Bots.First().Id, account.Id);

            //Assert
            Assert.IsTrue(result.Success);
            Assert.IsNull(result.FailureReason);
            Assert.IsNull(result.ForestException);
        }
        public void StartBot_AttemptToRunBotThatIsAlreadyRunning_ThisBotIsAlreadyRunning()
        {
            //Arrange
            Account account = new Account
            {
                Bots = new List <BotDB>
                {
                    new BotDB
                    {
                        Markup = "someMarkup",
                        Token  = "someToken"
                    }
                },
                Money = 1
            };

            dbContext.Accounts.Add(account);
            dbContext.SaveChanges();
            RouteRecord routeRecord = new RouteRecord
            {
                BotId = account.Bots.First().Id
            };

            dbContext.RouteRecords.Add(routeRecord);
            dbContext.SaveChanges();

            //Act
            BotStartMessage result = botsAirstripService.StartBot(account.Bots.First().Id, account.Id);

            //Assert
            Assert.IsFalse(result.Success);
            Assert.IsNotNull(result.FailureReason);
            Assert.AreEqual(BotStartFailureReason.ThisBotIsAlreadyRunning, result.FailureReason);
        }
        public void StartBot_BotLaunchWithoutMoney_NotEnoughFundsInTheAccountOfTheBotOwner()
        {
            //Arrange
            Account account = new Account
            {
                Money = 0,
                Bots  = new List <BotDB>
                {
                    new BotDB
                    {
                        Markup = "someMarkup",
                        Token  = "someToken"
                    }
                }
            };

            dbContext.Accounts.Add(account);
            dbContext.SaveChanges();


            //Act
            BotStartMessage result = botsAirstripService.StartBot(account.Bots.First().Id, account.Id);

            //Assert
            Assert.IsFalse(result.Success);
            Assert.IsNotNull(result.FailureReason);
            Assert.AreEqual(BotStartFailureReason.NotEnoughFundsInTheAccountOfTheBotOwner, result.FailureReason);
        }
        public void StartBot_StartBotWithWrongAccountId_NoAccessToThisBot()
        {
            //Arrange
            Account account = new Account
            {
                Bots = new List <BotDB>
                {
                    new BotDB
                    {
                        Markup = "someMarkup",
                        Token  = "someToken"
                    }
                },
                Money = 1
            };

            dbContext.Accounts.Add(account);
            dbContext.SaveChanges();

            //Act
            BotStartMessage result = botsAirstripService.StartBot(account.Bots.First().Id, int.MaxValue);

            //Assert
            Assert.IsFalse(result.Success);
            Assert.IsNotNull(result.FailureReason);
            Assert.AreEqual(BotStartFailureReason.NoAccessToThisBot, result.FailureReason);
        }