public void CanUpdateExistingProduct()
        {
            if (_products != null)
            {
                var product = _products[0];
                product.Name = "TestProductRename";
                product.Description = "TestProductDescriptionChange";
                product.Price = 99;

                IProductRepository repository = new ProductRepository();
                repository.Update(product);

                // use session to try to load the product
                using (ISession session = _sessionFactory.OpenSession())
                {
                    var fromDb = session.Get<Product>(product.ProductId);
                    Assert.AreEqual(product.Name, fromDb.Name);
                    Assert.AreEqual(product.Description, fromDb.Description);
                    Assert.AreEqual(product.Price, fromDb.Price);
                }
            }
        }
        public void CanAddNewProduct()
        {
            var product = new Product
                              {
                                  ProductCode = "Test106",
                                  Name = "TestProduct106",
                                  Description = "Testing product 6",
                                  Price = 106,
                                  ManafacturerId = 1
                              };

                IProductRepository repository = new ProductRepository();
                repository.Add(product);

                // use session to try to load the product
                using (ISession session = _sessionFactory.OpenSession())
                {
                    var fromDb = session.Get<Product>(product.ProductId);
                    // Test that the product was successfully inserted
                    Assert.IsNotNull(fromDb);
                    Assert.AreNotSame(product, fromDb);
                    Assert.AreEqual(product.Name, fromDb.Name);
                    Assert.AreEqual(product.Description, fromDb.Description);
                    Assert.AreEqual(product.Price, fromDb.Price);

                }
        }
        public void CanSearchByName()
        {
            IProductRepository repository = new ProductRepository();
            var fromDb = repository.Search("101", new List<int>());

            Assert.AreEqual(1, fromDb.Count);
            Assert.IsTrue(IsInProductCollection(_products[0], fromDb));
        }
        public void CanRemoveExistingProduct()
        {
            var product = _products[0];
            IProductRepository repository = new ProductRepository();
            repository.Remove(product);

            using (ISession session = _sessionFactory.OpenSession())
            {
                var fromDb = session.Get<Product>(product.ProductId);
                Assert.IsNull(fromDb);
            }
        }
        public void CanGetExistingProductsByManafacturer()
        {
            IProductRepository repository = new ProductRepository();
            var fromDb = repository.ManafacturerProductList(2);

            Assert.AreEqual(1, fromDb.Count);
            Assert.IsTrue(IsInProductCollection(_products[1], fromDb));
        }
        public void CanGetExistingProductList()
        {
            IProductRepository repository = new ProductRepository();
            var fromDb = repository.List();

            Assert.AreEqual(5, fromDb.Count);
            Assert.IsTrue(IsInProductCollection(_products[0], fromDb));
            Assert.IsTrue(IsInProductCollection(_products[1], fromDb));
            Assert.IsTrue(IsInProductCollection(_products[2], fromDb));
            Assert.IsTrue(IsInProductCollection(_products[3], fromDb));
            Assert.IsTrue(IsInProductCollection(_products[4], fromDb));
        }
        public void CanGetExistingProductByProductName()
        {
            IProductRepository repository = new ProductRepository();
            var fromDb = repository.GetByProductName(_products[1].Name);

            Assert.IsNotNull(fromDb);
            Assert.AreNotSame(_products[1], fromDb);
            Assert.AreEqual(_products[1].ProductId, fromDb.ProductId);
        }