public void Add_MissingObjectDaysPassed_ReturnsBadRequest() { // Arrange const string testCustomerId = "042f780d-8b17-42f3-8c73-486d63f87e98"; var testItem = new TransactionDTo() { TransactionID = 6, EquipmentId = 1, Type = EquipmentType.Heavy.ToString() }; MoqSetupAdd(testItem); // Act //See how the ValidateViewModel extension method in the Helper class is useful here _controller.ValidateViewModel(testItem); //I have used the above useful extension method to simulate validation instead of adding customly like below //_controller.ModelState.AddModelError("CustomerName", "Required"); var badResponse = _controller.Post(testCustomerId, testItem); // Assert Assert.IsType <BadRequestObjectResult>(badResponse); }
public IActionResult Post(string customerId, [FromBody] TransactionDTo dto) { if (dto == null) { return(BadRequest()); } if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var result = _transactionProvider.AddTransaction(customerId, dto); if (result == null) { return(StatusCode(500, "A problem occurred while handling your request.")); } return(CreatedAtRoute("GetTransaction", new { id = result.TransactionID }, result)); }
public TransactionDTo AddTransaction(string customerId, TransactionDTo transaction) { try { Enum.TryParse(transaction.Type, out EquipmentType equipmentType); transaction.Points = Helper.CalculatePoints(equipmentType); transaction.Price = Helper.CalculatePrice(transaction.Days, equipmentType); transaction.TransactionDateTime = DateTime.Now.ToString(); var itemToCreate = Mapper.Map <Transaction>(transaction); itemToCreate.UserId = customerId; _rep.Add(itemToCreate); if (!_rep.Save()) { return(null); } var transactionDTo = Mapper.Map <TransactionDTo>(itemToCreate); return(transactionDTo); } catch (Exception e) { _logger.LogInformation(e.Message); throw; } }