public async Task UpdateOption_DoesNotExist()
        {
            //Arrange

            //Setup product repository
            var productRepository = new Mock <IAsyncRepository <ProductAggregate.Product> >();

            //Setup product options repository
            var productOptionRepository = new Mock <IAsyncRepository <ProductAggregate.ProductOption> >();

            productOptionRepository.Setup(repo => repo.GetByIdAsync(It.IsAny <Guid>()))
            .ReturnsAsync(MockObjects.ProductOption.GetProductOption_Empty())
            .Verifiable();

            productOptionRepository.Setup(repo => repo.UpdateAsync(It.IsAny <ProductAggregate.ProductOption>()))
            .Verifiable();

            var controlller = new ProductOptionsController(productRepository.Object, productOptionRepository.Object);

            //Act
            var productOptionDTO = MockObjects.ProductOption.GetProductOptionDTO();
            var productGuid      = new Guid();

            var result = await controlller.UpdateOptionAsync(productGuid, productOptionDTO);

            //Assert
            var notFoundResult = result as NotFoundResult;


            productRepository.Verify();
            productRepository.VerifyNoOtherCalls();
            Assert.NotNull(notFoundResult);
            Assert.Equal(StatusCodes.Status404NotFound, notFoundResult.StatusCode);
        }
        public async Task UpdateOption_Exists()
        {
            //Arrange

            //Setup product repository
            var productRepository = new Mock <IAsyncRepository <ProductAggregate.Product> >();

            //Setup product options repository
            var productOptionRepository = new Mock <IAsyncRepository <ProductAggregate.ProductOption> >();

            productOptionRepository.Setup(repo => repo.GetByIdAsync(It.IsAny <Guid>()))
            .ReturnsAsync(MockObjects.ProductOption.GetProductOption())
            .Verifiable();

            productOptionRepository.Setup(repo => repo.UpdateAsync(It.IsAny <ProductAggregate.ProductOption>()))
            .Verifiable();

            var controlller = new ProductOptionsController(productRepository.Object, productOptionRepository.Object);

            //Act
            var productOptionDTO = MockObjects.ProductOption.GetProductOptionDTO();
            var productGuid      = new Guid();

            var result = await controlller.UpdateOptionAsync(productGuid, productOptionDTO);

            var createdResult = result as CreatedResult;

            var productOption = createdResult.Value as Messages.ProductOption;


            //Assert
            productRepository.Verify();
            productRepository.VerifyNoOtherCalls();

            Assert.NotNull(createdResult);

            Assert.NotNull(productOption);

            Assert.NotNull(productOption.Id);
            Assert.Equal(productOptionDTO.Name, productOption.Name);
            Assert.Equal(productOptionDTO.Description, productOption.Description);
            Assert.Equal(StatusCodes.Status201Created, createdResult.StatusCode);
        }