public async Task CreatePackages_WithoutValidParameters_ReturnsbadRequest()
        {
            //Arrange
            var packageParameters = _fixture
                                    .Build <PackageParameters>()
                                    .With(a => a.CountryCode, "PT")
                                    .With(a => a.AreaCode, "LB")
                                    .CreateMany(0);

            var parameters = new CreatePackageParameters
            {
                Packages = packageParameters
            };

            _mockPackageRepository
            .Setup(exec =>
                   exec.CreatePackages(
                       It.IsAny <IEnumerable <Package> >()))
            .Returns(Task.CompletedTask);

            //Act
            var response = await _packagesController
                           .CreatePackages(parameters) as BadRequestResult;

            //Assert
            _mockPackageRepository
            .Verify(exec =>
                    exec.CreatePackages(
                        It.IsAny <IEnumerable <Package> >()),
                    Times.Never);

            response.StatusCode
            .Should()
            .Be((int)HttpStatusCode.BadRequest);
        }
        public async Task <IActionResult> CreatePackages(CreatePackageParameters parameters)
        {
            if (!parameters.Packages.Any())
            {
                return(BadRequest());
            }

            var packagesToCreate = parameters.Packages
                                   .Select(p =>
                                           Package.CreateNew(
                                               size: p.Size,
                                               weight: p.Weight,
                                               isFragile: p.IsFragile,
                                               valueToPay: p.ValueToPay,
                                               countryCode: p.CountryCode,
                                               countryISOCode: GetCountryCodeDetails(p.CountryCode),
                                               areaCode: p.AreaCode,
                                               shipment: Shipment.CreateNew(
                                                   checkPoint: CheckPoint.CreateNew(
                                                       city: p.CheckPointDetails.City,
                                                       country: p.CheckPointDetails.Country,
                                                       controlType: p.CheckPointDetails.ControlType,
                                                       placeType: p.CheckPointDetails.PlaceType))));

            await _packageRepository.CreatePackages(packagesToCreate);

            return(Ok());
        }