Esempio n. 1
0
        public void SetupCheckedBets_ShouldSetWinningBetFalse_WithValidParams(string inputString, FinalResultMarks finalResultMark)
        {
            this.ResetParams();
            this.mockedLine.Setup(x => x.Account.Balance).Returns(100m);

            var bet = new RegularBet(this.mockedMatch.Object, this.mockedLine.Object, finalResultMark.ToString(), this.amount, this.coefficient, this.mockedTipster.Object);

            var mockedResult = new Mock <IFinalResult>();

            mockedResult.Setup(r => r.GetMark()).Returns(inputString);

            this.mockedMatch.Setup(m => m.Results).Returns(new Dictionary <ResultType, IResult>()
            {
                [ResultType.Final] = mockedResult.Object
            });

            var collectionOfBets = new List <IBet>()
            {
                bet
            };

            var betController = new BetController();

            betController.SetupCheckedBets(collectionOfBets);

            Assert.IsFalse(bet.IsWin);
        }
Esempio n. 2
0
        public void Bet_NotEnoughMoney_ThrowsBadRequestException()
        {
            var user = new UserDto()
            {
                Id    = 1,
                Money = 1234
            };

            //Arrange
            Mock <IUserRepository>  mockUserRepository  = new Mock <IUserRepository>();
            Mock <ILoginRepository> mockLoginRepository = new Mock <ILoginRepository>();
            Mock <IBetRepository>   mockBetRepository   = new Mock <IBetRepository>();

            mockLoginRepository.Setup(l => l.HasUserAndToken(user.Id, It.IsAny <string>())).Returns(true);
            mockUserRepository.Setup(u => u.Get(user.Id)).Returns(user);

            var controller     = new BetController(mockUserRepository.Object, mockLoginRepository.Object, mockBetRepository.Object);
            var requestMessage = new HttpRequestMessage();

            requestMessage.Headers.Add("DiceGaming-Token", "token");
            controller.Request       = requestMessage;
            controller.Configuration = new HttpConfiguration();

            //Act / Assert
            var betRequest = new BetRequest()
            {
                Bet   = 10,
                Stake = user.Money + 1000
            };

            Assert.Throws <BadRequestException>(() => controller.Bet(user.Id, betRequest));
        }
Esempio n. 3
0
    }                                         //最高等級

    //---------------------------------------------------------------------------------------------------------------------------------------------

    void Awake()
    {
        if (_instance == null)
        {
            _instance = this;                    //設定單例模式
        }
    }
Esempio n. 4
0
        public void GetBets_InvalidData_ThrowsBadRequestException()
        {
            var user = new UserDto()
            {
                Id = 1
            };

            //Arrange
            Mock <IUserRepository>  mockUserRepository  = new Mock <IUserRepository>();
            Mock <ILoginRepository> mockLoginRepository = new Mock <ILoginRepository>();
            Mock <IBetRepository>   mockBetRepository   = new Mock <IBetRepository>();

            mockLoginRepository.Setup(l => l.HasUserAndToken(user.Id, It.IsAny <string>())).Returns(true);

            var controller     = new BetController(mockUserRepository.Object, mockLoginRepository.Object, mockBetRepository.Object);
            var requestMessage = new HttpRequestMessage();

            requestMessage.Headers.Add("DiceGaming-Token", "token");
            controller.Request       = requestMessage;
            controller.Configuration = new HttpConfiguration();

            //Act / Assert
            Assert.Throws <BadRequestException>(() => controller.GetBets(user.Id, "-1", "0", "win"));
            Assert.Throws <BadRequestException>(() => controller.GetBets(user.Id, "invalid", "0", "win"));
            Assert.Throws <BadRequestException>(() => controller.GetBets(user.Id, "0", "-1", "win"));
            Assert.Throws <BadRequestException>(() => controller.GetBets(user.Id, "0", "invalid", "win"));
            Assert.Throws <BadRequestException>(() => controller.GetBets(user.Id, "0", "0", "invalid"));
            Assert.Throws <BadRequestException>(() => controller.GetBets(user.Id, "0", "0", "win", "invalid"));
        }
Esempio n. 5
0
        public void SetupCheckedBets_ShouldSetBetCheckedProperty_WithValidParams()
        {
            this.ResetParams();
            this.mockedLine.Setup(x => x.Account.Balance).Returns(100m);
            this.mockedLine.Setup(x => x.LeftValueToBeBet()).Returns(this.lineValueToBeWin);

            var bet = new RegularBet(this.mockedMatch.Object, this.mockedLine.Object, mark.ToString(), this.amount, this.coefficient, this.mockedTipster.Object);

            var mockedResult = new Mock <IFinalResult>();

            mockedResult.Setup(r => r.GetMark()).Returns("_1");

            this.mockedMatch.Setup(m => m.Results).Returns(new Dictionary <ResultType, IResult>()
            {
                [ResultType.Final] = mockedResult.Object
            });

            var collectionOfBets = new List <IBet>()
            {
                bet
            };

            var betController = new BetController();

            betController.SetupCheckedBets(collectionOfBets);

            Assert.IsTrue(bet.IsChecked);
        }
Esempio n. 6
0
        public void SetupCheckedBets_ShouldSetCorrectLosingBetAccountBalance_WithValidParams(string inputString, FinalResultMarks finalResultMark)
        {
            this.ResetParams();
            var account = new BetfairAccount(this.accountName, this.accountBalance, this.accountCurrency, this.accountRake);
            var line    = new BetLine(account, this.lineName, this.lineStepAmount, this.decreasingStepValue);
            var bet     = new RegularBet(this.mockedMatch.Object, line, finalResultMark.ToString(), this.amount, this.coefficient, this.mockedTipster.Object);

            var mockedResult = new Mock <IFinalResult>();

            mockedResult.Reset();
            mockedResult.Setup(r => r.GetMark()).Returns(inputString);


            this.mockedMatch.Setup(m => m.Results).Returns(new Dictionary <ResultType, IResult>()
            {
                [ResultType.Final] = mockedResult.Object
            });

            var collectionOfBets = new List <IBet>()
            {
                bet
            };

            var betController = new BetController();

            betController.SetupCheckedBets(collectionOfBets);

            Assert.AreEqual(startAccountValue - this.amount, bet.Line.Account.Balance);
        }
Esempio n. 7
0
        public void DeleteBet_UserDoesNotHaveBet_ThrowsForbiddenException()
        {
            var user = new UserDto()
            {
                Id = 1
            };
            var bet = new BetDto()
            {
                Id           = 1337,
                UserId       = 1234,
                CreationDate = DateTime.Now
            };

            //Arrange
            Mock <IUserRepository>  mockUserRepository  = new Mock <IUserRepository>();
            Mock <ILoginRepository> mockLoginRepository = new Mock <ILoginRepository>();
            Mock <IBetRepository>   mockBetRepository   = new Mock <IBetRepository>();

            mockLoginRepository.Setup(l => l.HasUserAndToken(user.Id, It.IsAny <string>())).Returns(true);
            mockBetRepository.Setup(b => b.Get(bet.Id)).Returns(bet);

            var controller     = new BetController(mockUserRepository.Object, mockLoginRepository.Object, mockBetRepository.Object);
            var requestMessage = new HttpRequestMessage();

            requestMessage.Headers.Add("DiceGaming-Token", "token");
            controller.Request       = requestMessage;
            controller.Configuration = new HttpConfiguration();

            //Act / Assert
            Assert.Throws <ForbiddenException>(() => controller.DeleteBet(user.Id, bet.Id));
        }
Esempio n. 8
0
 public void Call()
 {
     Balance   -= BetController.GetHighestBet() - CurrentBid;
     CurrentBid = BetController.GetHighestBet();
     PrintMessageView.PrintNewLineMessage($"{Name} called");
     ContextsData.MessageLogContext.AddMessageLog($"{Name} called");
 }
 public void CantUpdateMissingBet()
 {
     Assert.Null(BetController.Put(new Bet()
     {
         Id = Guid.NewGuid().ToString()
     }));
 }
Esempio n. 10
0
        public void CanGetSpecificBet()
        {
            var mockEvent  = Common.CreateAndSaveMockEvent(EventController);
            var mockMarket = Common.CreateAndSaveMockMarket(mockEvent.Id, "Market Desc", 0.5m, MarketController);
            var mockBet    = Common.CreateAndSaveMockBet(mockMarket.Id, 100, BetController);

            Assert.Equal(BetController.Get(mockBet.Id).BetAmount, mockBet.BetAmount);
        }
Esempio n. 11
0
        public async Task Bet_EnoughMoney_CreatesBetAndReturnsBetInfoAndOKStatusCode()
        {
            var user = new UserDto()
            {
                Id    = 1,
                Money = 1234
            };

            int diceSumResult = 0;

            //Arrange
            Mock <IUserRepository>  mockUserRepository  = new Mock <IUserRepository>();
            Mock <ILoginRepository> mockLoginRepository = new Mock <ILoginRepository>();
            Mock <IBetRepository>   mockBetRepository   = new Mock <IBetRepository>();

            mockLoginRepository.Setup(l => l.HasUserAndToken(user.Id, It.IsAny <string>())).Returns(true);
            mockUserRepository.Setup(u => u.Get(user.Id)).Returns(user);
            mockBetRepository.Setup(b => b.Create(It.IsAny <BetDto>())).Returns <BetDto>(x =>
            {
                x.Id          = 1;               // set bet Id to 1
                diceSumResult = x.DiceSumResult; // save result of dice throw. Used in assertion of win amount
                return(x);
            });

            var controller     = new BetController(mockUserRepository.Object, mockLoginRepository.Object, mockBetRepository.Object);
            var requestMessage = new HttpRequestMessage();

            requestMessage.Headers.Add("DiceGaming-Token", "token");
            controller.Request       = requestMessage;
            controller.Configuration = new HttpConfiguration();

            //Act
            var betRequest = new BetRequest()
            {
                Bet   = 10,
                Stake = 200
            };
            var timeBeforeBet = DateTime.Now;
            var response      = await controller.Bet(user.Id, betRequest);

            var timeAfterBet = DateTime.Now;

            //Assert
            dynamic content = response.Content;
            var     win     = (decimal)content.Value.Win;

            mockUserRepository.Verify(u => u.UpdateMoney(user.Id, It.IsAny <decimal>()));
            Assert.IsTrue(content.Value.BetId == 1);
            Assert.IsTrue(content.Value.Bet == betRequest.Bet);
            Assert.IsTrue(content.Value.Stake == betRequest.Stake);
            Assert.IsTrue(betRequest.Bet == diceSumResult ? win > 0 : win == 0);
            var timestamp = (DateTime)content.Value.Timestamp;

            Assert.IsTrue(timeBeforeBet < timestamp);
            Assert.IsTrue(timestamp < timeAfterBet);

            Assert.IsTrue(response.StatusCode == HttpStatusCode.Created);
        }
Esempio n. 12
0
        public with_a_BetController()
        {
            player_authenticator = MockRepository.GenerateStub <IPlayerAuthenticator>();
            command_bus          = MockRepository.GenerateStub <ICommandBus>();
            query_service        = MockRepository.GenerateStub <IQueryService>();
            bet_command_mapper   = MockRepository.GenerateStub <ICommandMapper <BetCommand, BetView> >();

            SUT = new BetController(player_authenticator, command_bus, query_service, bet_command_mapper);
        }
Esempio n. 13
0
        public void CanDeleteBet()
        {
            var mockEvent  = Common.CreateAndSaveMockEvent(EventController);
            var mockMarket = Common.CreateAndSaveMockMarket(mockEvent.Id, "Market Desc", 0.5m, MarketController);
            var mockBet    = Common.CreateAndSaveMockBet(mockMarket.Id, 100, BetController);

            BetController.Delete(mockBet.Id);
            Assert.Empty(BetController.Get());
        }
Esempio n. 14
0
        public void Setup()
        {
            // Create mocks.
            userContext = Substitute.For <IUserContext>();

            // Create the controller.
            uut = new BetController(Factory, userContext);
            uut.ControllerContext = new ControllerContext();
        }
Esempio n. 15
0
        public static Bet CreateAndSaveMockBet(string marketId, decimal betAmount, BetController betController)
        {
            var newBet = new Bet()
            {
                MarketId  = marketId,
                BetAmount = betAmount
            };

            return(betController.Post(newBet));
        }
Esempio n. 16
0
 public void Raise(uint raiseValue)
 {
     if (raiseValue > PlayerController.GetAllBalances().Min())
     {
         raiseValue = PlayerController.GetAllBalances().Min();
     }
     Balance   -= BetController.GetHighestBet() + raiseValue - CurrentBid;
     CurrentBid = BetController.GetHighestBet() + raiseValue;
     PrintMessageView.PrintNewLineMessage($"{Name} raised {raiseValue}");
     ContextsData.MessageLogContext.AddMessageLog($"{Name} raised {raiseValue}");
 }
Esempio n. 17
0
        public void CanGetAllBets()
        {
            var mockEvent  = Common.CreateAndSaveMockEvent(EventController);
            var mockMarket = Common.CreateAndSaveMockMarket(mockEvent.Id, "Market Desc", 0.5m, MarketController);
            var mockBet    = Common.CreateAndSaveMockBet(mockMarket.Id, 100, BetController);
            var mockBet2   = Common.CreateAndSaveMockBet(mockMarket.Id, 100, BetController);
            var mockBet3   = Common.CreateAndSaveMockBet(mockMarket.Id, 100, BetController);


            Assert.Equal(3, BetController.Get().Count);
        }
Esempio n. 18
0
        public void CanPutExistingBet()
        {
            var mockEvent  = Common.CreateAndSaveMockEvent(EventController);
            var mockMarket = Common.CreateAndSaveMockMarket(mockEvent.Id, "Market Desc", 0.5m, MarketController);
            var mockBet    = Common.CreateAndSaveMockBet(mockMarket.Id, 100, BetController);

            mockBet.BetAmount = 234;
            BetController.Put(mockBet);

            Assert.Equal(234, BetController.Get(mockBet.Id).BetAmount);
        }
Esempio n. 19
0
        public static void PrintGame()
        {
            Console.Clear();

            PlayerInfoView.PrintAllNamesAndBalances();
            CardView.PrintBoard();
            CardView.PrintHand();
            Console.WriteLine(PlayerData.User.ToString());
            Console.WriteLine($"Current pool: {BetController.GetSumOfBets()}");
            Console.WriteLine("Message log:");
        }
Esempio n. 20
0
 public override void DoAction()
 {
     if (BetController.PlayerCanCall(this))
     {
         base.Call();
     }
     else
     {
         PrintMessageView.PrintNewLineMessage($"{Name} passed");
         ContextsData.MessageLogContext.AddMessageLog($"{Name} passed");
     }
 }
Esempio n. 21
0
        public MarketTests()
        {
            var betRepo       = new BetRepository();
            var marketRepo    = new MarketRepository();
            var eventRepo     = new EventRepository();
            var betService    = new BetService(betRepo, eventRepo, marketRepo);
            var marketService = new MarketService(marketRepo, betService);
            var eventService  = new EventService(eventRepo, marketService);

            MarketController = new MarketController(marketService);
            EventController  = new EventController(eventService);
            BetController    = new BetController(betService);
        }
        public void BetController_GetAllTotalAmountBets_Success_ZeroValue()
        {
            //arrange
            var expectedValue = 0;
            var controller    = new BetController(_mockBetBL.Object);

            _mockBetBL.Setup(x => x.GetTotalAmount()).Returns(expectedValue);
            //act
            var result = controller.GetAllTotalAmountBets();

            //assert
            Assert.AreEqual(expectedValue, result);
        }
Esempio n. 23
0
        public static string[] AskUser()
        {
            if (BetController.GetHighestBet() > PlayerData.User.CurrentBid)
            {
                Console.Write("Call/Raise/Fold? ");
            }
            else
            {
                Console.Write("Pass/Raise/Fold? ");
            }

            string[] command = Console.ReadLine().Trim().Split(' ').Select(x => x.ToLower()).ToArray();
            return(command);
        }
Esempio n. 24
0
        public BetView(BetController BetController)
        {
            this.BetController = BetController;
            InitializeComponent();

            int Balance = BetController.GameController.Game.Player.Balance;

            BalanceInput.Text = Balance > 0 ? Balance.ToString() :
                                BetController.GameController.Game.Player.Owing.ToString();

            BetInput.KeyPress  += new KeyPressEventHandler(BetInputEnterKey);
            DoneButton.Click   += new EventHandler(GetBetInput);
            CancelButton.Click += new EventHandler(CancelBetEvent);
        }
Esempio n. 25
0
        public async Task GetBet_UserHasBet_ReturnsBetInfoAndOKStatusCode()
        {
            var user = new UserDto()
            {
                Id = 1
            };
            var bet = new BetDto()
            {
                Id            = 1337,
                UserId        = user.Id,
                DiceSumBet    = 10,
                DiceSumResult = 8,
                Win           = 0,
                Stake         = 20,
                CreationDate  = DateTime.Now
            };

            //Arrange
            Mock <IUserRepository>  mockUserRepository  = new Mock <IUserRepository>();
            Mock <ILoginRepository> mockLoginRepository = new Mock <ILoginRepository>();
            Mock <IBetRepository>   mockBetRepository   = new Mock <IBetRepository>();

            mockLoginRepository.Setup(l => l.HasUserAndToken(user.Id, It.IsAny <string>())).Returns(true);
            mockBetRepository.Setup(b => b.Get(bet.Id)).Returns(bet);

            var controller     = new BetController(mockUserRepository.Object, mockLoginRepository.Object, mockBetRepository.Object);
            var requestMessage = new HttpRequestMessage();

            requestMessage.Headers.Add("DiceGaming-Token", "token");
            controller.Request       = requestMessage;
            controller.Configuration = new HttpConfiguration();

            //Act
            var response = await controller.GetBet(user.Id, bet.Id);

            //Assert
            dynamic content = response.Content;

            Assert.IsTrue(content.Value.CreationDate == bet.CreationDate);
            Assert.IsTrue(content.Value.Bet == bet.DiceSumBet);
            Assert.IsTrue(content.Value.Stake == bet.Stake);
            Assert.IsTrue(content.Value.Win == bet.Win);
            Assert.IsTrue(content.Value.ActualRoll == bet.DiceSumResult);

            Assert.IsTrue(response.StatusCode == HttpStatusCode.OK);
        }
Esempio n. 26
0
        public override void DoAction()
        {
            string[] command = CommandView.AskUser().ToArray();
            switch (command[0])
            {
            case "raise":
                try
                {
                    uint.Parse(command[1]);
                }
                catch (Exception)
                {
                    PrintMessageView.PrintNewLineMessage("Invalid data type!");
                    this.DoAction();
                    break;
                }
                if (uint.Parse(command[1]) > this.Balance)
                {
                    PrintMessageView.PrintNewLineMessage("Invalid amount! Amount must be lower than user's balance!");
                    this.DoAction();
                    break;
                }
                else
                {
                    base.Raise(uint.Parse(command[1]));
                }
                break;

            case "call":
                if (BetController.PlayerCanCall(this))
                {
                    base.Call();
                }
                break;

            case "fold": base.Fold(); break;

            case "stop":
            case "end": Engine.Playing = false; break;

            default: PrintMessageView.PrintNewLineMessage($"{Name} passed");
                ContextsData.MessageLogContext.AddMessageLog($"{Name} passed");
                break;
            }
        }
Esempio n. 27
0
        public void SetupCheckedBets_ShouldSetBetCheckedPropertyFalse_WithMatchWithoutResults()
        {
            this.ResetParams();
            this.mockedLine.Setup(x => x.Account.Balance).Returns(100m);
            this.mockedLine.Setup(x => x.LeftValueToBeBet()).Returns(this.lineValueToBeWin);

            var firstBet = new RegularBet(this.mockedMatch.Object, this.mockedLine.Object, mark.ToString(), this.amount, this.coefficient, this.mockedTipster.Object);

            var collectionOfBets = new List <IBet>()
            {
                firstBet
            };

            var betController = new BetController();

            betController.SetupCheckedBets(collectionOfBets);

            Assert.IsFalse(firstBet.IsChecked);
        }
        public void OneTimeSetUp()
        {
            _data = new Dictionary <string, object> {
                { "Authorization", _token }
            };
            _betController = new BetController {
                Configuration = new HttpConfiguration()
            };
            _context      = new OwinContext(_data);
            _authHeader   = new AuthenticationHeaderValue(_token);
            _userManager  = SingletonManager.Instance.SetUserManager(Substitute.For <IUserManager>());
            _betManager   = SingletonManager.Instance.SetBetManager(Substitute.For <IBetManager>());
            _matchManager = SingletonManager.Instance.SetMatchManager(Substitute.For <IMatchManager>());
            SingletonManager.Instance.SetTokenManager(new TokenManager());

            for (var i = 0; i < 3; i++)
            {
                _bets.Add(new Bet());
            }
        }
Esempio n. 29
0
        public void AllMethodsWithTokenAuth_InvalidToken_ThrowsForbiddenException()
        {
            //Arrange
            Mock <IUserRepository>  mockUserRepository  = new Mock <IUserRepository>();
            Mock <ILoginRepository> mockLoginRepository = new Mock <ILoginRepository>();
            Mock <IBetRepository>   mockBetRepository   = new Mock <IBetRepository>();

            mockLoginRepository.Setup(l => l.HasUserAndToken(1, "token")).Returns(false); // simulate invalid token

            var controller     = new BetController(mockUserRepository.Object, mockLoginRepository.Object, mockBetRepository.Object);
            var requestMessage = new HttpRequestMessage();

            requestMessage.Headers.Add("DiceGaming-Token", "token");
            controller.Request       = requestMessage;
            controller.Configuration = new HttpConfiguration();

            //Act / Assert
            Assert.Throws <ForbiddenException>(() => controller.Bet(1, new BetRequest()));
            Assert.Throws <ForbiddenException>(() => controller.GetBets(1, string.Empty, string.Empty, string.Empty));
            Assert.Throws <ForbiddenException>(() => controller.GetBet(1, 1));
            Assert.Throws <ForbiddenException>(() => controller.DeleteBet(1, 1));
        }
Esempio n. 30
0
        public async Task DeleteBet_UserHasBetAndOneMinuteHaveNotPassed_DeletesBetAndReturnsNoContentStatusCode()
        {
            var user = new UserDto()
            {
                Id = 1
            };
            var bet = new BetDto()
            {
                Id           = 1337,
                UserId       = user.Id,
                CreationDate = DateTime.Now
            };

            //Arrange
            Mock <IUserRepository>  mockUserRepository  = new Mock <IUserRepository>();
            Mock <ILoginRepository> mockLoginRepository = new Mock <ILoginRepository>();
            Mock <IBetRepository>   mockBetRepository   = new Mock <IBetRepository>();

            mockLoginRepository.Setup(l => l.HasUserAndToken(user.Id, It.IsAny <string>())).Returns(true);
            mockBetRepository.Setup(b => b.Get(bet.Id)).Returns(bet);

            var controller     = new BetController(mockUserRepository.Object, mockLoginRepository.Object, mockBetRepository.Object);
            var requestMessage = new HttpRequestMessage();

            requestMessage.Headers.Add("DiceGaming-Token", "token");
            controller.Request       = requestMessage;
            controller.Configuration = new HttpConfiguration();

            //Act
            var response = await controller.DeleteBet(user.Id, bet.Id);

            //Assert
            mockBetRepository.Verify(b => b.Delete(bet.Id));

            Assert.IsTrue(response.StatusCode == HttpStatusCode.NoContent);
        }