public async Task GivenProductServiceWhenEditWithProductFoundThenProductIsUpdated()
        {
            Product          productDb    = FakeBuilder.GetProductFake();
            ProductViewModel productModel = FakeBuilder.GetProductViewModelFake(5);

            this.mockProductRepository.Setup(mock => mock.Get(It.IsAny <int>()))
            .ReturnsAsync(productDb);

            productDb.Name.Should().NotBe(productModel.Name);
            productDb.Description.Should().NotBe(productModel.Description);
            productDb.Family.Type.Should().NotBe(productModel.Type);
            productDb.Family.Subtype.Should().NotBe(productModel.Subtype);
            productDb.Availability.Start.Should().NotBeSameDateAs(productModel.Start);
            productDb.Availability.End.Should().NotBeSameDateAs(productModel.End);

            await this.productService.Edit(productModel);

            productDb.Name.Should().Be(productModel.Name);
            productDb.Description.Should().Be(productModel.Description);
            productDb.Family.Type.Should().Be(productModel.Type);
            productDb.Family.Subtype.Should().Be(productModel.Subtype);
            productDb.Availability.Start.Should().BeSameDateAs(productModel.Start);
            productDb.Availability.End.Should().BeSameDateAs(productModel.End);

            this.mockProductRepository.Verify(mock => mock.Save(It.IsAny <Product>()), Times.Once);
        }
        public async Task GivenProductServiceWhenCreateWithDataValidThenCreateNewProduct()
        {
            ProductViewModel model = FakeBuilder.GetProductViewModelFake(0);

            this.mockUserManager.Setup(mock => mock.FindUserDomain(It.IsAny <ClaimsPrincipal>()))
            .Returns(Task.FromResult(new User(Guid.NewGuid().ToString())));
            await this.productService.Create(new ClaimsPrincipal(), model);

            this.mockProductRepository.Verify(mock => mock.Save(It.IsAny <Product>()), Times.Once);
            Assert.True(true);
        }