public void Test() { Assert.Empty(game.AllPlayers()); SmsResponseMessage response = new SmsResponseMessage(); //successful join response = game.ProcessUserSmsMessage("1", $"join {session.Id}"); Assert.True(response.Success); Assert.True(response.HasMessage); Assert.StartsWith("you have joined the game", response.Body); Assert.Single(game.AllPlayers()); //failed join, already playing response = game.ProcessUserSmsMessage("1", $"join {session.Id}"); Assert.False(response.Success); Assert.StartsWith("you are already registered for a game", response.Body); Assert.Single(game.AllPlayers()); //successful join response = game.ProcessUserSmsMessage("2", $"JOIN {session.Id}"); Assert.StartsWith("you have joined the game", response.Body); Assert.Equal(2, game.AllPlayers().Count()); //failed leave, user is not playing, no response response = game.ProcessUserSmsMessage("3", $"LEAVE"); Assert.False(response.HasMessage); Assert.Equal(2, game.AllPlayers().Count()); //successful leave response = game.ProcessUserSmsMessage("2", $"leave"); Assert.StartsWith("you have left the game", response.Body); Assert.Single(game.AllPlayers()); }
public SmsResponseMessage ProcessUserSmsMessage(string smsNumber, string body) { var response = new SmsResponseMessage(); var parsedResult = SmsParser.Parse(body); if (parsedResult.UserCommand == UserCommandType.Join) { var joinResult = Join(smsNumber, parsedResult.SessionToJoin); response.Success = joinResult.Item1; response.Body = joinResult.Item2; } else if (parsedResult.UserCommand == UserCommandType.Leave) { var leaveResult = Leave(smsNumber); response.Success = leaveResult.Item1; response.Body = leaveResult.Item2; } else if (parsedResult.UserCommand == UserCommandType.Response) { var session = GetSessionIdBySms(smsNumber); var sessionResponse = session.AddResponse(smsNumber, parsedResult.FormattedString); //var sessionResponse = session.Response //determine if we want to send a message back to the user } return(response); }