public void CreateTripValidation() { var controller = InitController("POST"); // Invalid .Name and .SpoilDuration var data = new ViewModels.TripCreationDetails() { Name = null, SpoilDuration = 0, SpoilTemperature = 0, }; controller.ValidateViewModel(data); Assert.Equal(2, controller.ModelState.ErrorCount); // .SpoilDuration is still invalid at this point data.Name = "Valid"; controller.ValidateViewModel(data); Assert.Equal(1, controller.ModelState.ErrorCount); // All data is valid now data.SpoilDuration = 1; controller.ValidateViewModel(data); Assert.Equal(0, controller.ModelState.ErrorCount); }
public void CreateTripLogic() { // Positive test case var controller = InitController("POST"); var data = new ViewModels.TripCreationDetails() { Name = "TestTrip", SpoilDuration = 5, SpoilTemperature = 10, }; var tripId = CreateTrip(controller, data); // Ensure we can't replay controller = InitController("POST"); var result = controller.CreateTrip(data) as StatusCodeResult; Assert.Equal((int)HttpStatusCode.BadRequest, result.StatusCode); }
/// <summary> /// Helper that creates and validates a trip (returning its ID) /// </summary> private int CreateTrip(DefaultApiController controller, ViewModels.TripCreationDetails details) { // Test the result var result = controller.CreateTrip(details) as StatusCodeResult; Assert.Equal((int)HttpStatusCode.Created, result.StatusCode); // Check response headers Assert.True(controller.ControllerContext.HttpContext.Response.Headers.ContainsKey("location")); var location = controller.ControllerContext.HttpContext.Response.Headers["location"].ToString(); var format = location.StartsWith("/trips/"); var tripId = 0; Assert.True(format); Assert.True(int.TryParse(location.Replace("/trips/", ""), out tripId)); Assert.True(tripId > 0); return(tripId); }