public async Task UpdateMatchRoundScoreInvalidMatch() { var session = await Login(); using (var client = new HttpClient { BaseAddress = new Uri(ServerUrl) }) { client.AcceptJson().AddSessionHeader(session.Id); // Update Round Score Match with Invalid Id var invalidMatchId = Guid.NewGuid(); var matchRoundForm = new MatchRoundForm { ActorId = session.Player.Id, RoundNumber = 1, Score = 10 }; var response = await client.PutAsJsonAsync($"/api/matches/{invalidMatchId}/rounds", matchRoundForm); Assert.Equal(HttpStatusCode.NotFound, response.StatusCode); var content = await response.Content.ReadAsJsonAsync <ApiError>(); Assert.Equal($"No such Match found.", content.Error); } }
public async Task <IActionResult> UpdateMatchRoundScore([FromRoute] Guid id, [FromBody] MatchRoundForm form) { if (!ModelState.IsValid) { return(HttpResponseHelper.BadRequest(ModelState)); } var match = await _context.Matches.Where(m => m.Id.Equals(id)).Include(m => m.Actors).FirstOrDefaultAsync(); if (match == null) { return(HttpResponseHelper.NotFound("No such Match found.")); } if (match.IsFinished) { return(HttpResponseHelper.BadRequest("This match is already finished.")); } foreach (var actor in match.Actors.Where(actor => actor.ActorId.Equals(form.ActorId))) { var round = await _context.MatchRounds.Where(r => r.MatchActorId.Equals(actor.Id)) .Where(r => r.RoundNumber.Equals(form.RoundNumber)) .FirstOrDefaultAsync(); if (round == null) { return(HttpResponseHelper.NotFound($"No Round #{form.RoundNumber} found for Actor {form.ActorId}")); } _context.Entry(round).State = EntityState.Modified; round.Score = form.Score; round.DateScore = DateTime.Now; var error = await SaveChangesAsync(); if (error != null) { return(error); } return (Ok( new MatchRoundScoreResponse { RoundNumber = round.RoundNumber, ActorId = round.MatchActor.ActorId, Actor = round.MatchActor.Actor, Score = round.Score, DateScore = round.DateScore })); } return(HttpResponseHelper.NotFound($"No Actor {form.ActorId} found for this Match.")); }
public async Task UpdateMatchRoundScore() { var mayur = await Login(); var matt = await Login("matt", "matt"); using (var client = new HttpClient { BaseAddress = new Uri(ServerUrl) }) { client.AcceptJson().AddSessionHeader(mayur.Id); var quickMatch = new QuickMatchActors { Actors = new List <Guid>(new[] { mayur.Player.Id, matt.Player.Id }) }; var matchResponse = await client.PostAsJsonAsync("/api/matches/actors", quickMatch); Assert.Equal(HttpStatusCode.Created, matchResponse.StatusCode); var matchReturn = await matchResponse.Content.ReadAsStringAsync(); var match = JsonConvert.DeserializeObject <Match>(matchReturn, Actor.JsonSerializerSettings()); Assert.Equal(mayur.Player.Id, match.Tournament.OwnerId); Assert.False(match.IsFinished); Assert.False(match.IsDeleted); // Update Match Round Score with Valid Id // Player 1 var matchRoundForm = new MatchRoundForm { ActorId = mayur.Player.Id, RoundNumber = 1, Score = 10 }; var matchRoundsResponse = await client.PutAsJsonAsync($"/api/matches/{match.Id}/rounds", matchRoundForm); Assert.Equal(HttpStatusCode.OK, matchRoundsResponse.StatusCode); var matchRoundScore = await matchRoundsResponse.Content.ReadAsJsonAsync <MatchRoundScoreResponse>(); Assert.Equal(matchRoundForm.Score, matchRoundScore.Score); Assert.Equal(matchRoundForm.ActorId, matchRoundScore.ActorId); // Player 2 var matchRoundForm2 = new MatchRoundForm { ActorId = matt.Player.Id, RoundNumber = 1, Score = 5 }; matchRoundsResponse = await client.PutAsJsonAsync($"/api/matches/{match.Id}/rounds", matchRoundForm2); matchRoundScore = await matchRoundsResponse.Content.ReadAsJsonAsync <MatchRoundScoreResponse>(); Assert.Equal(matchRoundForm2.Score, matchRoundScore.Score); Assert.Equal(matchRoundForm2.ActorId, matchRoundScore.ActorId); } }
public async Task UpdateMatchRoundScoreFinishedMatch() { var mayur = await Login(); var matt = await Login("matt", "matt"); using (var client = new HttpClient { BaseAddress = new Uri(ServerUrl) }) { client.AcceptJson().AddSessionHeader(mayur.Id); var quickMatch = new QuickMatchActors { Actors = new List <Guid>(new[] { mayur.Player.Id, matt.Player.Id }) }; var matchResponse = await client.PostAsJsonAsync("/api/matches/actors", quickMatch); Assert.Equal(HttpStatusCode.Created, matchResponse.StatusCode); var matchReturn = await matchResponse.Content.ReadAsStringAsync(); var match = JsonConvert.DeserializeObject <Match>(matchReturn, Actor.JsonSerializerSettings()); Assert.Equal(mayur.Player.Id, match.Tournament.OwnerId); Assert.False(match.IsFinished); Assert.False(match.IsDeleted); // Finish Match with Valid Id var response = await client.DeleteAsync($"/api/matches/{match.Id}"); Assert.Equal(HttpStatusCode.OK, response.StatusCode); var finishedMatch = await response.Content.ReadAsJsonAsync <Match>(); Assert.True(finishedMatch.IsFinished); // Update Finished Match Round Score with Valid Id var matchRoundForm = new MatchRoundForm { ActorId = mayur.Player.Id, RoundNumber = 1, Score = 10 }; var matchRoundsResponse = await client.PutAsJsonAsync($"/api/matches/{match.Id}/rounds", matchRoundForm); Assert.Equal(HttpStatusCode.BadRequest, matchRoundsResponse.StatusCode); var content = await matchRoundsResponse.Content.ReadAsJsonAsync <ApiError>(); Assert.Equal($"This match is already finished.", content.Error); } }
public async Task UpdateMatchRoundScoreInvalidRound() { var mayur = await Login(); var matt = await Login("matt", "matt"); using (var client = new HttpClient { BaseAddress = new Uri(ServerUrl) }) { client.AcceptJson().AddSessionHeader(mayur.Id); var quickMatch = new QuickMatchActors { Actors = new List <Guid>(new[] { mayur.Player.Id, matt.Player.Id }) }; var matchResponse = await client.PostAsJsonAsync("/api/matches/actors", quickMatch); Assert.Equal(HttpStatusCode.Created, matchResponse.StatusCode); var matchReturn = await matchResponse.Content.ReadAsStringAsync(); var match = JsonConvert.DeserializeObject <Match>(matchReturn, Actor.JsonSerializerSettings()); Assert.Equal(mayur.Player.Id, match.Tournament.OwnerId); Assert.False(match.IsFinished); Assert.False(match.IsDeleted); // Update Match Round Score with Invalid Round var invalidActorId = Guid.NewGuid(); var matchRoundForm = new MatchRoundForm { ActorId = invalidActorId, RoundNumber = 1, Score = 10 }; var matchRoundsResponse = await client.PutAsJsonAsync($"/api/matches/{match.Id}/rounds", matchRoundForm); Assert.Equal(HttpStatusCode.NotFound, matchRoundsResponse.StatusCode); var content = await matchRoundsResponse.Content.ReadAsJsonAsync <ApiError>(); Assert.Equal($"No Actor {invalidActorId} found for this Match.", content.Error); } }