public void AddProductToDb_ProductIsAdded_ProductIsFoundInDb()
        {
            var product = new Product() { ProductName = "TestProduct" };
            _storemanager.AddProductToDb(product);

            Assert.That(_unit.Products.FindProduct("TestProduct"), Is.EqualTo(product));
        }
        public void AddProductToMyStore_ProductIsAddedToTestStore_HasARelationCanBeFoundForProductAndStore()
        {
            var product = new Product() { ProductName = "TestProduct" };
            _storemanager.AddProductToMyStore(product, 24);

            Assert.AreNotEqual(_context.HasARelation.Find(_storemanager.Store.StoreId, product.ProductId), null);
        }
        public void AutoCompleteProduct_LookUpWordStartsWithK_ReturnListOfSize1()
        {
            var kakaoProduct = new Product() { ProductName = "Kakao" };
            _products.Add(kakaoProduct);

            _unitWork.Products.FindProductStartingWith("K").Returns(_products);
            Assert.That(_uut.AutoCompleteProduct("K").Count, Is.EqualTo(1));
        }
        public void AddProductToDb_ProductIsAlreadyInDb_ReturnMinus1()
        {
            var product = new Product() { ProductName = "TestProduct" };
            _context.Products.Add(product);
            _context.SaveChanges();

            Assert.That(_storemanager.AddProductToDb(product), Is.EqualTo(-1));
        }
        /// <summary>
        ///     Add product to database
        /// </summary>
        /// <param name="product"></param>
        /// <returns>-1 if product is not found and return 0 if product is added</returns>
        public int AddProductToDb(Product product)
        {
            if (FindProduct(product.ProductName) != null)
                return -1;

            _unitwork.Products.Add(product);
            _unitwork.Complete();
            return 0;
        }
        public void AddProductToMyStore_ProductIsAlreadyAddedToTestStore_ReturnMinus1()
        {
            var product = new Product() { ProductName = "TestProduct" };
            _context.Products.Add(product);
            _context.SaveChanges();
            var hasA = new HasA() {Price = 22, Product = product, Store = _storemanager.Store, StoreId = _storemanager.Store.StoreId, ProductId = product.ProductId};
            _context.HasARelation.Add(hasA);
            _context.SaveChanges();

            Assert.That(_storemanager.AddProductToMyStore(product, 24), Is.EqualTo(-1));
        }
        public void FindProductInStore_TestProductIsSoldInStore_TestIsReturned()
        {
            _context.Stores.Add(_store);
            var product = new Product() {ProductName = "TestProduct"};
            _context.Products.Add(product);
            _context.SaveChanges();
            var hasA = new HasA() {Product = product, ProductId = product.ProductId, Store = _store, StoreId = _store.StoreId, Price = 10};
            _context.HasARelation.Add(hasA);
            _context.SaveChanges();

            Assert.That(_storeRepository.FindProductInStore(_store.StoreName, product.ProductName).Name, Is.EqualTo(product.ProductName));
        }
        public void AutoCompleteProduct_LookUpWordStartsWithB_ReturnListOfSize3()
        {
            var bananProduct = new Product() { ProductName = "Banan" };
            var baconProduct = new Product() { ProductName = "Bacon" };
            var bollerProduct = new Product() { ProductName = "Boller" };
            var brombaerProduct = new Product() { ProductName = "Brombaer" };
            _products.Add(baconProduct);
            _products.Add(bananProduct);
            _products.Add(bollerProduct);
            _products.Add(brombaerProduct);

            _unitWork.Products.FindProductStartingWith("B").Returns(_products);
            Assert.That(_uut.AutoCompleteProduct("B").Count, Is.EqualTo(3));
        }
        public void FindProductsInStore_FindProductsSoldByStore_ListWithProductsReturnedContaining3Elements()
        {
            var banan = new Product() {ProductName = "Banan"};
            var tomat = new Product() {ProductName = "Tomat"};
            var bacon = new Product() {ProductName = "Bacon"};

            _context.Products.Add(bacon);
            _context.Products.Add(tomat);
            _context.Products.Add(banan);
            _context.Stores.Add(_store);
            _context.SaveChanges();

            _context.HasARelation.Add(new HasA() { Price = 3.95, Store = _store, Product = tomat, ProductId = tomat.ProductId, StoreId = _store.StoreId });
            _context.HasARelation.Add(new HasA() { Price = 2.95, Store = _store, Product = banan, ProductId = banan.ProductId, StoreId = _store.StoreId });
            _context.HasARelation.Add(new HasA() { Price = 1.95, Store = _store, Product = bacon, ProductId = bacon.ProductId, StoreId = _store.StoreId });
            _context.SaveChanges();

            Assert.That(_storeRepository.FindProductsInStore(_store.StoreName).Count, Is.EqualTo(3));
        }
        public void FindProductsInStoreStartingWith_TestProductsIsSoldInStore_ListContaining3ElementsAreReturned()
        {
            _context.Stores.Add(_store);
            var product1 = new Product() { ProductName = "TestProduct1" };
            var product2 = new Product() { ProductName = "TestProduct2" };
            var product3 = new Product() { ProductName = "TestProduct3" };
            _context.Products.Add(product1);
            _context.Products.Add(product2);
            _context.Products.Add(product3);
            _context.SaveChanges();
            var hasA1 = new HasA() { Product = product1, ProductId = product1.ProductId, Store = _store, StoreId = _store.StoreId, Price = 10 };
            var hasA2 = new HasA() { Product = product2, ProductId = product2.ProductId, Store = _store, StoreId = _store.StoreId, Price = 11 };
            var hasA3 = new HasA() { Product = product3, ProductId = product3.ProductId, Store = _store, StoreId = _store.StoreId, Price = 12 };
            _context.HasARelation.Add(hasA1);
            _context.HasARelation.Add(hasA2);
            _context.HasARelation.Add(hasA3);
            _context.SaveChanges();

            Assert.That(_storeRepository.FindProductsInStoreStartingWith(_store.StoreName, "Test").Count, Is.EqualTo(3));
        }
        public void FindCheapestStoreForAllProductsWithSum_AldiAndFøtexSellsTestAndTest1ButFaktaOnlySellsTest_ReturnAListContaing4Elements()
        {
            var føtex = new Store() { StoreName = "Føtex" };
            var aldi = new Store() { StoreName = "Aldi" };
            var fakta = new Store() { StoreName = "Fakta" };
            var test1 = new Product() {ProductName = "Test1"};

            _context.Stores.Add(føtex);
            _context.Stores.Add(aldi);
            _context.Stores.Add(fakta);
            _context.Products.Add(_prod);
            _context.SaveChanges();
            _context.HasARelation.Add(new HasA() { Price = 2.95, Store = føtex, Product = _prod, ProductId = _prod.ProductId, StoreId = føtex.StoreId });
            _context.HasARelation.Add(new HasA() { Price = 4.95, Store = føtex, Product = test1, ProductId = test1.ProductId, StoreId = føtex.StoreId });
            _context.HasARelation.Add(new HasA() { Price = 1.95, Store = aldi, Product = _prod, ProductId = _prod.ProductId, StoreId = aldi.StoreId });
            _context.HasARelation.Add(new HasA() { Price = 5.95, Store = aldi, Product = test1, ProductId = test1.ProductId, StoreId = aldi.StoreId });
            _context.HasARelation.Add(new HasA() { Price = 1.95, Store = fakta, Product = _prod, ProductId = _prod.ProductId, StoreId = fakta.StoreId });
            _context.SaveChanges();

            Assert.That(_productRepository.FindCheapestStoreForAllProductsWithSum(new List<ProductInfo>() { new ProductInfo("Test") , new ProductInfo("Test1")}).Count, Is.EqualTo(4));
        }
        /// <summary>
        ///     Add product to storemanagers store with price
        /// </summary>
        /// <param name="product"></param>
        /// <param name="price"></param>
        /// <returns>-1 if the product exist in that store and 0 if it has been added</returns>
        public int AddProductToMyStore(Product product, double price)
        {
            if (_unitwork.HasA.Get(Store.StoreId, product.ProductId) != null)
                return -1;

            var hasA = new HasA
            {
                Price = price,
                Product = product,
                Store = Store,
                ProductId = product.ProductId,
                StoreId = Store.StoreId
            };

            _unitwork.HasA.Add(hasA);
            product.HasARelation.Add(hasA);
            Store.HasARelation.Add(hasA);

            _unitwork.Complete();
            return 0;
        }
        public void AutoCompleteProductForOneStore_3ProductsStartingWithBa_ReturnsAListContaining3Elements()
        {
            var bacon = new Product() { ProductName = "Bacon" };
            var banan = new Product() { ProductName = "Banan" };
            var bambus = new Product() { ProductName = "Bambus" };
            var store = new Store() {StoreName = "TestStore"};
            _context.Stores.Add(store);
            _context.Products.Add(bacon);
            _context.Products.Add(banan);
            _context.Products.Add(bambus);
            _context.SaveChanges();
            var hasA1 = new HasA() {Product = bacon, ProductId = bacon.ProductId, Store = store, StoreId = store.StoreId, Price = 12};
            var hasA2 = new HasA() { Product = banan, ProductId = banan.ProductId, Store = store, StoreId = store.StoreId, Price = 13 };
            var hasA3 = new HasA() { Product = bambus, ProductId = bambus.ProductId, Store = store, StoreId = store.StoreId, Price = 14 };
            _context.HasARelation.Add(hasA1);
            _context.HasARelation.Add(hasA2);
            _context.HasARelation.Add(hasA3);
            _context.SaveChanges();

            Assert.That(_autoCom.AutoCompleteProductForOneStore("TestStore", "Ba").Count, Is.EqualTo(3));
        }
        public void Complete_SavesTheChangesToTheDatabase_ProductFoundInDatabase()
        {
            var banan = new Product() { ProductName = "Banan" };
            var føtex = new Store() {StoreName = "Føtex"};

            _context.Products.Add(banan);
            _context.Stores.Add(føtex);
            _context.SaveChanges();
            var hasA = new HasA()
            {
                Price = 3.95,
                Store = føtex,
                Product = banan,
                ProductId = banan.ProductId,
                StoreId = føtex.StoreId
            };
            _context.HasARelation.Add(hasA);
            _context.SaveChanges();

            Assert.That(_unitOfWork.HasA.FindHasA(føtex.StoreName, banan.ProductName), Is.EqualTo(hasA));
        }
        public void AddProductToDb_ProductIsAdded_Return0()
        {
            var product = new Product() {ProductName = "TestProduct"};

            Assert.That(_storemanager.AddProductToDb(product), Is.EqualTo(0));
        }
 public void SetUp()
 {
     _unitWork = Substitute.For<IUnitOfWork>();
     _store = new Store() {StoreName = "Aldi", StoreId = 22};
     _product = new Product() {ProductName = "Banan", ProductId = 10};
     _uut = new Storemanager(_unitWork, _store);
 }
        public void RemoveProductFromMyStore_RemovalOfProductSuccesfull_Return0()
        {
            var product = new Product() { ProductName = "TestProduct" };
            _context.Products.Add(product);
            _context.SaveChanges();
            var hasA = new HasA() { Price = 22, Product = product, Store = _storemanager.Store, StoreId = _storemanager.Store.StoreId, ProductId = product.ProductId };
            _context.HasARelation.Add(hasA);
            _context.SaveChanges();

            Assert.That(_storemanager.RemoveProductFromMyStore(product), Is.EqualTo(0));
        }
        public void RemoveProductFromMyStore_ProductNoLongerHasAnyRelationsToAnyStore_ProductCannotBeFoundInDb()
        {
            var product = new Product() { ProductName = "TestProduct" };
            _context.Products.Add(product);
            _context.SaveChanges();
            var hasA = new HasA() { Price = 22, Product = product, Store = _storemanager.Store, StoreId = _storemanager.Store.StoreId, ProductId = product.ProductId };
            _context.HasARelation.Add(hasA);
            _context.SaveChanges();

            _storemanager.RemoveProductFromMyStore(product);

            Assert.That(_unit.Products.FindProduct("TestProduct"), Is.EqualTo(null));
        }
        public void RemoveProductFromMyStore_ProductIsNotInStore_HasARelationCannotBeFoundForProductAndStore()
        {
            var product = new Product() { ProductName = "TestProduct" };
            _context.Products.Add(product);
            _context.SaveChanges();

            Assert.That(_storemanager.RemoveProductFromMyStore(product), Is.EqualTo(-1));
        }
        public void SetUp()
        {
            var context = new DataContext();
            _unit = new UnitOfWork(context);
            context.Database.Connection.ConnectionString = "Server=.\\SQLEXPRESS;Database=Pristjek220Data.DataContext; Trusted_Connection=True;";
            context.Database.ExecuteSqlCommand("dbo.TestCleanTable");
            _store = new Store() {StoreName = "TestStore"};
            _unit.Stores.Add(_store);
            _product = new Product() {ProductName = "Testproduct"};
            _unit.Products.Add(_product);
            _unit.Complete();
            _unit.HasA.Add(new HasA() {Product = _product, ProductId = _product.ProductId, Store = _store, StoreId = _store.StoreId, Price = 10});
            _unit.Complete();

            _manager = new Storemanager(_unit, _store);
            _autocomplete = new Autocomplete(_unit);
            _createMsgBox = Substitute.For<ICreateMsgBox>();
            _changePriceModel = new ChangePriceModel(_manager, _autocomplete, _createMsgBox);
            _deleteProductModel = new DeleteProductModel(_manager, _autocomplete, _createMsgBox);
        }
 public void FindCheapestStoreWithSumForListOfProducts_2StoresSellsTestProductAndTestProduct1_ReturnsTheCheapestStoreWithPriceOf12()
 {
     var product1 = new Product() {ProductName = "TestProduct1"};
     _context.Products.Add(product1);
     var hasA3 = new HasA() {};
     var list = new List<ProductInfo>() { new ProductInfo(_product.ProductName, "1") };
     Assert.That(_consumer.FindCheapestStoreWithSumForListOfProducts(list).Price, Is.EqualTo(12));
 }
        /// <summary>
        ///     Remove the requested product from the storemanagers store, and if the product got no other relations remove the
        ///     product too
        /// </summary>
        /// <param name="product"></param>
        /// <returns>-1 if the product does not exist and 0 if it has been removed successfully</returns>
        public int RemoveProductFromMyStore(Product product)
        {
            var hasA = _unitwork.HasA.FindHasA(Store.StoreName, product.ProductName);

            if (hasA == null)
                return -1;

            hasA.Product.HasARelation.Remove(hasA);
            Store.HasARelation.Remove(hasA);
            _unitwork.HasA.Remove(hasA);

            if (product.HasARelation.Count == 0)
                _unitwork.Products.Remove(product);

            _unitwork.Complete();

            return 0;
        }
        public void AddProductToMyStore_ProductIsAddedToTestStore_Return0()
        {
            var product = new Product() { ProductName = "TestProduct" };

            Assert.That(_storemanager.AddProductToMyStore(product, 24), Is.EqualTo(0));
        }
 /// <summary>
 ///     Changes the price of the requested product
 /// </summary>
 /// <param name="product"></param>
 /// <param name="price"></param>
 public void ChangePriceOfProductInStore(Product product, double price)
 {
     var hasA = _unitwork.HasA.Get(Store.StoreId, product.ProductId);
     hasA.Price = price;
     _unitwork.Complete();
 }
        public void ChangePriceOfProductInStore_PriceOfTestProductInStoreIsSetTo10_HasARelationWithNewPriceCanBeFoundInDb()
        {
            var product = new Product() { ProductName = "TestProduct" };
            _context.Products.Add(product);
            _context.SaveChanges();
            var hasA = new HasA() { Price = 22, Product = product, Store = _storemanager.Store, StoreId = _storemanager.Store.StoreId, ProductId = product.ProductId };
            _context.HasARelation.Add(hasA);
            _context.SaveChanges();

            _storemanager.ChangePriceOfProductInStore(product, 10);

            Assert.That(_context.HasARelation.Find(_storemanager.Store.StoreId, product.ProductId).Price, Is.EqualTo(10));
        }
        public void FindProductInStore_TestProductIsInDbAndInStore_PriceOfReturnedObjectIsEqualToHasARelationsPrice()
        {
            var product = new Product() { ProductName = "TestProduct" };
            _context.Products.Add(product);
            _context.SaveChanges();
            var hasA = new HasA() { Price = 22, Product = product, Store = _storemanager.Store, StoreId = _storemanager.Store.StoreId, ProductId = product.ProductId };
            _context.HasARelation.Add(hasA);
            _context.SaveChanges();

            Assert.That(_storemanager.FindProductInStore(product.ProductName).Price, Is.EqualTo(hasA.Price));
        }
        public void SetUp()
        {
            _context = new DataContext();
            _unit = new UnitOfWork(_context);
            _context.Database.Connection.ConnectionString = "Server=.\\SQLEXPRESS;Database=Pristjek220Data.DataContext; Trusted_Connection=True;MultipleActiveResultSets=True;";
            _context.Database.ExecuteSqlCommand("dbo.TestCleanTable");

            //Opsætning af 2 forretninger der begge har samme vare
            _product = new Product() { ProductName = "TestProduct" };
            _store = new Store() { StoreName = "TestStore" };
            _store1 = new Store() { StoreName = "TestStore1" };
            _context.Products.Add(_product);
            _context.Stores.Add(_store);
            _context.Stores.Add(_store1);
            _context.SaveChanges();
            _hasA = new HasA() { Product = _product, Store = _store, ProductId = _product.ProductId, StoreId = _store.StoreId, Price = 12 };
            _hasA1 = new HasA() { Product = _product, Store = _store1, ProductId = _product.ProductId, StoreId = _store1.StoreId, Price = 13 };
            _context.HasARelation.Add(_hasA);
            _context.HasARelation.Add(_hasA1);
            _context.SaveChanges();

            _consumer = new Consumer.Consumer(_unit);
        }
        public void FindProduct_TestProductIsInDb_TestProductIsReturned()
        {
            var product = new Product() { ProductName = "TestProduct" };
            _context.Products.Add(product);
            _context.SaveChanges();

            Assert.That(_storemanager.FindProduct("TestProduct"), Is.EqualTo(product));
        }
 public void SetUp()
 {
     _context = new DataContext();
     _prod = new Product() {ProductName = "Test"};
     _context.Database.Connection.ConnectionString = "Server=.\\SQLEXPRESS;Database=Pristjek220Data.DataContext; Trusted_Connection=True;";
     _context.Database.ExecuteSqlCommand("dbo.TestCleanTable");
     _productRepository = new ProductRepository(_context);
 }
        public void RemoveProductFromMyStore_ProductIsInStore_HasARelationCannotBeFoundForProductAndStore()
        {
            var product = new Product() { ProductName = "TestProduct" };
            _context.Products.Add(product);
            _context.SaveChanges();
            var hasA = new HasA() { Price = 22, Product = product, Store = _storemanager.Store, StoreId = _storemanager.Store.StoreId, ProductId = product.ProductId };
            _context.HasARelation.Add(hasA);
            _context.SaveChanges();

            _storemanager.RemoveProductFromMyStore(product);

            Assert.That(_context.HasARelation.Find(_storemanager.Store.StoreId, product.ProductId), Is.EqualTo(null));
        }