예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        /// <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);
        }