public virtual async Task <SkillUpdateResult> PushSkillExpenditures(int gameId, string playerId, SkillExpenditureRequest skillExpenditureRequest, string baseApiUrl) { using (var client = new HttpClient()) { var stringifiedObject = _serialization.SerializeToHttpStringContent(skillExpenditureRequest); var uri = new Uri(baseApiUrl + $"/games/{gameId}/players/{playerId}/skills"); using (var response = await client.PostAsync(uri, stringifiedObject)) { using (var content = response.Content) { var data = await content.ReadAsStringAsync(); Debug.WriteLine($"POST request sent to '{uri.AbsolutePath}' with data: '{await stringifiedObject.ReadAsStringAsync()}'."); Debug.WriteLine($"Got response: '{data}'"); if (data != null && response.IsSuccessStatusCode) { return(_serialization.DeserializeObject <SkillUpdateResult>(data)); } var requestDataJson = await stringifiedObject.ReadAsStringAsync(); throw new ApiException(uri, HttpMethod.Post, requestDataJson, response.StatusCode, data); } } } }
public void Example_SkillExpenditure() { //--arrange var request = new SkillExpenditureRequest("31"); request.IncreaseRegeneration(); request.IncreaseBudding(); request.IncreaseBudding(); request.IncreaseAntiApoptosis(); request.IncreaseHypermutation(); request.IncreaseMycotoxicity(); request.IncreaseHydrophilia(); request.AddMoistureDroplet(1); request.AddMoistureDroplet(351); request.AddMoistureDroplet(591); //--act var jsonString = JsonConvert.SerializeObject(request, new JsonSerializerSettings { ContractResolver = new DefaultContractResolver { NamingStrategy = new CamelCaseNamingStrategy() } }); //--assert //--assert Debug.WriteLine(jsonString); }
public async Task It_Returns_Next_Round_Available_If_All_Players_Have_Pushed_Their_Points() { //--arrange var newGame = await CreateValidGameForTesting(TestUserName, 1, 1); var firstPlayer = newGame.Players.First(x => x.Human); var skillExpenditureRequest = new SkillExpenditureRequest(firstPlayer.Id); for (int i = 0; i < firstPlayer.MutationPoints; i++) { skillExpenditureRequest.IncreaseRegeneration(); } //--act var result = await GamesClient.PushSkillExpenditures(newGame.Id, firstPlayer.Id, skillExpenditureRequest, TestEnvironmentSettings.BaseApiUrl); //--assert result.NextRoundAvailable.ShouldBe(true); }
public async Task It_Returns_A_400_Bad_Request_If_The_Player_Attempted_To_Push_Too_Many_Active_Cell_Changes() { //--arrange var newGame = await CreateValidGameForTesting(TestUserName, 2, 0); var firstPlayer = newGame.Players[0]; var skillExpenditureRequest = new SkillExpenditureRequest(firstPlayer.Id); skillExpenditureRequest.AddMoistureDroplet(1); skillExpenditureRequest.AddMoistureDroplet(2); skillExpenditureRequest.AddMoistureDroplet(3); skillExpenditureRequest.AddMoistureDroplet(4); //--act var exception = Assert.ThrowsAsync <ApiException>(async() => await GamesClient.PushSkillExpenditures(newGame.Id, firstPlayer.Id, skillExpenditureRequest, TestEnvironmentSettings.BaseApiUrl)); //--assert exception.ResponseStatusCode.ShouldBe(HttpStatusCode.BadRequest); }
public async Task It_Returns_The_Updated_Player() { //--arrange var newGame = await CreateValidGameForTesting(TestUserName, 2, 0); var joinGameRequest = new JoinGameRequest(newGame.Id, TestUserName2); //--have another player join so that the game is started await GamesClient.JoinGame(joinGameRequest, TestEnvironmentSettings.BaseApiUrl); var firstPlayer = newGame.Players[0]; var skillExpenditureRequest = new SkillExpenditureRequest(firstPlayer.Id); skillExpenditureRequest.IncreaseBudding(); //--act var result = await GamesClient.PushSkillExpenditures(newGame.Id, firstPlayer.Id, skillExpenditureRequest, TestEnvironmentSettings.BaseApiUrl); //--assert result.UpdatedPlayer.MutationPoints.ShouldBe(firstPlayer.MutationPoints - 1); }
public async Task It_Returns_Next_Round_Not_Available_If_Not_All_Players_Have_Pushed_Their_Points() { //--arrange var newGame = await CreateValidGameForTesting(TestUserName, 2, 0); var joinGameRequest = new JoinGameRequest(newGame.Id, TestUserName2); //--have another player join so that the game is started await GamesClient.JoinGame(joinGameRequest, TestEnvironmentSettings.BaseApiUrl); var firstPlayer = newGame.Players[0]; var skillExpenditureRequest = new SkillExpenditureRequest(firstPlayer.Id); for (int i = 0; i < firstPlayer.MutationPoints; i++) { skillExpenditureRequest.IncreaseRegeneration(); } //--act var result = await GamesClient.PushSkillExpenditures(newGame.Id, firstPlayer.Id, skillExpenditureRequest, TestEnvironmentSettings.BaseApiUrl); //--assert result.NextRoundAvailable.ShouldBe(false); }
public async Task <SkillUpdateResult> PushSkillExpenditures(int gameId, string playerId, SkillExpenditureRequest skillExpenditureRequest) { return(await _gamesApiClient.PushSkillExpenditures(gameId, playerId, skillExpenditureRequest, _baseApiUrl)); }