Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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));
            }
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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));
        }