public void Remove_RemoveHasAThatDoesNotExistInHasADb_ReturnNull()
        {
            var hasA = new HasA() { Price = 23, ProductId = _product.ProductId, StoreId = _store.StoreId, Store = _store, Product = _product };
            _hasARepository.Remove(hasA);
            _context.SaveChanges();

            Assert.That(_context.HasARelation.Find(hasA.ProductId, hasA.StoreId), Is.EqualTo(null));
        }
        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 Add_AddHasAToHasADb_HasACanBefoundInDb()
        {
            _storeRepository.Add(_store);
            _productRepository.Add(_product);
            _context.SaveChanges();
            var hasA = new HasA() {Price = 23, ProductId = _product.ProductId, StoreId = _store.StoreId, Store = _store, Product = _product};

            _hasARepository.Add(hasA);
            _context.SaveChanges();

            Assert.That(_context.HasARelation.Find(hasA.StoreId, hasA.ProductId), Is.EqualTo(hasA));
        }
        public void AddProductToMyStore_BananIsAlreadyInStore_ReturnMinusOne()
        {
            var hasA = new HasA()
            {
                Price = 1,
                Product = _product,
                ProductId = _product.ProductId,
                Store = _store,
                StoreId = _store.StoreId
            };

            _unitWork.HasA.Get(_store.StoreId, _product.ProductId).Returns(hasA);

            Assert.That(_uut.AddProductToMyStore(_product, 3.95), Is.EqualTo(-1));
        }
        public void Remove_RemoveHasAFromHasARelationDb_HasACantBeFoundInDb()
        {
            _storeRepository.Add(_store);
            _productRepository.Add(_product);
            _context.SaveChanges();
            var hasA = new HasA() { Price = 23, ProductId = _product.ProductId, StoreId = _store.StoreId, Store = _store, Product = _product };

            _hasARepository.Add(hasA);
            _context.SaveChanges();

            _hasARepository.Remove(hasA);
            _context.SaveChanges();

            Assert.That(_context.HasARelation.Find(hasA.StoreId, hasA.ProductId), Is.EqualTo(null));
        }
        public void changePriceOfProductInStore_HasPriceBeenChangedFrom2to4_reutrns4()
        {
            var hasA = new HasA()
            {
                Price = 2,
                Product = _product,
                ProductId = _product.ProductId,
                Store = _store,
                StoreId = _store.StoreId
            };

            _uut.AddProductToMyStore(_product, 2);
            _unitWork.HasA.Get(_store.StoreId, _product.ProductId).Returns(hasA);
            _uut.ChangePriceOfProductInStore(_product, 4);
        }
        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 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));
        }
示例#10
0
        /// <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 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");

            var store = new Store() {StoreName = "TestStore"};
            var store2 = new Store() { StoreName = "TestStore2" };
            _context.Stores.Add(store);
            _context.Stores.Add(store2);
            _context.SaveChanges();

            _product = new Product() {ProductName = "Test"};
            _product2 = new Product() {ProductName = "Test2"};
            var hasA = new HasA() {Price = 4, Product = _product, Store = store};
            var hasA2 = new HasA() {Price = 6, Product = _product2, Store = store};
            var hasA3 = new HasA() { Price = 5, Product = _product, Store = store2 };

            _context.Products.Add(_product);
            _context.Products.Add(_product2);
            _context.HasARelation.Add(hasA2);
            _context.HasARelation.Add(hasA);
            _context.HasARelation.Add(hasA3);
            _context.SaveChanges();

            _consumer = new global::Consumer.Consumer(_unit);
            _mail = Substitute.For<IMail>();
            _autocomplete = new Autocomplete(_unit);
            _generatedShoppingList = new GeneratedShoppingListModel(_consumer, _mail);
            _shoppingList = new ShoppingListModel(_consumer, _autocomplete);
            _findProduct = new FindProductModel(_consumer, _autocomplete);

            _shoppingList.ClearShoppingListCommand.Execute(this);
        }
        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 FindStroesThatSellsProduct_AddANewStoreANdInsetValidProduct_UnitofWorkReturnsStoresThatsSellProduct()
        {
            var TestStore = new Store() { StoreName = "TestStore2" };
            _context.Stores.Add(TestStore);
            _context.SaveChanges();
            var HasA = new HasA() { Product = _product, Store = TestStore, ProductId = _product.ProductId, StoreId = TestStore.StoreId, Price = 13 };
            _context.HasARelation.Add(HasA);
            _context.SaveChanges();

            var list = _consumer.FindStoresThatSellsProduct(_product.ProductName);

            Assert.That(list.Count, Is.EqualTo(3));
        }
 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));
 }
        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));
        }
示例#17
0
        /// <summary>
        ///     Finds the cheapest store for a product
        /// </summary>
        /// <param name="productName"></param>
        /// <returns>The store that got the product cheapest</returns>
        public Store FindCheapestStore(string productName)
        {
            var product = _unit.Products.FindProduct(productName);
            if (product == null)
            {
                return null;
            }

            HasA cheapest = null;

            foreach (
                var hasA in
                    product.HasARelation.Where(
                        hasA => OptionsStores.Any(x => (x.Store == hasA.Store.StoreName) && x.IsChecked)))
            {
                if (cheapest == null)
                {
                    cheapest = new HasA {Price = double.MaxValue};
                }

                if (hasA.Price < cheapest.Price)
                    cheapest = hasA;
            }

            return cheapest?.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_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));
        }
        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()
 {
     _prod = new Product() {ProductName = "TestProduct"};
     _store = new Store() { StoreName = "TestStore" };
     _hasA = new HasA() {Price = 10};
     _context = new DataContext();
     _hasARepository = new HasARepository(_context);
     _context.Database.Connection.ConnectionString = "Server=.\\SQLEXPRESS;Database=Pristjek220Data.DataContext; Trusted_Connection=True;";
     _context.Database.ExecuteSqlCommand("dbo.TestCleanTable");
 }
        public void RemoveProductFromMyStore_BananWithHasAIsInNoStore_ProductsRemoveCalled()
        {
            var hasA = new HasA()
            {
                Price = 1,
                Product = _product,
                ProductId = _product.ProductId,
                Store = _store,
                StoreId = _store.StoreId
            };

            _uut.AddProductToMyStore(_product, 1);
            _unitWork.HasA.FindHasA(_store.StoreName, _product.ProductName).Returns(hasA);
            _product.HasARelation.Clear();
            _uut.RemoveProductFromMyStore(_product);
            _unitWork.Received(1).Products.Remove(_product);
        }
        public void RemoveProductFromMyStore_BananWithHasAIsInStore_ChangesAreSavedInDatabase()
        {
            var hasA = new HasA()
            {
                Price = 1,
                Product = _product,
                ProductId = _product.ProductId,
                Store = _store,
                StoreId = _store.StoreId
            };

            _uut.AddProductToMyStore(_product, 1);
            _unitWork.HasA.FindHasA(_store.StoreName, _product.ProductName).Returns(hasA);
            _uut.RemoveProductFromMyStore(_product);

            _unitWork.Received(2).Complete();
        }
        public void RemoveProductFromMyStore_BananWithHasAIsInStore_RemoveIsCalled()
        {
            var hasA = new HasA()
            {
                Price = 1,
                Product = _product,
                ProductId = _product.ProductId,
                Store = _store,
                StoreId = _store.StoreId
            };

            _uut.AddProductToMyStore(_product, 1);
            _unitWork.HasA.FindHasA(_store.StoreName, _product.ProductName).Returns(hasA);
            _uut.RemoveProductFromMyStore(_product);

            _unitWork.HasA.Received(1).Remove(Arg.Any<HasA>());
        }