private ProductViewModel(Product product)
 {
     ProductId = product.ProductId;
     Name = product.Name;
     Price = product.Price;
     Description = product.Description;
 }
        public void then_the_product_can_be_added()
        {
            _product = Product.Generate("Name", 25.25m, "This is a very long description");
            Execute();

            _productsDbSet.Verify(p => p.Add(_product), Times.Once);
            _result.ShouldEqual(_product);
        }
        protected override void Establish_context()
        {
            base.Establish_context();
            var originalProduct = Data.Products.FirstOrDefault();
            _productId = originalProduct.ProductId;
            _productsDbSet.Setup(s => s.FindAsync(_productId)).Returns(Task.FromResult(originalProduct));

            _productToUpdate = Product.Generate("Updated product", 25.5m, "Updated description");
            _productToUpdate.ProductId = _productId;
        }
 public async Task then_if_no_product_is_passed_exception_is_thrown()
 {
     _productToUpdate = null;
     string expected = string.Format("No Item provided to update");
     VerifyException(expected, await ExecuteForException());
     _productsDbSet.Verify(p => p.FindAsync(_productId), Times.Never);
 }
 private void Execute()
 {
     _result = _productRepository.Add(_product);
 }
 protected override void Establish_context()
 {
     base.Establish_context();
     _expected = Data.Products.FirstOrDefault();
     _productId = _expected.ProductId;
 }