public async Task UpdatePackage_WithValidData_PackagesUpdatedSuccessfully()
        {
            //Arrange
            var version = Guid.NewGuid();

            var packageParameters = _fixture
                                    .Build <UpdatePackageParameters>()
                                    .With(a => a.Status, ShipmentStatus.Delivered)
                                    .With(a => a.Version, version)
                                    .Create();

            var trackingCode = _fixture.Create <string>();

            var expectedResult = new Package(
                Guid.NewGuid(),
                PackageSize.M,
                100,
                false,
                200,
                trackingCode,
                _fixture.Create <Shipment>(),
                version,
                DateTime.UtcNow,
                null);

            _mockPackageRepository
            .Setup(exec =>
                   exec.GetPackageByTrackingCode(
                       It.IsAny <string>()))
            .ReturnsAsync(expectedResult);

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

            //Act
            var response = await _packagesController
                           .UpdatePackage(trackingCode, packageParameters) as OkResult;

            //Assert
            _mockPackageRepository
            .Verify(exec =>
                    exec.GetPackageByTrackingCode(
                        It.IsAny <string>()),
                    Times.Once);

            _mockPackageRepository
            .Verify(exec =>
                    exec.UpdatePackage(
                        It.IsAny <Package>()),
                    Times.Once);

            response.StatusCode
            .Should()
            .Be((int)HttpStatusCode.OK);
        }