public string Put([FromBody] DroneDelivery droneDelivery, string id) { logger.LogInformation("In Put action with DeliveryId: {DeliveryId}", id); var guid = Guid.NewGuid(); return($"AssignedDroneId{guid}"); }
private DroneDelivery CreateDroneDelivery(Delivery deliveryRequest) { DroneDelivery delivery = new DroneDelivery(); delivery.DeliveryId = deliveryRequest.DeliveryId; delivery.Dropoff = LocationRandomizer.GetRandomLocation(); delivery.Pickup = LocationRandomizer.GetRandomLocation(); delivery.Expedited = delivery.Expedited; delivery.PackageDetail = ModelsConverter.GetPackageDetail(deliveryRequest.PackageInfo); return(delivery); }
public async Task WhenGettingDroneId_ThenInvokesDroneSchedulerAPI() { string actualDeliveryId = null; DroneDelivery actualDelivery = null; _handleHttpRequest = ctx => { if (ctx.Request.Host.Host == DroneSchedulerHost) { actualDeliveryId = ctx.Request.Path; actualDelivery = new JsonSerializer().Deserialize <DroneDelivery>(new JsonTextReader(new StreamReader(ctx.Request.Body, Encoding.UTF8))); } else { ctx.Response.StatusCode = StatusCodes.Status500InternalServerError; } return(Task.CompletedTask); }; var delivery = new Delivery { DeliveryId = "someDeliveryId", PackageInfo = new PackageInfo { PackageId = "somePackageId", Size = ContainerSize.Medium, Tag = "sometag", Weight = 100d } }; await _caller.GetDroneIdAsync(delivery); Assert.NotNull(actualDeliveryId); Assert.Equal($"/api/DroneDeliveries/{delivery.DeliveryId}", actualDeliveryId); Assert.NotNull(actualDelivery); Assert.Equal(delivery.DeliveryId, actualDelivery.DeliveryId); Assert.Equal(delivery.PackageInfo.PackageId, actualDelivery.PackageDetail.Id); Assert.Equal((int)delivery.PackageInfo.Size, (int)actualDelivery.PackageDetail.Size); }
public async Task WhenGettingDroneId_ThenInvokesDroneSchedulerAPI() { string actualDeliveryId = null; DroneDelivery actualDelivery = null; _handleHttpRequest = async ctx => { if (ctx.Request.Path.Value.StartsWith(DroneSchedulerPath)) { await ctx.WriteResultAsync(new ContentResult { Content = "someDroneId", StatusCode = StatusCodes.Status201Created }); actualDeliveryId = ctx.Request.Path; actualDelivery = new JsonSerializer().Deserialize <DroneDelivery>(new JsonTextReader(new StreamReader(ctx.Request.Body, Encoding.UTF8))); } else { ctx.Response.StatusCode = StatusCodes.Status500InternalServerError; } }; var delivery = new Delivery { DeliveryId = "someDeliveryId", PackageInfo = new PackageInfo { PackageId = "somePackageId", Size = ContainerSize.Medium, Tag = "sometag", Weight = 100d } }; await _caller.GetDroneIdAsync(delivery); Assert.NotNull(actualDeliveryId); Assert.Equal($"{DroneSchedulerPath}/{delivery.DeliveryId}", actualDeliveryId); Assert.NotNull(actualDelivery); Assert.Equal(delivery.DeliveryId, actualDelivery.DeliveryId); Assert.Equal(delivery.PackageInfo.PackageId, actualDelivery.PackageDetail.Id); Assert.Equal((int)delivery.PackageInfo.Size, (int)actualDelivery.PackageDetail.Size); }
public async Task ProcessingDelivery_InvokesPackageServiceAndDroneSchedulerService() { PackageGen actualPackage = null; DroneDelivery actualDelivery = null; DeliverySchedule actualDeliverySchedule = null; _handleHttpRequest = async ctx => { var serializer = new JsonSerializer(); if (ctx.Request.Path.Value.StartsWith(PackagePath)) { actualPackage = serializer.Deserialize <PackageGen>(new JsonTextReader(new StreamReader(ctx.Request.Body, Encoding.UTF8))); await ctx.WriteResultAsync( new ObjectResult( new PackageGen { Id = "somePackageId", Size = ContainerSize.Medium, Tag = "sometag", Weight = 100d }) { StatusCode = StatusCodes.Status201Created }); } else if (ctx.Request.Path.Value.StartsWith(DroneSchedulerPath)) { actualDelivery = serializer.Deserialize <DroneDelivery>(new JsonTextReader(new StreamReader(ctx.Request.Body, Encoding.UTF8))); await ctx.WriteResultAsync(new ContentResult { Content = "someDroneId", StatusCode = StatusCodes.Status201Created }); } else if (ctx.Request.Path.Value.StartsWith(DeliveryPath)) { actualDeliverySchedule = serializer.Deserialize <DeliverySchedule>(new JsonTextReader(new StreamReader(ctx.Request.Body, Encoding.UTF8))); await ctx.WriteResultAsync( new ObjectResult(new DeliverySchedule { Id = "someDeliveryId" }) { StatusCode = StatusCodes.Status201Created }); } else { ctx.Response.StatusCode = StatusCodes.Status500InternalServerError; } }; var delivery = new Delivery { DeliveryId = "someDeliveryId", PackageInfo = new PackageInfo { PackageId = "somePackageId", Size = ContainerSize.Medium, Tag = "sometag", Weight = 100d } }; await _requestProcessor.ProcessDeliveryRequestAsync(delivery, new Dictionary <string, object>()); Assert.NotNull(actualPackage); Assert.Equal((int)delivery.PackageInfo.Size, (int)actualPackage.Size); Assert.Equal(delivery.PackageInfo.Tag, actualPackage.Tag); Assert.Equal(delivery.PackageInfo.Weight, actualPackage.Weight); Assert.NotNull(actualDelivery); Assert.Equal(delivery.DeliveryId, actualDelivery.DeliveryId); Assert.Equal(delivery.PackageInfo.PackageId, actualDelivery.PackageDetail.Id); Assert.Equal((int)delivery.PackageInfo.Size, (int)actualDelivery.PackageDetail.Size); Assert.NotNull(actualDeliverySchedule); Assert.Equal(delivery.DeliveryId, actualDeliverySchedule.Id); Assert.Equal("someDroneId", actualDeliverySchedule.DroneId); }