Ejemplo n.º 1
0
        public async Task UpdatePackageAsync_UnsuccessfulRequest_ShouldThrowFactroApiException()
        {
            // Arrange
            var projectId = Guid.NewGuid().ToString();
            var packageId = Guid.NewGuid().ToString();

            var updateProjectRequest = new UpdatePackageRequest();

            var expectedResponse = new HttpResponseMessage
            {
                StatusCode     = HttpStatusCode.BadRequest,
                RequestMessage = new HttpRequestMessage
                {
                    RequestUri = new Uri("http://www.mock-web-address.com"),
                },
            };

            var packageApi = this.fixture.GetPackageApi(expectedResponse);

            // Act
            Func <Task> act = async() => await packageApi.UpdatePackageAsync(projectId, packageId, updateProjectRequest);

            // Assert
            await act.Should().ThrowAsync <FactroApiException>();
        }
Ejemplo n.º 2
0
        public async Task UpdatePackageAsync_ValidRequest_ShouldReturnUpdatePackage()
        {
            // Arrange
            var existingProject = new GetProjectPayload
            {
                Id = Guid.NewGuid().ToString(),
            };

            var existingPackage = new GetPackagePayload
            {
                Id          = Guid.NewGuid().ToString(),
                Description = "TestDescription",
            };

            var updatePackageRequest = new UpdatePackageRequest
            {
                Description = "NewDescription",
            };

            var expectedUpdatedPackage = new UpdatePackageResponse
            {
                Id          = existingPackage.Id,
                Description = updatePackageRequest.Description,
            };

            var expectedResponseContent = new StringContent(JsonConvert.SerializeObject(expectedUpdatedPackage, this.fixture.JsonSerializerSettings));

            var expectedResponse = new HttpResponseMessage
            {
                Content = expectedResponseContent,
            };

            var packageApi = this.fixture.GetPackageApi(expectedResponse);

            var updatePackageResponse = new UpdatePackageResponse();

            // Act
            Func <Task> act = async() =>
                              updatePackageResponse = await packageApi.UpdatePackageAsync(existingProject.Id, existingPackage.Id, updatePackageRequest);

            // Assert
            await act.Should().NotThrowAsync();

            using (new AssertionScope())
            {
                updatePackageResponse.Id.Should().Be(existingPackage.Id);
                updatePackageResponse.Description.Should().Be(expectedUpdatedPackage.Description);
            }
        }
        public async Task <HttpResponseMessage> UpdatePackage(UpdatePackageRequest updatePackageRequest)
        {
            httpResponseMessage = new HttpResponseMessage();
            if (updatePackageRequest != null && ModelState.IsValid)
            {
                var getUserInvoiceResponse = await _IAccountService.UpdatePackage(updatePackageRequest);

                httpResponseMessage = Request.CreateResponse(HttpStatusCode.OK, getUserInvoiceResponse);
            }
            else
            {
                httpResponseMessage = Request.CreateResponse(HttpStatusCode.OK, new { Message = CustomErrorMessages.INVALID_INPUTS, Success = false });
            }
            return(httpResponseMessage);
        }
Ejemplo n.º 4
0
        public async Task UpdatePackageAsync_InvalidPackageId_ShouldThrowArgumentNullException(string packageId)
        {
            // Arrange
            var existingProject = new GetProjectPayload
            {
                Id = Guid.NewGuid().ToString(),
            };

            var updatePackageRequest = new UpdatePackageRequest
            {
                Description = "NewDescription",
            };

            var packageApi = this.fixture.GetPackageApi();

            // Act
            Func <Task> act = async() => await packageApi.UpdatePackageAsync(existingProject.Id, packageId, updatePackageRequest);

            // Assert
            await act.Should().ThrowAsync <ArgumentNullException>();
        }
Ejemplo n.º 5
0
        public async Task <IActionResult> UpdatePackage([FromBody] UpdatePackageRequest package)
        {
            if (package == null)
            {
                throw new Exception("Invalid Package");
            }

            var input = new UpdatePackageInput()
            {
                Id       = package.Id,
                Name     = package.Name,
                Products = package.Products.Select(p => new ProductInput()
                {
                    Id          = p.Id,
                    Name        = p.Name,
                    ProductType = p.ProductType
                }).ToList()
            };
            await _updatePackagesInput.Process(input);

            return(Ok());
        }
Ejemplo n.º 6
0
 public async Task <BaseResponse> UpdatePackage(UpdatePackageRequest updatePackageRequest)
 {
     return(await _IAccountRepository.UpdatePackage(updatePackageRequest));
 }
Ejemplo n.º 7
0
        public async Task <UpdatePackageResponse> UpdatePackageAsync(string projectId, string packageId, UpdatePackageRequest updatePackageRequest)
        {
            if (string.IsNullOrWhiteSpace(projectId))
            {
                throw new ArgumentNullException(nameof(projectId), $"{nameof(projectId)} can not be null, empty or whitespace.");
            }

            if (string.IsNullOrWhiteSpace(packageId))
            {
                throw new ArgumentNullException(nameof(packageId), $"{nameof(packageId)} can not be null, empty or whitespace.");
            }

            if (updatePackageRequest == null)
            {
                throw new ArgumentNullException(nameof(updatePackageRequest), $"{nameof(updatePackageRequest)} can not be null.");
            }

            var requestRoute = PackageApiEndpoints.Base.Update(projectId, packageId);

            var requestString  = JsonConvert.SerializeObject(updatePackageRequest, this.jsonSerializerSettings);
            var requestContent = ApiHelpers.GetStringContent(requestString);

            var response = await this.httpClient.PutAsync(requestRoute, requestContent);

            if (!response.IsSuccessStatusCode)
            {
                throw new FactroApiException(
                          $"Could not update package with id '{packageId}' of project with id '{projectId}'.",
                          response.RequestMessage.RequestUri.ToString(),
                          response.StatusCode,
                          response.Content == null ? null : await response.Content.ReadAsStringAsync());
            }

            var responseContentString = await response.Content.ReadAsStringAsync();

            var result =
                JsonConvert.DeserializeObject <UpdatePackageResponse>(
                    responseContentString,
                    this.jsonSerializerSettings);

            return(result);
        }
Ejemplo n.º 8
0
        public async Task <ActionResult> Update([FromRoute] Guid cateringId, [FromRoute] Guid packageId, [FromBody] UpdatePackageRequest request)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(new ApiErrorResponse()
                {
                    ErrorType = "Bad Request",
                    StatusCode = 400,
                    Errors = ModelState.Values.SelectMany(v => v.Errors).Select(e => e.ErrorMessage)
                }));
            }

            var package = new Package
            {
                Id     = packageId,
                Name   = request.Name,
                Serves = request.Serves,
                ServicePresentation = request.ServicePresentation,
                SetupTime           = request.SetupTime,
                Description         = request.Description,
                Price = request.Price,
                Menus = request.Menus.Select(m => new Menu
                {
                    Id   = m.Id,
                    Name = m.Name
                }).ToList(),
                PackageRequirements = request.PackageRequirements.Select(p => new PackageRequirement
                {
                    Id   = p.Id,
                    Name = p.Name
                }).ToList(),
                PackageOptions = request.PackageOptions.Select(p => new PackageOption
                {
                    Id                 = p.Id,
                    OptionsType        = p.OptionsType,
                    Title              = p.Title,
                    PackageOptionItems = p.PackageOptionItems.Select(pi => new PackageOptionItem
                    {
                        Id   = pi.Id,
                        Name = pi.Name
                    }).ToList()
                }).ToList()
            };

            var updated = await packageService.UpdatePackageAsync(package, cateringId);

            if (updated)
            {
                return(Ok(new PackageResponse
                {
                    Id = package.Id,
                    Name = package.Name,
                    Description = package.Description,
                    Serves = package.Serves,
                    Price = package.Price,
                    ServicePresentation = package.ServicePresentation,
                    SetupTime = package.SetupTime,
                    Menus = package.Menus.Select(m => new MenuResponse
                    {
                        Id = m.Id,
                        Name = m.Name
                    }),
                    PackageOptions = package.PackageOptions.Select(p => new PackageOptionResponse
                    {
                        Id = p.Id,
                        OptionsType = p.OptionsType,
                        PackageOptionItems = p.PackageOptionItems.Select(pi => new PackageOptionItemResponse
                        {
                            Id = pi.Id,
                            Name = pi.Name
                        }),
                        Title = p.Title
                    }),
                    PackageRequirements = package.PackageRequirements.Select(p => new PackageRequirementResponse
                    {
                        Id = p.Id,
                        Name = p.Name
                    })
                }));
            }

            return(NotFound(new ApiErrorResponse()
            {
                ErrorType = "Not Found",
                StatusCode = 404,
                Errors = new[] { "Package not found." }
            }));
        }