public void Get_all_future_hops_should_return_HopArrivalModel_list() { // Arrange HopArrivalModel latest = new HopArrivalModel() { }; TruckModel closestTruck = new TruckModel() { }; RecipientModel recipient = new RecipientModel { FirstName = "Rudi", LastName = "Recipient", Street = "Poststraße", PostalCode = "A-1070", City = "Poststadt" }; ParcelModel parcel = new ParcelModel { Recipient = recipient, Weight = 1.0f }; // Act var result = warehouse.GetAllFutureHops(latest, closestTruck, parcel); // Assert Assert.IsInstanceOfType(result, typeof(IList <HopArrivalModel>)); }
public bool ReportHop(HopArrivalModel hopModel) { try { var truck = _truckRepository.GetByCode(hopModel.Code); var warehouse = _warehouseRepository.GetByCode(hopModel.Code); var parcel = _parcelRepository.GetByTrackingCode(hopModel.TrackingId); if (truck == null && warehouse == null) { throw new Exception("Location code invalid"); } if (parcel == null) { throw new Exception("Parcel trackingId invalid"); } _hopRepository.Create(Mapper.Map <HopArrivalModel, HopArrivalDTO>(hopModel)); _logger.Info(string.Format("Parcel '{0}' has been scanned at LocationCode '{1}'. Timestamp: {2}", hopModel.TrackingId, hopModel.Code, hopModel.DateTime)); return(true); } catch (Exception ex) { throw new BLException("BL error reporting hop: " + ex.Message, ex); } }
public void ValidateHop_should_return_true() { // Arrange HopArrivalModel hop = new HopArrivalModel() { Code = "MOCK", TrackingId = "MOCKCODE", DateTime = DateTime.Now }; // Act var result = _tl.ValidateHop(hop); // Assert Assert.IsTrue(result); }
public void Report_hop_should_return_true() { var hop = new HopArrivalModel { Code = "1234", DateTime = DateTime.Now, TrackingId = "12345ABC" }; var recipient = new RecipientDTO { FirstName = "Rudi", LastName = "Recipient", Street = "Poststraße", PostalCode = "A-1070", City = "Poststadt" }; var parcel = new ParcelDTO { Recipient = recipient, Weight = 1.0f, TrackingCode = "MOCKCODE" }; var ware = new WarehouseDTO { Code = "1234", Description = "root warehouse", Duration = 12, Id = 3 }; var truck = new TruckDTO { Code = "1234", Description = "root truck", Duration = 42, Id = 4 }; truckMock.Setup(input => input.GetByCode(It.IsAny <string>())).Returns(truck); warehouseMock.Setup(input => input.GetByCode(It.IsAny <string>())).Returns(ware); parcelMock.Setup(input => input.GetByTrackingCode(It.IsAny <string>())).Returns(parcel); var result = tracking.ReportHop(hop); // Assert Assert.IsTrue(result); }
public bool ReportParcelHop(string parcelTrackingCode, string locationCode) { try { // i. Validation of data HopArrivalModel hop = new HopArrivalModel() { TrackingId = parcelTrackingCode, Code = locationCode, DateTime = DateTime.Now }; _trackingLogic.ValidateHop(hop); // ii. Write new hop for parcel journey to DB return(_trackingLogic.ReportHop(hop)); } catch (Exception ex) { throw new BLException("BL error reporting hop: " + ex.Message, ex); } }
public bool ValidateHop(HopArrivalModel hop) { try { if (hop == null) { return(false); } ValidationResult valRes; valRes = _hVal.Validate(hop); if (!valRes.IsValid) { throw new BLException(valRes.Errors, new ArgumentException()); } return(true); } catch (Exception ex) { _logger.Error(ex.Message); throw new BLException("BL error validating hop: " + ex.Message, ex); } }
public IList <HopArrivalModel> GetAllFutureHops(HopArrivalModel latestHop, TruckModel closestTruck, ParcelModel parcelModel) { _logger.Debug(string.Format("WarehouseLogic.GetAllFutureHops: latestHop: {0}, closestTruck: {1}, parcelModel: {2}", (latestHop != null ? latestHop.Code : "null"), (closestTruck != null ? closestTruck.Code : "null"), (parcelModel != null ? parcelModel.TrackingCode : "null"))); //Wenn es keinen Truck in Reichweite gibt, wirf eine Exception if (closestTruck == null) { throw new Exception("No truck in range!"); } //Sonst: bereite die Datencontainer vor HopArrivalModel closestTruckHop = new HopArrivalModel() { Code = closestTruck.Code, TrackingId = parcelModel.TrackingCode, DateTime = DateTime.Now /*TODO!!*/ }; List <HopArrivalModel> futureHops = new List <HopArrivalModel>(); //Wenn der letzte HopReport schon der Truck war, dann gibt es keine weiteren Reports //Shortcut evaluation, kann nicht auf null.Code zugreifen! // -> leere Liste if (latestHop != null && latestHop.Code == closestTruck.Code) { return(futureHops); } //Wenn der letzte Report kein Truck war, dann füge den Truck in den Container futureHops.Add(closestTruckHop); //Wenn der Truck keinen Parent hat, wirf eine exception if (closestTruck.Parent == null) { throw new Exception("Closest truck has no parent!"); } //Sonst: setze den Parent auf den Parent des Zieltrucks WarehouseModel parent = closestTruck.Parent; //Schleife, bis parent null (Root gefunden) int iter = 10; //Forcierter Schleifenabbruch while (parent != null && iter-- > 0) { _logger.Debug(string.Format("comparing parentCode '{0}' to lastHopCode '{1}'", parent.Code, latestHop != null ? latestHop.Code : "null")); if (latestHop == null || parent.Code != latestHop.Code) { _logger.Debug(string.Format("save parent '{0}' to list", parent.Code)); futureHops.Add(new HopArrivalModel() { Code = parent.Code, TrackingId = parcelModel.TrackingCode, DateTime = DateTime.Now }); } else { _logger.Debug(string.Format("break loop: parent '{0}' ", parent.Code)); break; } parent = Mapper.Map <WarehouseDTO, WarehouseModel>(_warehouseRepository.ParentOf(parent.Code)); } //gib sortierte (TODO) liste an futurehops zurück return(futureHops.OrderByDescending(h => h.DateTime).ToList()); }
public bool ValidateHop(HopArrivalModel hop) { return(true); }
public bool ReportHop(HopArrivalModel hopModel) { return(true); }
public IList <HopArrivalModel> GetAllFutureHops(HopArrivalModel latestHop, TruckModel closestTruck, ParcelModel parcelModel) { return(new List <HopArrivalModel>()); }