public async void DoesProfileIsFormattedCorrectly() { var usersConnector = Helpers.GetDatabaseConnector <UsersConnector>(); usersConnector.Setup(x => x.GetUser(0)).ReturnsAsync(new User { Credits = 100, Experience = 250, Id = 0, LastDailyReward = null, LastHourlyReward = null, Level = 4 }); var logic = GetShowProfileCommandLogic(usersConnector.Object); var result = await logic.ShowProfile(0, "S@mpleUser"); Assert.Equal(Helpers.InfoColor, result.Color); Assert.Equal("User profile - S@mpleUser", result.Title); Assert.Equal("**Credits: ** 100\n" + "**Level: ** 4\n" + "**Current exp: ** 250\n" + "**Job title: ** Super Market Assistant\n" + "**Job salary: ** 45\n" + "**Job cooldown: ** 6\n" + "**Minimum bet: ** 60", result.Description); }
public async void CorrectValuesInTheOutput() { var usersConnector = Helpers.GetDatabaseConnector <UsersConnector>(); usersConnector.Setup(x => x.GetUser(0)).ReturnsAsync(new User() { Id = 0, LastDailyReward = DateTime.Now, LastHourlyReward = DateTime.Now, LastVoteReward = DateTime.Now, LastWorkReward = DateTime.Now }); var logic = GetCooldownCommandLogic(usersConnector.Object); var result = await logic.GetCooldowns(0); var times = result.Description.Split('\n').SkipLast(1) //converts output result to TimeSpan[] .Select(x => string.Join(':', x.Split(':').Skip(1))) .Select(x => TimeSpan.Parse(x)) .ToArray(); Assert.Equal(Helpers.InfoColor, result.Color); Assert.Equal(4, times.Length); Assert.Equal(TimeSpan.FromHours(1).Subtract(TimeSpan.FromSeconds(1)), times[0]); Assert.Equal(TimeSpan.FromDays(1).Subtract(TimeSpan.FromSeconds(1)), times[1]); Assert.Equal(TimeSpan.FromHours(6).Subtract(TimeSpan.FromSeconds(1)), times[2]); Assert.Equal(TimeSpan.FromHours(12).Subtract(TimeSpan.FromSeconds(1)), times[3]); }
public async void GiveRewardOnLaterUse() { var amountOfCredits = 0; var usersConnector = Helpers.GetDatabaseConnector <UsersConnector>(); usersConnector.Setup(x => x.GetUser(0)) .ReturnsAsync(new User { Id = 0, Credits = 250, Experience = 1200, LastDailyReward = null, LastHourlyReward = null, LastWorkReward = new DateTime(2020, 1, 1), Level = 6 }); usersConnector.Setup(x => x.GiveCredits(0, It.IsAny <int>())) .Callback((ulong user, int credits) => { amountOfCredits += credits; }); usersConnector.Setup(x => x.UpdateUser(It.IsAny <User>())); var logic = GetWorkRewardCommandLogic(usersConnector.Object); var result = await logic.GetWorkReward(0); Assert.Equal(Helpers.SuccessColor, result.Color); Assert.Equal("WorkReward", result.Title); Assert.Matches(@"You've gained ([^\\s]+) credits!", result.Description); }
public async void InformAboutCallingCommandTooEarly() { var usersConnector = Helpers.GetDatabaseConnector <UsersConnector>(); usersConnector.Setup(x => x.GetUser(0)) .ReturnsAsync(new User { Id = 0, Credits = 250, Experience = 1200, LastDailyReward = null, LastHourlyReward = null, LastWorkReward = DateTime.Now, Level = 6 }); var logic = GetWorkRewardCommandLogic(usersConnector.Object); var result = await logic.GetWorkReward(0); Assert.Equal(Helpers.WarningColor, result.Color); Assert.Equal("WorkReward", result.Title); Assert.Matches( "You've tried to execute command '!work' before it was ready! Command will be ready in ([^\\s]+)", result.Description); }
public async void DoesReturnInfoOnIncorrectArguments(string argument) { var coinDropConnector = Helpers.GetDatabaseConnector <CoindropConnector>(); var usersConnector = Helpers.GetDatabaseConnector <UsersConnector>(); var logic = GetCollectDropCommandLogic(coinDropConnector.Object, usersConnector.Object); var result = await logic.Collect(argument, 0, 0, "test-user"); Assert.Equal(Helpers.WarningColor, result.Color); Assert.Contains("Invalid arguments!", result.Description); Assert.Equal("Collect", result.Title); }
public async void DoesReturnInfoOnIncorrectArguments(string arguments) { //Arrange var usersConnector = Helpers.GetDatabaseConnector <UsersConnector>(); var gameHistoryConnector = Helpers.GetDatabaseConnector <GameHistoryConnector>(); var logic = GetCoinflipCommandLogic(usersConnector.Object, gameHistoryConnector.Object); //Assert var result = await logic.PlayCoinflip(arguments, 0); Assert.Contains("Invalid arguments!", result.Description); Assert.Equal(Helpers.WarningColor, result.Color); }
public async void IsCorrectAmountDisplayed(int amount) { var usersConnector = Helpers.GetDatabaseConnector <UsersConnector>(); usersConnector.Setup(x => x.GetCredits(0)).ReturnsAsync(amount); var logic = GetCreditsCommandLogic(usersConnector.Object); var result = await logic.GetCurrentCreditStatus(0); Assert.Contains(result.Fields, x => x.Name == "Credits balance"); Assert.Equal("Credits balance", result.Fields[0].Name); Assert.Equal(amount.ToString(), result.Fields[0].Value); }
public async void DoesReturnCorrectAnswerOnLackOfCredits(string arguments, int amount) { var usersConnector = Helpers.GetDatabaseConnector <UsersConnector>(); usersConnector.Setup(x => x.TakeCredits(0, amount)).ReturnsAsync(false); var gameHistoryConnector = Helpers.GetDatabaseConnector <GameHistoryConnector>(); var logic = GetCoinflipCommandLogic(usersConnector.Object, gameHistoryConnector.Object); var result = await logic.PlayCoinflip(arguments, 0); Assert.Contains("This is a casino, not a bank!\nYou do not have enough credits!", result.Description); Assert.Equal(Helpers.WarningColor, result.Color); }
public async void DoesInformationWhenDropIsCollectedWork() { var coinDropConnector = Helpers.GetDatabaseConnector <CoindropConnector>(); coinDropConnector.Setup(x => x.CollectCoinDrop(0, 4453)).ReturnsAsync(0); var usersConnector = Helpers.GetDatabaseConnector <UsersConnector>(); var logic = GetCollectDropCommandLogic(coinDropConnector.Object, usersConnector.Object); var result = await logic.Collect("4453", 0, 0, "test-user"); Assert.Equal(Helpers.InfoColor, result.Color); Assert.Contains("Sadly the CoinDrop has already been collected!", result.Description); Assert.Equal("CoinDropAlreadyCollected", result.Title); }
public async void DoesReturnErrorOnInvalidBetSize(string arguments) { //Arrange var usersConnector = Helpers.GetDatabaseConnector <UsersConnector>(); var gameHistoryConnector = Helpers.GetDatabaseConnector <GameHistoryConnector>(); var logic = GetCoinflipCommandLogic(usersConnector.Object, gameHistoryConnector.Object); //Assert var result = await logic.PlayCoinflip(arguments, 0); Assert.Contains("Error Occured!!!", result.Title); Assert.Contains("Check your arguments (whether bet size does not equal 0 for example)!", result.Description); Assert.Equal(Helpers.WarningColor, result.Color); }
public async void GetInfoWhenTopGgFunctionalityIsTurnedOff() { var usersConnector = Helpers.GetDatabaseConnector <UsersConnector>(); var config = Helpers.GetConfig(); config.BotSettings.TopGgToken = null; var logic = GetVoteRewardCommandLogic(GetHttpClient(false), usersConnector.Object, config); var result = await logic.Vote(0); Assert.Equal("TopGGVote", result.Title); Assert.Equal(Helpers.InfoColor, result.Color); Assert.Equal("Top GG Token functionality is disabled on this server :disappointed:. Contact bots admin to turn it on :slight_smile:.", result.Description); }
public async void DoesCollectingWork() { var coinDropConnector = Helpers.GetDatabaseConnector <CoindropConnector>(); coinDropConnector.Setup(x => x.CollectCoinDrop(0, 4453)).ReturnsAsync(100); var usersConnector = Helpers.GetDatabaseConnector <UsersConnector>(); usersConnector.Setup(x => x.GiveCredits(0, It.IsAny <int>())); var logic = GetCollectDropCommandLogic(coinDropConnector.Object, usersConnector.Object); var result = await logic.Collect("4453", 0, 0, "test-user"); Assert.Equal(Helpers.SuccessColor, result.Color); Assert.Contains("Congratulations, the CoinDrop has been collected!\n**Reward**", result.Description); Assert.Equal("CoinDropCollected", result.Title); Assert.Contains("Collected by", result.Footer); }
public async void GetInfoWhenBotHasNoTogGgToken() { var httpMessageHandler = GetHttpClient(false, HttpStatusCode.Unauthorized); var usersConnector = Helpers.GetDatabaseConnector <UsersConnector>(); usersConnector.Setup(x => x.GetUser(0)).ReturnsAsync(new User() { Id = 0, LastVoteReward = DateTime.Now.Subtract(TimeSpan.FromDays(5)) }); var logic = GetVoteRewardCommandLogic(httpMessageHandler, usersConnector.Object); var result = await logic.Vote(0); Assert.Equal("Invalid Top GG Token Provided by the bot administrator! Please contact him!", result.Description); Assert.Equal(Helpers.WarningColor, result.Color); }
public async void GivesCreditsOnFirstVote() { var usersConnector = Helpers.GetDatabaseConnector <UsersConnector>(); usersConnector.Setup(x => x.GetUser(0)).ReturnsAsync(new User() { Id = 0, LastVoteReward = null }); usersConnector.Setup(x => x.GiveCredits(0, It.IsAny <int>())); usersConnector.Setup(x => x.UpdateUser(It.IsAny <User>())); var logic = GetVoteRewardCommandLogic(GetHttpClient(true), usersConnector.Object); var result = await logic.Vote(0); Assert.Matches("You've gained ([^\\s]+) credits!", result.Description); Assert.Equal(Helpers.SuccessColor, result.Color); Assert.Equal("TopGGVote", result.Title); }
public async void GiveRewardOnLaterUse() { var usersConnector = Helpers.GetDatabaseConnector <UsersConnector>(); usersConnector.Setup(x => x.GetUser(0)).ReturnsAsync(new User { Id = 0, LastDailyReward = new DateTime(2020, 1, 1) }); usersConnector.Setup(x => x.UpdateUser(It.IsAny <User>())); usersConnector.Setup(x => x.GiveCredits(0, It.IsAny <int>())); var logic = GetHourlyRewardCommandLogic(usersConnector.Object); var result = await logic.GetHourlyReward(0); Assert.Equal(Helpers.SuccessColor, result.Color); Assert.Equal("HourlyReward", result.Title); Assert.Matches(@"You've gained ([^\s]+) credits!", result.Description); }
public async void GetInfoWhenCommandCalledTooEarly() { var httpMessageHandler = GetHttpClient(true); var usersConnector = Helpers.GetDatabaseConnector <UsersConnector>(); usersConnector.Setup(x => x.GetUser(0)).ReturnsAsync(new User() { Id = 0, LastVoteReward = DateTime.Now }); var logic = GetVoteRewardCommandLogic(httpMessageHandler, usersConnector.Object); var result = await logic.Vote(0); Assert.Equal(Helpers.WarningColor, result.Color); Assert.Equal("TopGGVote", result.Title); Assert.Matches( "You've tried to execute command '!vote' before it was ready! Command will be ready in ([^\\s]+)", result.Description); }
public async void GetInfoThatUserHasNotVoted() { var httpMessageHandler = GetHttpClient(false); var usersConnector = Helpers.GetDatabaseConnector <UsersConnector>(); usersConnector.Setup(x => x.GetUser(0)).ReturnsAsync(new User() { Id = 0, LastVoteReward = DateTime.Now.Subtract(TimeSpan.FromDays(5)) }); var logic = GetVoteRewardCommandLogic(httpMessageHandler, usersConnector.Object); var result = await logic.Vote(0); Assert.Equal( "To gain a vote reward, you have to use this link\n[Vote](https://top.gg/bot/688160933574475800/vote)", result.Description); Assert.Equal(Helpers.InfoColor, result.Color); Assert.Equal("You haven't voted yet!", result.Title); }
public async void DoGetGameHistoryWorks() { var gameHistoryConnector = Helpers.GetDatabaseConnector <GameHistoryConnector>(); gameHistoryConnector.Setup(x => x.GetGameHistories(0)).ReturnsAsync(new[] { new GameHistory { CoinsDifference = 100, GameName = "Sample Game", HasWon = true }, new GameHistory { CoinsDifference = -200, GameName = "Sample Another Game", HasWon = false } }); var logic = GetGameHistoryCommandLogic(gameHistoryConnector.Object); var result = await logic.GetGameHistory(0); Assert.Equal(Helpers.InfoColor, result.Color); Assert.Equal("GameHistory", result.Title); Assert.Equal("Sample Game | Won | 100\nSample Another Game | Lost | -200", result.Description); }
public async void CorrectFormattingOfTheOutput() { var date = new DateTime(2020, 1, 1, 16, 0, 0); var usersConnector = Helpers.GetDatabaseConnector <UsersConnector>(); usersConnector.Setup(x => x.GetUser(0)).ReturnsAsync(new User() { Id = 0, LastDailyReward = DateTime.Now, LastHourlyReward = DateTime.Now, LastVoteReward = DateTime.Now, LastWorkReward = DateTime.Now }); var logic = GetCooldownCommandLogic(usersConnector.Object); var result = await logic.GetCooldowns(0); Assert.Equal(Helpers.InfoColor, result.Color); Assert.Matches("Hourly : ([^\\s]+)\nDaily : ([^\\s]+)\nWork : ([^\\s]+)\nVote : ([^\\s]+)", result.Description); }
public async void CorrectlyFormatOutput() { var usersConnector = Helpers.GetDatabaseConnector <UsersConnector>(); usersConnector.Setup(x => x.CommandGetGlobalTop()).ReturnsAsync(new List <User> { new User { Credits = 1200, Experience = 100, Id = 1, LastDailyReward = null, LastHourlyReward = null, Level = 3 }, new User { Credits = 100, Experience = 0, Id = 0, LastDailyReward = null, LastHourlyReward = null, Level = 1 } }); var logic = GetGlobalTopCommandLogic(usersConnector.Object); #pragma warning disable 1998 var result = await logic.GetGlobalTop(async id => #pragma warning restore 1998 { return(id switch { 0 => "SampleUser1", 1 => "SampleUser2", _ => "SampleUser3" }); });
public async void DoesPlayingWorks(string arguments, int amount) { var usersConnector = Helpers.GetDatabaseConnector <UsersConnector>(); usersConnector.Setup(x => x.TakeCredits(0, amount)).ReturnsAsync(true); usersConnector.Setup(x => x.GiveCredits(0, amount * 2)); usersConnector.Setup(x => x.GetCredits(0)).ReturnsAsync(1000); usersConnector.Setup(x => x.GetUser(0)).ReturnsAsync(new User { Level = 10 }); usersConnector.Setup(x => x.CommandGiveUserExp(0, It.IsAny <int>())) .ReturnsAsync(new AddExpResult(false, 100000, 0, 0)); var gameHistoryConnector = Helpers.GetDatabaseConnector <GameHistoryConnector>(); gameHistoryConnector.Setup(x => x.AddGameHistory(It.IsAny <GameHistory>())) .ReturnsAsync(true); var logic = GetCoinflipCommandLogic(usersConnector.Object, gameHistoryConnector.Object); var result = await logic.PlayCoinflip(arguments, 0); Assert.Matches("^\nYou've (won|lost) ([^\\s]+) credits!$", result.Description); Assert.Equal("CoinFlip", result.Title); }