public IHttpActionResult CreateTrip(TripCreationDetails tripCreationDetails) { var validation = containerSpoilage.ValidateTripCreationDetails(tripCreationDetails); if (!validation.isValid) { return(BadRequest(validation.errorMessage)); } var tripId = containerSpoilage.CreateTrip(tripCreationDetails); return(Created <Trip>($"/trips/{tripId}", null)); }
public void CreatesAndGetsContainers() { // Arrange var dalFacade = new DalFacade(connectionString); var container = new ContainerCreationDetails { Id = Guid.NewGuid().ToString(), ProductCount = 10_000, Measurements = new [] { new TemperatureRecord { Time = new DateTime(2018, 6, 26, 12, 0, 0), Value = 24.6m }, new TemperatureRecord { Time = new DateTime(2018, 6, 26, 12, 1, 1), Value = 26.2m }, new TemperatureRecord { Time = new DateTime(2018, 6, 26, 12, 3, 9), Value = 27.3m }, } }; var tripCreationDetails = new TripCreationDetails { Name = "NZ to GB", SpoilDuration = 30, SpoilTemperature = 28.3m }; // Act var tripId = dalFacade.AddTrip(tripCreationDetails); dalFacade.AddContainer(tripId, container); var containers = dalFacade.GetContainers(tripId); // Assert Assert.AreEqual(1, containers.Count()); var retrievedContainer = containers.First(); Assert.AreEqual(container.Id, retrievedContainer.Id); Assert.AreEqual(container.ProductCount, retrievedContainer.ProductCount); Assert.AreEqual(3, retrievedContainer.Measurements.Length); var measurements = retrievedContainer.Measurements; Assert.AreEqual(1, measurements.Count(x => x.Time == container.Measurements[0].Time && x.Value == container.Measurements[0].Value)); Assert.AreEqual(1, measurements.Count(x => x.Time == container.Measurements[1].Time && x.Value == container.Measurements[1].Value)); Assert.AreEqual(1, measurements.Count(x => x.Time == container.Measurements[2].Time && x.Value == container.Measurements[2].Value)); } }
public void CreateTrip_ValidatesTripDetails() { // Arrange var tripCreationDetails = new TripCreationDetails(); var containerSpoilage = MockRepository.GenerateMock <IContainerSpoilage>(); containerSpoilage.Stub(x => x.ValidateTripCreationDetails(tripCreationDetails)) .Return((false, "error")); var controller = new ContainerSpoilageController(containerSpoilage); // Act var response = controller.CreateTrip(tripCreationDetails); // Assert Assert.AreEqual(typeof(BadRequestErrorMessageResult), response.GetType()); }
public void CreatesTrip() { // Arrange var tripCreationDetails = new TripCreationDetails(); var containerSpoilage = MockRepository.GenerateMock <IContainerSpoilage>(); containerSpoilage.Stub(x => x.ValidateTripCreationDetails(tripCreationDetails)) .Return((true, "")); containerSpoilage.Stub(x => x.CreateTrip(tripCreationDetails)).Return(1234); var controller = new ContainerSpoilageController(containerSpoilage); // Act var response = controller.CreateTrip(tripCreationDetails); // Assert Assert.AreEqual(typeof(CreatedNegotiatedContentResult <Trip>), response.GetType()); }
public void TripCreation_UnsetNameInvalid(string name, bool isValid) { // Arrange var tripCreationDetails = new TripCreationDetails { Name = name, SpoilDuration = 30, }; var containerSpoilage = new ContainerSpoilage(null); // Act var validation = containerSpoilage.ValidateTripCreationDetails(tripCreationDetails); // Assert Assert.AreEqual(isValid, validation.isValid); Assert.AreEqual(isValid, string.IsNullOrEmpty(validation.errorMessage)); }
public void TripCreation_NegativeSpoilDurationInvalid(int spoilDuration, bool isValid) { // Arrange var tripCreationDetails = new TripCreationDetails { Name = "NZ to GB", SpoilDuration = spoilDuration, SpoilTemperature = 26.7m }; var containerSpoilage = new ContainerSpoilage(null); // Act var validation = containerSpoilage.ValidateTripCreationDetails(tripCreationDetails); Assert.AreEqual(isValid, validation.isValid); Assert.AreEqual(isValid, string.IsNullOrEmpty(validation.errorMessage)); }
public long AddTrip(TripCreationDetails tripCreationDetails) { using (var connection = new SqlConnection(connectionString)) using (var command = new SqlCommand("Add Trip", connection)) { connection.Open(); command.CommandType = CommandType.StoredProcedure; command.Parameters.Add("@name", SqlDbType.NVarChar); command.Parameters["@name"].Value = tripCreationDetails.Name; command.Parameters.Add("@spoilTemperature", SqlDbType.Decimal); command.Parameters["@spoilTemperature"].Value = tripCreationDetails.SpoilTemperature; command.Parameters.Add("@spoilDurationInMinutes", SqlDbType.BigInt); command.Parameters["@spoilDurationInMinutes"].Value = tripCreationDetails.SpoilDuration; return((long)command.ExecuteScalar()); } }
public void CreatesAndGetsTripCreationDetails() { // Arrange var dalFacade = new DalFacade(connectionString); var tripCreationDetails = new TripCreationDetails { Name = "NZ to GB", SpoilDuration = 30, SpoilTemperature = 28.3m }; // Act var tripId = dalFacade.AddTrip(tripCreationDetails); var tripFound = dalFacade.TryGetTripDetails(tripId, out var trip); // Assert Assert.AreEqual(true, tripFound); Assert.AreEqual(tripId, trip.Id); Assert.AreEqual(tripCreationDetails.SpoilDuration, trip.SpoilDuration); Assert.AreEqual(tripCreationDetails.SpoilTemperature, trip.SpoilTemperature); }
public virtual IActionResult CreateTrip([FromBody] TripCreationDetails tripCreationDetails) { var trip = _repo.Trips.FirstOrDefault(x => x.Name.Equals(tripCreationDetails.Name)); if (trip != null) { return(StatusCode(400)); } trip = new Models.Trip() { Name = tripCreationDetails.Name, SpoilDuration = tripCreationDetails.SpoilDuration, SpoilTemperature = tripCreationDetails.SpoilTemperature }; _repo.Trips.Add(trip); _repo.SaveChanges(); Response.Headers.Add("Location", new Microsoft.Extensions.Primitives.StringValues($"/trips/{trip.Id}")); return(StatusCode(201)); }