public async Task CreateOption_ProductExists()
        {
            //Arrange
            var productRepository = new Mock <IAsyncRepository <ProductAggregate.Product> >();

            productRepository.Setup(repo => repo.UpdateAsync(It.IsAny <ProductAggregate.Product>()))
            .Callback(
                (ProductAggregate.Product p) =>
            {
                p.ProductOptions =
                    p.ProductOptions.Select
                        (option => new ProductAggregate.ProductOption()
                {
                    Name        = option.Name,
                    Description = option.Description,
                    Product     = p,
                    ProductId   = p.Id,
                    Id          = new Guid()
                }).ToList();
            });

            productRepository.Setup(repo => repo.GetByIdAsync(It.IsAny <Guid>()))
            .ReturnsAsync(MockObjects.Product.GetProduct())
            .Verifiable();

            var productOptionRepository = new Mock <IAsyncRepository <ProductAggregate.ProductOption> >();

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

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

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

            var createdResult = result as CreatedResult;

            var productOption = createdResult.Value as Messages.ProductOption;


            //Assert
            productRepository.Verify();

            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);
        }