Ejemplo n.º 1
0
 private bool TryReadTrip(IDataReader reader, out TripWithSpoilDetails trip)
 {
     trip = null;
     while (reader.Read())
     {
         trip = new TripWithSpoilDetails();
         trip.SpoilDuration    = (int)reader["Spoil Duration in Minutes"];
         trip.SpoilTemperature = (decimal)reader["Spoil Temperature"];
         trip.Id = (long)reader["Id"];
         return(true);
     }
     return(false);
 }
Ejemplo n.º 2
0
        public bool TryGetTripDetails(long tripId, out TripWithSpoilDetails trip)
        {
            using (var connection = new SqlConnection(connectionString))
                using (var command = new SqlCommand("Get Trip", connection))
                {
                    connection.Open();
                    command.CommandType = CommandType.StoredProcedure;

                    command.Parameters.Add("@id", SqlDbType.BigInt);
                    command.Parameters["@id"].Value = tripId;

                    var reader = command.ExecuteReader();
                    var found  = TryReadTrip(reader, out trip);
                    return(found);
                }
        }
Ejemplo n.º 3
0
        public void GetsTrip()
        {
            // Arrange
            var tripId      = 123456L;
            var dalfacade   = MockRepository.GenerateMock <IDalFacade>();
            var tripDetails = new TripWithSpoilDetails
            {
                Id               = tripId,
                SpoilDuration    = 3,
                SpoilTemperature = 27m
            };
            var container1 = new ContainerCreationDetails
            {
                ProductCount = 1035,
                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 container2 = new ContainerCreationDetails
            {
                ProductCount = 1039,
                Measurements = new[]
                {
                    new TemperatureRecord {
                        Time = new DateTime(2018, 6, 26, 12, 30, 2), Value = 29.6m
                    },
                    new TemperatureRecord {
                        Time = new DateTime(2018, 6, 26, 12, 35, 7), Value = 26.2m
                    },
                    new TemperatureRecord {
                        Time = new DateTime(2018, 6, 26, 12, 36, 5), Value = 22.3m
                    },
                }
            };

            dalfacade.Stub(x => x.TryGetTripDetails(tripId, out _))
            .OutRef(tripDetails)
            .Return(true);
            dalfacade.Stub(x => x.GetContainers(tripId)).Return(new[] { container1, container2 });
            var containerSpoilage = new ContainerSpoilage(dalfacade);

            // Act
            var trip = containerSpoilage.GetTrip(tripId.ToString());

            // Assert
            Assert.AreEqual(tripId, trip.Id);
            Assert.AreEqual(2, trip.ContainerCount);
            Assert.AreEqual(29.60m, trip.MaxTemperature);
            var roundedMeanTemperature = decimal.Round(GetMeanTemperature(container1, container2), 2);

            Assert.AreEqual(roundedMeanTemperature, trip.MeanTemperature);
            Assert.AreEqual(1, trip.SpoiledContainerCount);
            Assert.AreEqual(1039, trip.SpoiledProductCount);
        }