public void AddTransformerReturns400_WhenTransformerWarsException() { TransformerRequest transformerContract = new TransformerRequest(); transformerContract.Name = "Optimus"; _mockWarsService.Setup(warService => warService.AddTransformer(transformerContract)).Throws(new TransformerWarsException()); var controller = new TransformerController(_mockWarsService.Object, _mockLogger.Object); var result = controller.Put(transformerContract); Assert.Equal(400, ((Microsoft.AspNetCore.Mvc.BadRequestObjectResult)(result.Result.Result)).StatusCode); }
public async Task <ActionResult <Models.DB.Transformer> > Put([FromBody] TransformerRequest transformer) { try { return(await _warService.AddTransformer(transformer)); } catch (TransformerWarsException ex) { _logger.LogError(ex, "Error Adding Transformer"); return(BadRequest(ex.Message)); } }
public void AddTransformerReturnsActionResult_WithAddedTransformers() { TransformerRequest transformerContract = new TransformerRequest(); transformerContract.Name = "Optimus"; Models.DB.Transformer transformer = new Transformer(); transformer.Name = "Optimus"; _mockWarsService.Setup(warService => warService.AddTransformer(transformerContract)).ReturnsAsync(transformer).Verifiable(); var controller = new TransformerController(_mockWarsService.Object, _mockLogger.Object); var result = controller.Put(transformerContract); var viewResult = Assert.IsType <Task <ActionResult <Transformer> > >(result).Result; Assert.Equal(transformerContract.Name, viewResult.Value.Name); }
public async Task <Models.DB.Transformer> AddTransformer(TransformerRequest transformer) { _logger.LogInformation("WarService.AddTransformer"); _logger.LogInformation("Insert transformer {transformer}", transformer.Name); var transformerWithSameName = _dbcontext.Transformers.Where(x => x.Name == transformer.Name); if (transformerWithSameName.Count() > 0) { throw new TransformerWarsException("Duplicate name found in Transformer#" + transformerWithSameName.FirstOrDefault().TransformerId); } var transformerWithSameRank = _dbcontext.Transformers.Where(x => x.Rank == transformer.Rank && x.AllegianceTypeId == (int)transformer.AllegianceType); if (transformerWithSameRank.Count() > 0) { throw new TransformerWarsException("Duplicate rank in Transformer#" + transformerWithSameRank.FirstOrDefault().TransformerId); } var dbTransformer = transformer.GetDBObject(); _dbcontext.Transformers.Add(dbTransformer); await _dbcontext.SaveChangesAsync(); return(dbTransformer); }
public async Task <Models.DB.Transformer> UpdateTransformer(int id, TransformerRequest transformer) { _logger.LogInformation("WarService.UpdateTransformer"); _logger.LogInformation("Update transformer {id}", id); var dbTransformer = await _dbcontext.Transformers.FindAsync(id); if (dbTransformer == null) { throw new TransformerWarsException("Unable to find Transformer#" + id); } var transformerWithSameName = _dbcontext.Transformers.Where(x => x.Name == transformer.Name && x.TransformerId != dbTransformer.TransformerId); if (transformerWithSameName.Count() > 0) { throw new TransformerWarsException("Duplicate name found in Transformer#" + transformerWithSameName.FirstOrDefault().TransformerId); } var transformerWithSameRank = _dbcontext.Transformers.Where(x => x.Rank == transformer.Rank && x.AllegianceTypeId == (int)transformer.AllegianceType && x.TransformerId != dbTransformer.TransformerId); if (transformerWithSameRank.Count() > 0) { throw new TransformerWarsException("Duplicate rank in Transformer#" + transformerWithSameRank.FirstOrDefault().TransformerId); } dbTransformer.AllegianceTypeId = (int)transformer.AllegianceType; dbTransformer.Courage = transformer.Courage; dbTransformer.Endurance = transformer.Endurance; dbTransformer.Firepower = transformer.Firepower; dbTransformer.Intelligence = transformer.Intelligence; dbTransformer.Name = transformer.Name; dbTransformer.Rank = transformer.Rank; dbTransformer.Skill = transformer.Skill; dbTransformer.Speed = transformer.Speed; dbTransformer.Strength = transformer.Strength; await _dbcontext.SaveChangesAsync(); return(dbTransformer); }
public async Task <ActionResult <Models.DB.Transformer> > Post([FromRoute] int id, [FromBody] TransformerRequest transformer) { try { return(await _warService.UpdateTransformer(id, transformer)); } catch (TransformerWarsException ex) { _logger.LogError(ex, "Error Getting Transformer#" + id); return(BadRequest(ex.Message)); } }