public void ReportParcelHop_UpdateExpection() { string trackingId = "123456789"; string code = "987654321"; DA.Parcel p = new DA.Parcel() { TrackingId = trackingId }; DA.Warehouse w = new DA.Warehouse() { Code = code }; Mock <IParcelRepository> parcelRepoMock = new Mock <IParcelRepository>(); parcelRepoMock.Setup(foo => foo.GetByTrackingId(trackingId)).Returns(p); parcelRepoMock.Setup(foo => foo.Update(It.IsAny <DA.Parcel>())).Throws(new ParcelNotFoundExpection()); Mock <IHopRepository> hopRepoMock = new Mock <IHopRepository>(); hopRepoMock.Setup(foo => foo.GetByCode(code)).Returns(w); Mock <IWebhookRepository> hookMock = new Mock <IWebhookRepository>(); IStaffLogic staffLogic = new StaffLogic(mapper, parcelRepoMock.Object, hopRepoMock.Object, hookMock.Object, NullLogger <StaffLogic> .Instance); Assert.Throws <BusinessLayerException>(() => staffLogic.ReportParcelHop(trackingId, code)); }
public void ImportWarehouse(Warehouse warehouse) { logger.LogDebug($"Validating warehouse {warehouse.Code}"); WarehouseValidator validator = new WarehouseValidator(); ValidationResult result = validator.Validate(warehouse); Console.WriteLine(warehouse.Code); Console.WriteLine(warehouse.Description); if (result.IsValid) { Data.Warehouse dataWarehouse = this.mapper.Map <Data.Warehouse>(warehouse); logger.LogDebug($"Importing warehouse {warehouse.Code} into repo"); try { //TODO: delete before importing new hierarchy!!! //delete Hierarchy wareHouseRepository.Create(dataWarehouse); } catch (DataAccessLayerException e) { throw new BusinessLayerException("DAL Exception", e); } } else { throw new InvalidWarehouseException(string.Join("\n", result.Errors)); } }
public void ExportWarehouse_IsOk() { string code = "123456789"; Mock <IWarehouseRepository> mock = new Mock <IWarehouseRepository>(); DA.Warehouse wh = new DA.Warehouse() { Code = code }; mock.Setup(foo => foo.Read()).Returns(wh); IWarehouseManagementLogic warehouseManagementLogic = new WarehouseManagementLogic(mapper, mock.Object, NullLogger <WarehouseManagementLogic> .Instance); Warehouse w = warehouseManagementLogic.ExportWarehouse(); Assert.NotNull(w); Assert.Equal(code, w.Code); }
public void ReportParcelHop_IsOk() { string trackingId = "123456789"; string code = "987654321"; DA.Parcel p = new DA.Parcel() { TrackingId = trackingId }; DA.Warehouse w = new DA.Warehouse() { Code = code }; Mock <IParcelRepository> parcelRepoMock = new Mock <IParcelRepository>(); parcelRepoMock.Setup(foo => foo.GetByTrackingId(trackingId)).Returns(p); parcelRepoMock.Setup(foo => foo.Update(It.IsAny <DA.Parcel>())); Mock <IHopRepository> hopRepoMock = new Mock <IHopRepository>(); hopRepoMock.Setup(foo => foo.GetByCode(code)).Returns(w); Mock <IWebhookRepository> hookMock = new Mock <IWebhookRepository>(); List <DA.Webhook> webhooks = new List <DA.Webhook> { new DA.Webhook(), new DA.Webhook() }; hookMock.Setup(foo => foo.GetByTrackingId(trackingId)).Returns(webhooks); IStaffLogic staffLogic = new StaffLogic(mapper, parcelRepoMock.Object, hopRepoMock.Object, hookMock.Object, NullLogger <StaffLogic> .Instance); //if it doesn't throw, it's ok staffLogic.ReportParcelHop(trackingId, code); }
public void TransferParcel_ValidParcel() { string trackingid = "ABCD12345"; float weight = 1.0f; Recipient sender = new Recipient() { Name = "Martin", City = "Wien", Country = "Österreich", PostalCode = "1100", Street = "Radnitzkygasse 16" }; Recipient recipient = new Recipient() { Name = "Simon", City = "Wien", Country = "Österreich", PostalCode = "1100", Street = "Suchenwirtplatz 10" }; Parcel p = new Parcel() { Sender = sender, Recipient = recipient, Weight = weight, TrackingId = trackingid }; // geoMock Setup Mock <IGeoCodingAgent> geoMock = new Mock <IGeoCodingAgent>(); string senderGeoString = p.Sender.ToGeoCodingString(); string recipientGeoString = p.Recipient.ToGeoCodingString(); Geocoding.Location senderLoc = new Geocoding.Location(1, 1); Geocoding.Location recipientLoc = new Geocoding.Location(2, 2); geoMock.Setup(foo => foo.EncodeAddress(recipientGeoString)).Returns(recipientLoc); geoMock.Setup(foo => foo.EncodeAddress(senderGeoString)).Returns(senderLoc); //hopMock Setup Mock <IHopRepository> hopMock = new Mock <IHopRepository>(); //var senderLoc.Latitude, senderLoc.Longitude = senderLoc.ToGeoPoint(); //var recipientLoc.Latitude, recipientLoc.Longitude = recipientLoc.ToGeoPoint(); DA.Hop senderHop = new DA.Warehouse() { Code = "ABCD", Description = "senderHop" }; DA.Hop recipientHop = new DA.Warehouse() { Code = "EFGH", Description = "recipientHop" }; hopMock.Setup(foo => foo.GetByCoordinates(senderLoc.Latitude, senderLoc.Longitude)).Returns(senderHop); hopMock.Setup(foo => foo.GetByCoordinates(recipientLoc.Latitude, recipientLoc.Longitude)).Returns(recipientHop); // wareMock Setup Mock <IWarehouseRepository> wareMock = new Mock <IWarehouseRepository>(); DA.Warehouse fullWa = new DA.Warehouse() { Code = "A1B2", Description = "fullWa" }; wareMock.Setup(foo => foo.Read()).Returns(fullWa); // routeMock Setup Mock <IRouteCalculator> routeMock = new Mock <IRouteCalculator>(); Warehouse fullWaBusiness = this.mapper.Map <Warehouse>(fullWa); Hop senderHopBusiness = this.mapper.Map <Hop>(senderHop); Hop recipientHopBusiness = this.mapper.Map <Hop>(recipientHop); List <HopArrival> arrivals = new List <HopArrival>(); arrivals.Add(new HopArrival(senderHopBusiness)); arrivals.Add(new HopArrival(recipientHopBusiness)); routeMock.Setup(foo => foo.CalculateRoute(fullWaBusiness, senderHop.Code, recipientHop.Code)).Returns(arrivals); // parcelMock Setup Mock <IParcelRepository> parcelMock = new Mock <IParcelRepository>(); parcelMock.Setup(foo => foo.Create(It.IsAny <DA.Parcel>())); ILogisticsPartnerLogic logisticsPartnerLogic = new LogisticsPartnerLogic(mapper, parcelMock.Object, wareMock.Object, hopMock.Object, geoMock.Object, routeMock.Object, NullLogger <LogisticsPartnerLogic> .Instance); string parcelID = logisticsPartnerLogic.TransferParcel(p.TrackingId, p); Assert.Equal(trackingid, parcelID); }
public void TransferParcel_ThrowsNoHopException() { string trackingid = "ABCD12345"; float weight = 1.0f; Recipient sender = new Recipient() { Name = "Martin", City = "Wien", Country = "Österreich", PostalCode = "1100", Street = "Radnitzkygasse 16" }; Recipient recipient = new Recipient() { Name = "Simon", City = "Wien", Country = "Österreich", PostalCode = "1100", Street = "Suchenwirtplatz 10" }; Parcel p = new Parcel() { Sender = sender, Recipient = recipient, Weight = weight, TrackingId = trackingid }; // geoMock Setup Mock <IGeoCodingAgent> geoMock = new Mock <IGeoCodingAgent>(); string senderGeoString = p.Sender.ToGeoCodingString(); string recipientGeoString = p.Recipient.ToGeoCodingString(); Geocoding.Location senderLoc = new Geocoding.Location(1, 1); Geocoding.Location recipientLoc = new Geocoding.Location(2, 2); geoMock.Setup(foo => foo.EncodeAddress(recipientGeoString)).Returns(recipientLoc); geoMock.Setup(foo => foo.EncodeAddress(senderGeoString)).Returns(senderLoc); //hopMock Setup Mock <IHopRepository> hopMock = new Mock <IHopRepository>(); //var senderLoc.Latitude, senderLoc.Longitude = senderLoc.ToGeoPoint(); //var recipientLoc.Latitude, recipientLoc.Longitude = recipientLoc.ToGeoPoint(); DA.Hop senderHop = new DA.Warehouse() { Code = "ABCD", Description = "senderHop" }; DA.Hop recipientHop = new DA.Warehouse() { Code = "EFGH", Description = "recipientHop" }; hopMock.Setup(foo => foo.GetByCoordinates(senderLoc.Latitude, senderLoc.Longitude)).Returns((DA.Hop)null); hopMock.Setup(foo => foo.GetByCoordinates(recipientLoc.Latitude, recipientLoc.Longitude)).Returns((DA.Hop)null); // wareMock Setup Mock <IWarehouseRepository> wareMock = new Mock <IWarehouseRepository>(); // routeMock Setup Mock <IRouteCalculator> routeMock = new Mock <IRouteCalculator>(); // parcelMock Setup Mock <IParcelRepository> parcelMock = new Mock <IParcelRepository>(); ILogisticsPartnerLogic logisticsPartnerLogic = new LogisticsPartnerLogic(mapper, parcelMock.Object, wareMock.Object, hopMock.Object, geoMock.Object, routeMock.Object, NullLogger <LogisticsPartnerLogic> .Instance); Assert.Throws <NoHopException>(() => logisticsPartnerLogic.TransferParcel(p.TrackingId, p)); }