public async Task deny_if_betting_not_available() { var commands = new BettingCommands(() => null); CommandResult result = await commands.Bet(new CommandContext(MockMessage(MockUser("me")), ImmutableList.Create("!bet 1 blue"), ArgsParser)); Assert.That(result.Response, Is.EqualTo("betting not available right now")); }
public async Task only_allow_from_chat() { User user = MockUser("me"); Mock <IBettingPeriod <User> > bettingPeriodMock = new(); var commands = new BettingCommands(() => bettingPeriodMock.Object); CommandResult result = await commands.Bet(new CommandContext( MockMessage(user, source: MessageSource.Whisper), ImmutableList.Create("100", "blue"), ArgsParser)); Assert.That(result.Response, Is.EqualTo("you may only bet through chat")); }
public async Task deny_if_betting_closed() { Mock <IBettingPeriod <User> > bettingPeriodMock = new(); bettingPeriodMock.Setup(b => b.IsBettingOpen).Returns(false); var commands = new BettingCommands(() => bettingPeriodMock.Object); CommandResult result = await commands.Bet(new CommandContext(MockMessage(MockUser("me")), ImmutableList.Create("!bet 1 blue"), ArgsParser)); Assert.That(result.Response, Is.EqualTo("betting is already closed")); }
public Matchmode(ILoggerFactory loggerFactory, BaseConfig baseConfig, MatchmodeConfig matchmodeConfig) { _matchmodeConfig = matchmodeConfig; _loggerFactory = loggerFactory; _logger = loggerFactory.CreateLogger<Matchmode>(); _stopToken = new StopToken(); Setups.Databases repos = Setups.SetUpRepositories(_logger, baseConfig); _pokeyenBank = repos.PokeyenBank; _userRepo = repos.UserRepo; (_broadcastServer, _overlayConnection) = Setups.SetUpOverlayServer(loggerFactory); _modeBase = new ModeBase(loggerFactory, repos, baseConfig, _stopToken, _overlayConnection); var bettingCommands = new BettingCommands(() => _bettingPeriod); foreach (Command command in bettingCommands.Commands) _modeBase.InstallAdditionalCommand(command); }
public async Task propagate_failure() { User user = MockUser("me"); Mock <IBettingShop <User> > bettingShopMock = new(); Mock <IBettingPeriod <User> > bettingPeriodMock = new(); bettingPeriodMock.Setup(b => b.IsBettingOpen).Returns(true); bettingPeriodMock.Setup(b => b.BettingShop).Returns(bettingShopMock.Object); bettingShopMock.Setup(b => b.PlaceBet(user, Side.Blue, 100)) .Returns(Task.FromResult((PlaceBetFailure?)new PlaceBetFailure.InsufficientFunds(50))); var commands = new BettingCommands(() => bettingPeriodMock.Object); CommandResult result = await commands.Bet(new CommandContext(MockMessage(user), ImmutableList.Create("100", "blue"), ArgsParser)); Assert.That(result.Response, Is.EqualTo("insufficient funds, you only have 50 pokeyen available")); }
public async Task announce_in_chat() { User user = MockUser("me"); Mock <IBettingPeriod <User> > bettingPeriodMock = new(); Mock <IBettingShop <User> > bettingShopMock = new(); bettingPeriodMock.Setup(b => b.IsBettingOpen).Returns(true); bettingPeriodMock.Setup(b => b.BettingShop).Returns(bettingShopMock.Object); bettingShopMock.Setup(b => b.PlaceBet(user, Side.Blue, 100)) .Returns(Task.FromResult((PlaceBetFailure?)null)); var commands = new BettingCommands(() => bettingPeriodMock.Object); CommandResult result = await commands.Bet(new CommandContext(MockMessage(user), ImmutableList.Create("100", "blue"), ArgsParser)); Assert.That(result.Response, Is.EqualTo("placed a P100 bet on Blue.")); }