Ejemplo n.º 1
0
        public async Task GetDeliveryQuoteAsync()
        {
            var deliveryQuoteArgs = new PostmatesDeliveryQuoteArgs()
            {
                PickupAddress = new PostmatesAddress()
                {
                    StreetAddress1 = "229 1st AVE N",
                    StreetAddress2 = "",
                    City = "Seattle",
                    State = UsStates.WA,
                    ZipCode = "98109"
                },
                PickupLatitude = 47.6698608,
                PickupLongitude = -122.3004016,
                PickupPhoneNumber = "3155140118",
                DropoffAddress = new PostmatesAddress()
                {
                    StreetAddress1 = "3958 6th AVE NW",
                    StreetAddress2 = "",
                    City = "Seattle",
                    State = UsStates.WA,
                    ZipCode = "98107"
                },
                DropoffLatitude = 47.6554918,
                DropoffLongitude = -122.3633574,
                DropoffPhoneNumber = "+1 (315) 514-0118"
            };

            var deliveryQuote = await PostmatesClient.GetDeliveryQuoteAsync(deliveryQuoteArgs);

            Assert.IsType<PostmatesDeliveryQuote>(deliveryQuote);
        }
Ejemplo n.º 2
0
        public void GET_DELIVERY_ZONES()
        {
            var handler      = A.Fake <IHttpHandler>();
            var responseData = System.IO.File.ReadAllText(@"targetFolder\GET_DELIVERY_ZONES_RESPONSE.json");

            var httpResponse = new HttpResponseMessage {
                Content    = new StringContent(responseData),
                StatusCode = System.Net.HttpStatusCode.OK
            };

            A.CallTo(handler).WithReturnType <Task <HttpResponseMessage> >().WithAnyArguments().Returns(Task.FromResult(httpResponse));

            var client = new PostmatesClient("clientID", "username", handler);

            var response = client.GetDeliveryZonesAsync().Result;

            Assert.IsNotNull(response);
            Assert.AreEqual(ResponseKinds.delivery_zones, response.Kind);
            Assert.IsTrue(response.GetResponseObject <DeliveryZoneCollection>() is DeliveryZoneCollection);
            var zones = response.GetResponseObject <DeliveryZoneCollection>();

            Assert.IsNotNull(zones);
            Assert.IsNotNull(zones.DeliveryZones);
            Assert.IsTrue(zones.DeliveryZones.Any());
        }
Ejemplo n.º 3
0
        public void GET_ERROR_A_DELIVERY_QUOTE()
        {
            var handler     = A.Fake <IHttpHandler>();
            var errorString = "{\"kind\": \"error\",\"code\": \"invalid_params\",\"message\": \"The parameters of your request were invalid.\"}";

            var httpResponse = new HttpResponseMessage {
                Content    = new StringContent(errorString),
                StatusCode = System.Net.HttpStatusCode.NotFound
            };
            var pickupAddress = new Address {
                StreetNumber = "20 McAllister St", City = "San Francisco", State = "CA"
            };
            var dropoffAddress = new Address {
                StreetNumber = "201 Market St", City = "San Francisco", State = "CA"
            };

            A.CallTo(handler).WithReturnType <Task <HttpResponseMessage> >().WithAnyArguments().Returns(Task.FromResult(httpResponse));

            var client = new PostmatesClient("clientID", "username", handler);

            var response = client.GetQuoteAsync(pickupAddress, dropoffAddress).Result;

            Assert.IsNotNull(response);
            Assert.AreEqual(ResponseKinds.error, response.Kind);
            Assert.IsTrue(response.GetResponseObject <ErrorResponse>() is ErrorResponse);
            var error = response.GetResponseObject <ErrorResponse>();

            Assert.IsTrue(!string.IsNullOrEmpty(error.Code));
            Assert.IsTrue(!string.IsNullOrEmpty(error.Message));
            Assert.AreEqual((int)System.Net.HttpStatusCode.NotFound, error.HttpStatusCodes);
        }
Ejemplo n.º 4
0
 public async Task UnknownLocationAsync()
 {
     var deliveryQuoteArgs = new PostmatesDeliveryQuoteArgs()
     {
         PickupAddress = new PostmatesAddress()
         {
             StreetAddress1 = "34 Antarctica Avenue",
             StreetAddress2 = "",
             City = "Antarctica",
             State = UsStates.WA,
             ZipCode = "90000"
         },
         PickupPhoneNumber = "3155140118",
         DropoffAddress = new PostmatesAddress()
         {
             StreetAddress1 = "00 Not a real Ave",
             StreetAddress2 = "",
             City = "Fake",
             State = UsStates.WA,
             ZipCode = "00000"
         },
         DropoffPhoneNumber = "+1 (315) 514-0118"
     };
     try
     {
         var deliveryQuote = await PostmatesClient.GetDeliveryQuoteAsync(deliveryQuoteArgs);
     }
     catch(Exception e)
     {
         Assert.IsType<UnknownLocationException>(e);
     }
 }
Ejemplo n.º 5
0
 public async Task GetDeliveryAsync()
 {
     var deliveries = await PostmatesClient.GetDeliveriesAsync();
     var id = deliveries.FirstOrDefault().Id;
     var result = await PostmatesClient.GetDeliveryAsync(id);
     Assert.True(result.Id == id);
 }
Ejemplo n.º 6
0
        public void ADD_A_TIP_TO_A_DELIVERY_ERROR()
        {
            var handler     = A.Fake <IHttpHandler>();
            var errorString = "{\"kind\": \"error\",\"code\": \"invalid_params\",\"message\": \"The parameters of your request were invalid.\"}";

            var httpResponse = new HttpResponseMessage {
                Content    = new StringContent(errorString),
                StatusCode = System.Net.HttpStatusCode.NotFound
            };

            A.CallTo(handler).WithReturnType <Task <HttpResponseMessage> >().WithAnyArguments().Returns(Task.FromResult(httpResponse));

            var client = new PostmatesClient("clientID", "username", handler);

            var response = client.AddTipAsync("DeliveryId", 1).Result;


            Assert.IsNotNull(response);
            Assert.AreEqual(ResponseKinds.error, response.Kind);
            Assert.IsTrue(response.GetResponseObject <ErrorResponse>() is ErrorResponse);
            var error = response.GetResponseObject <ErrorResponse>();

            Assert.IsTrue(!string.IsNullOrEmpty(error.Code));
            Assert.IsTrue(!string.IsNullOrEmpty(error.Message));
            Assert.AreEqual((int)System.Net.HttpStatusCode.NotFound, error.HttpStatusCodes);
        }
Ejemplo n.º 7
0
        public void GET_A_DELIVERY_QUOTE()
        {
            var handler     = A.Fake <IHttpHandler>();
            var quoteString = "{\"kind\": \"delivery_quote\",\"id\": \"dqt_qUdje83jhdk\",\"created\": \"2014-08-26T10:04:03Z\",\"expires\": \"2014-08-26T10:09:03Z\",\"fee\": 799,\"currency\": \"usd\",\"dropoff_eta\": \"2014-08-26T12:15:03Z\",\"duration\": 60}";

            var httpResponse = new HttpResponseMessage {
                Content    = new StringContent(quoteString),
                StatusCode = System.Net.HttpStatusCode.OK
            };
            var pickupAddress = new Address {
                StreetNumber = "20 McAllister St", City = "San Francisco", State = "CA"
            };
            var dropoffAddress = new Address {
                StreetNumber = "201 Market St", City = "San Francisco", State = "CA"
            };

            A.CallTo(handler).WithReturnType <Task <HttpResponseMessage> >().WithAnyArguments().Returns(Task.FromResult(httpResponse));

            var client = new PostmatesClient("clientID", "username", handler);

            var response = client.GetQuoteAsync(pickupAddress, dropoffAddress).Result;

            Assert.IsNotNull(response);
            Assert.AreEqual(ResponseKinds.delivery_quote, response.Kind);
            Assert.IsTrue(response.GetResponseObject <DeliveryQuote>() is DeliveryQuote);
            var quote = response.GetResponseObject <DeliveryQuote>();

            Assert.IsTrue(!string.IsNullOrEmpty(quote.Id));
            Assert.IsTrue(quote.Created != new DateTime());
            Assert.IsTrue(quote.Expires != new DateTime());
            Assert.IsTrue(quote.DropoffEta != new DateTime());
            Assert.AreEqual("usd", quote.Currency);
            Assert.IsTrue(quote.Duration > 0);
            Assert.IsTrue(quote.Fee > 0);
        }
Ejemplo n.º 8
0
        public async Task InvalidParamsAsync()
        {
            var manifestItems = new List<PostmatesManifestItem>();
            manifestItems.Add(new PostmatesManifestItem()
            {
                Name = "Loopie Laundry bag",
                Quantity = 1,
                Size = PostmatesItemSizes.Medium
            });

            var delivery = new PostmatesCreateDeliveryArgs()
            {
                Manifest = "Laundry in a Loopie bag.",
                ManifestItems = manifestItems,
                PickupName = "Marcus",
                PickupAddress = new PostmatesAddress()
                {
                    StreetAddress1 = "229 1st AVE N",
                    City = "Seattle",
                    State = UsStates.WA,
                    Country = Countries.US,
                    ZipCode = "98109"
                },
                PickupPhoneNumber = "3155140118",
                PickupNotes = "Ring doorbell",
                DropoffName = "Loopie HQ",
                DropoffAddress = new PostmatesAddress()
                {
                    StreetAddress1 = "3958 6th AVE NW",
                    StreetAddress2 = "",
                    City = "Seattle",
                    State = UsStates.WA,
                    Country = Countries.US,
                    ZipCode = "98107"
                },
                DropoffPhoneNumber = "31asdfg118",
                DropoffNotes = "Ring doorbell/Call"
            };

            try
            {
                var result = await PostmatesClient.CreateDeliveryAsync(delivery);
            }
            catch (Exception e)
            {
                Assert.IsType<InvalidParamsException>(e);
                var containsParam = ((InvalidParamsException)e).PostmatesParams.TryGetValue("dropoff_phone_number", out string paramMessage);
                Assert.True(containsParam);
            }
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="fixture">The startup class of the service to be tested.</param>
        public Test_Postmates()
        {
            // https://docs.microsoft.com/en-us/aspnet/core/security/app-secrets?view=aspnetcore-3.1&tabs=windows
            // https://patrickhuber.github.io/2017/07/26/avoid-secrets-in-dot-net-core-tests.html
            // In project directory cmd:
            // dotnet user-secrets init
            // dotnet user-secrets set "Postmates.ServiceApiKey" "[Sandbox Key]"
            // dotnet user-secrets set "Postmates.CustomerId" [Customer Id]"

            var builder = new ConfigurationBuilder()
              .AddUserSecrets<Test_Postmates>();

            Configuration = builder.Build();
            var customerId = Configuration.GetValue<string>("Postmates.CustomerId");
            var apiKey = Configuration.GetValue<string>("Postmates.ServiceApiKey");
            PostmatesClient = new PostmatesClient(new PostmatesAccount(customerId, apiKey));
        }
Ejemplo n.º 10
0
        public async Task ListOngoingDeliveriesAsync()
        {

            var deliveryCreateArgs = new PostmatesCreateDeliveryArgs()
            {
                Manifest = "Laundry in a Loopie bag.",
                PickupName = "Marcus",
                PickupAddress = new PostmatesAddress()
                {
                    StreetAddress1 = "229 1st AVE N",
                    City = "Seattle",
                    State = UsStates.WA,
                    Country = Countries.US,
                    ZipCode = "98109"
                },
                PickupPhoneNumber = "3155140118",
                PickupNotes = "Ring doorbell",
                DropoffName = "Loopie HQ",
                DropoffAddress = new PostmatesAddress()
                {
                    StreetAddress1 = "3958 6th AVE NW",
                    StreetAddress2 = "",
                    City = "Seattle",
                    State = UsStates.WA,
                    Country = Countries.US,
                    ZipCode = "98107"
                },
                DropoffPhoneNumber = "3155140118",
                DropoffNotes = "Ring doorbell/Call",
                PickupReady = DateTime.UtcNow.AddMinutes(10),
                PickupDeadline = DateTime.UtcNow.AddMinutes(25),
                DropoffReady = DateTime.UtcNow.AddMinutes(20),
                DropoffDeadline = DateTime.UtcNow.AddMinutes(60)
            };

            var ongoingDelivery = await PostmatesClient.CreateDeliveryAsync(deliveryCreateArgs);

            var result = await PostmatesClient.GetOngoingDeliveriesAsync();
            
            /// $todo(marcus.bowyer)
            ///     figure out how to make this actually return something
            
        }
Ejemplo n.º 11
0
        public async Task CreateDeliveryAsync()
        {
            var manifestItems = new List <PostmatesManifestItem>();

            manifestItems.Add(new PostmatesManifestItem()
            {
                Name     = "Loopie Laundry bag",
                Quantity = 1,
                Size     = PostmatesItemSizes.Medium
            });

            var delivery = new PostmatesCreateDeliveryArgs()
            {
                Manifest      = "Laundry in a Loopie bag.",
                ManifestItems = manifestItems,
                PickupName    = "Marcus",
                PickupAddress = new PostmatesAddress()
                {
                    StreetAddress1 = "229 1st AVE N",
                    City           = "Seattle",
                    State          = UsStates.WA,
                    Country        = Countries.US,
                    ZipCode        = "98109"
                },
                PickupPhoneNumber = "3155140118",
                PickupNotes       = "Ring doorbell",
                DropoffName       = "Loopie HQ",
                DropoffAddress    = new PostmatesAddress()
                {
                    StreetAddress1 = "3958 6th AVE NW",
                    StreetAddress2 = "",
                    City           = "Seattle",
                    State          = UsStates.WA,
                    Country        = Countries.US,
                    ZipCode        = "98107"
                },
                DropoffPhoneNumber = "3155140118",
                DropoffNotes       = "Ring doorbell/Call"
            };
            var result = await PostmatesClient.CreateDeliveryAsync(delivery);

            Assert.IsType <PostmatesDelivery>(result);
        }
Ejemplo n.º 12
0
        public async Task TipDeliveryAsync()
        {
            Random rnd       = new Random();
            var    tipAmount = rnd.Next(1, 1000);

            var deliveries = await PostmatesClient.GetDeliveriesAsync();

            var deliveryToTip = deliveries.Where(d => d.Status == PostmatesDeliveryStatuses.Delivered &&
                                                 d.Tip is null).FirstOrDefault();

            var tipArgs = new PostmatesDeliveryTipArgs()
            {
                TipByCustomer = tipAmount
            };

            var result = await PostmatesClient.TipCourierAsync(deliveryToTip.Id, tipArgs);

            Assert.True(result.Tip == tipAmount);
            Assert.True(result.Id == deliveryToTip.Id);
        }
Ejemplo n.º 13
0
        public async Task CancelDeliveryAsync()
        {
            var deliveryCreateArgs = new PostmatesCreateDeliveryArgs()
            {
                Manifest      = "Laundry in a Loopie bag.",
                PickupName    = "Marcus",
                PickupAddress = new PostmatesAddress()
                {
                    StreetAddress1 = "229 1st AVE N",
                    City           = "Seattle",
                    State          = UsStates.WA,
                    Country        = Countries.US,
                    ZipCode        = "98109"
                },
                PickupPhoneNumber = "3155140118",
                PickupNotes       = "Ring doorbell",
                DropoffName       = "Loopie HQ",
                DropoffAddress    = new PostmatesAddress()
                {
                    StreetAddress1 = "3958 6th AVE NW",
                    StreetAddress2 = "",
                    City           = "Seattle",
                    State          = UsStates.WA,
                    Country        = Countries.US,
                    ZipCode        = "98107"
                },
                DropoffPhoneNumber = "3155140118",
                DropoffNotes       = "Ring doorbell/Call",
                PickupReady        = DateTime.UtcNow.AddMinutes(10),
                PickupDeadline     = DateTime.UtcNow.AddMinutes(25),
                DropoffReady       = DateTime.UtcNow.AddMinutes(20),
                DropofffDeadline   = DateTime.UtcNow.AddMinutes(60)
            };

            var deliveryToCancel = await PostmatesClient.CreateDeliveryAsync(deliveryCreateArgs);

            var result = await PostmatesClient.CancelDeliveryAsync(deliveryToCancel.Id);

            Assert.True(deliveryToCancel.Id == result.Id);
            Assert.True(result.Status == PostmatesDeliveryStatuses.Canceled);
        }
Ejemplo n.º 14
0
        public void CREATE_ERROR_A_DELIVERY()
        {
            var handler     = A.Fake <IHttpHandler>();
            var errorString = "{\"kind\": \"error\",\"code\": \"invalid_params\",\"message\": \"The parameters of your request were invalid.\"}";

            var httpResponse = new HttpResponseMessage {
                Content    = new StringContent(errorString),
                StatusCode = System.Net.HttpStatusCode.InternalServerError
            };

            A.CallTo(handler).WithReturnType <Task <HttpResponseMessage> >().WithAnyArguments().Returns(Task.FromResult(httpResponse));

            var client = new PostmatesClient("clientID", "username", handler);
            var requst = new CreateDelivery {
                PickupAddress = new Address {
                    StreetNumber = "20 McAllister St", City = "San Francisco", State = "CA"
                },
                DropoffAddress = new Address {
                    StreetNumber = "201 Market St", City = "San Francisco", State = "CA"
                },
                PickupName         = "PickUpName",
                DropoffName        = "DropoffName",
                Manifest           = "Manifest",
                PickupPhoneNumber  = "111-111-1111",
                DropoffPhoneNumber = "111-111-1111"
            };


            var response = client.CreateDeliveryAsync(requst).Result;


            Assert.IsNotNull(response);
            Assert.AreEqual(ResponseKinds.error, response.Kind);
            Assert.IsTrue(response.GetResponseObject <ErrorResponse>() is ErrorResponse);
            var error = response.GetResponseObject <ErrorResponse>();

            Assert.IsTrue(!string.IsNullOrEmpty(error.Code));
            Assert.IsTrue(!string.IsNullOrEmpty(error.Message));
            Assert.AreEqual((int)System.Net.HttpStatusCode.InternalServerError, error.HttpStatusCodes);
        }
Ejemplo n.º 15
0
        public void CREATE_A_DELIVERY()
        {
            var handler       = A.Fake <IHttpHandler>();
            var deliverytring = System.IO.File.ReadAllText(@"targetFolder\CREATE_A_DELIVERY_RESPONSE.json");

            var httpResponse = new HttpResponseMessage {
                Content    = new StringContent(deliverytring),
                StatusCode = System.Net.HttpStatusCode.OK
            };

            A.CallTo(handler).WithReturnType <Task <HttpResponseMessage> >().WithAnyArguments().Returns(Task.FromResult(httpResponse));

            var client = new PostmatesClient("clientID", "username", handler);

            var requst = new CreateDelivery {
                QuoteId       = "ssdfsgkfgf",
                PickupAddress = new Address {
                    StreetNumber = "20 McAllister St", City = "San Francisco", State = "CA"
                },
                DropoffAddress = new Address {
                    StreetNumber = "201 Market St", City = "San Francisco", State = "CA"
                },
                PickupName         = "PickUpName",
                DropoffName        = "DropoffName",
                Manifest           = "Manifest",
                PickupPhoneNumber  = "111-111-1111",
                DropoffPhoneNumber = "111-111-1111"
            };

            var response = client.CreateDeliveryAsync(requst).Result;

            Assert.IsNotNull(response);
            Assert.AreEqual(ResponseKinds.delivery, response.Kind);
            Assert.IsTrue(response.GetResponseObject <Delivery>() is Delivery);
            var delivery = response.GetResponseObject <Delivery>();

            Assert.IsNotNull(delivery);
        }
Ejemplo n.º 16
0
        public void ADD_A_TIP_TO_A_DELIVERY()
        {
            var handler      = A.Fake <IHttpHandler>();
            var responseData = System.IO.File.ReadAllText(@"targetFolder\DELIVERY.json");

            var httpResponse = new HttpResponseMessage {
                Content    = new StringContent(responseData),
                StatusCode = System.Net.HttpStatusCode.OK
            };

            A.CallTo(handler).WithReturnType <Task <HttpResponseMessage> >().WithAnyArguments().Returns(Task.FromResult(httpResponse));

            var client = new PostmatesClient("clientID", "username", handler);

            var response = client.AddTipAsync("DeliveryId", 1).Result;

            Assert.IsNotNull(response);
            Assert.AreEqual(ResponseKinds.delivery, response.Kind);
            Assert.IsTrue(response.GetResponseObject <Delivery>() is Delivery);
            var develery = response.GetResponseObject <Delivery>();

            Assert.IsNotNull(develery);
        }
Ejemplo n.º 17
0
        public async Task AddressUndeliverableAsync()
        {
            var deliveryQuoteArgs = new PostmatesDeliveryQuoteArgs()
            {
                PickupAddress = new PostmatesAddress()
                {
                    StreetAddress1 = "405 1st St NW, Towner, ND 58788",
                    StreetAddress2 = "",
                    City = "Towner",
                    State = UsStates.ND,
                    ZipCode = "58788"
                },
                PickupLatitude = 47.6698608,
                PickupLongitude = -100.406688,
                PickupPhoneNumber = "3155140118",
                DropoffAddress = new PostmatesAddress()
                {
                    StreetAddress1 = "3958 6th AVE NW",
                    StreetAddress2 = "",
                    City = "Seattle",
                    State = UsStates.WA,
                    ZipCode = "98107"
                },
                DropoffLatitude = 47.6554918,
                DropoffLongitude = -122.3633574,
                DropoffPhoneNumber = "+1 (315) 514-0118"
            };

            try
            {
                var deliveryQuote = await PostmatesClient.GetDeliveryQuoteAsync(deliveryQuoteArgs);
            }
            catch (Exception e)
            {
                Assert.IsType<AddressUndeliverableException>(e);
            }
        }
Ejemplo n.º 18
0
 public async Task ListDeliveriesAsync()
 {
     var result = await PostmatesClient.GetDeliveriesAsync();
     Assert.NotEmpty(result);
 }