示例#1
0
        public void Setup()
        {
            inMemoryConnection = Effort.DbConnectionFactory.CreateTransient();
            using var context  = new MarketDbContext(inMemoryConnection);
            context.Init();
            RegisteredUser first_owner = new RegisteredUser("FIRST_OWNER", new byte[] { });

            context.Users.Add(first_owner);
            TEST_FIRST_OWNER = first_owner.ID;
            RegisteredUser owner = new RegisteredUser("OWNER", new byte[] { });

            context.Users.Add(owner);
            TEST_OWNER = owner.ID;
            RegisteredUser manager = new RegisteredUser("MANAGER", new byte[] { });

            context.Users.Add(manager);
            TEST_MANAGER = manager.ID;
            RegisteredUser new_user = new RegisteredUser("NEW_USER", new byte[] { });

            context.Users.Add(new_user);
            TEST_NEW_USER   = new_user.ID;
            storeName       = DataForTests.CreateTestContactDetails().Name;
            storeHandler    = new StoreHandler();
            orderManager    = new OrderManager(storeHandler, inMemoryConnection);
            storeManagement = new StoreManagementFacade(storeHandler, orderManager);
            storeHandler.OpenStore(DataForTests.CreateTestContactDetails(), TEST_FIRST_OWNER, context);
            Store store = storeHandler.GetStoreByName(storeName, context);

            store.AddOwner(TEST_OWNER, TEST_FIRST_OWNER, STUB_USER_NAME, storeHandler, context);
            store.AddManager(TEST_MANAGER, TEST_OWNER, context);
            item    = store.AddItem("existing", 2, categories1, 3.55, context);
            itemID  = item.Id;
            storeID = store.Id;
        }
示例#2
0
        public void Setup()
        {
            inMemoryConnection = DbConnectionFactory.CreateTransient();
            using var context  = new MarketDbContext(inMemoryConnection);
            context.Init();

            RegisteredUser opener = new RegisteredUser("OPENER", new byte[] { });

            context.Users.Add(opener);

            Guid openerID = opener.ID;

            storeID = Guid.NewGuid();
            Store store = new Store(storeID, DataForTests.CreateTestContactDetails(), new PurchasePolicy(storeID), new DiscountPolicy(storeID), openerID, context);// only for consistency in Db

            context.Stores.Add(store);

            ////context.Categories.AddRange(categories);
            //foreach (Category category in categories)
            //{
            //    context.Categories.Add(category);
            //}

            id = Guid.NewGuid();
            //item = new Item(id, storeID, "item", 5, categories, 50);
            item = store.AddItem("item", 5, stringCategories, 50, context);
            id   = item.Id;
            //store.storeInventory.StoreItems.Add(item);
            //context.Items.Add(item);
            context.SaveChanges();
            //StoreInventory storeInventory = store.storeInventory;
            //storeInventory.StoreItems.Add(item);
            //context.SaveChanges();
        }
示例#3
0
        private void TestAllConditionsAndFilters(string nameToSearch, string nameToFind)
        {
            using var context = new MarketDbContext(inMemoryConnection);
            Store[] stores = DataForTests.CreateStoresForSearchTests(storeHandler, context);

            Dictionary <Guid, ReadOnlyCollection <Item> > results =
                searchFacade.SearchItems(
                    context: context,
                    filterItemRank: 0,
                    filterMinPrice: 20.4,
                    filterMaxPrice: 20.4,
                    filterStoreRank: 0,
                    name: nameToSearch,
                    category: "cat2",
                    keywords: new List <string>()
            {
                "word3"
            });

            Assert.AreEqual(2, results.Keys.Count);

            ReadOnlyCollection <Item> resultStore  = results[stores[0].Id];
            ReadOnlyCollection <Item> resultStore2 = results[stores[2].Id];

            Assert.AreEqual(nameToFind, resultStore[0].Name);
            Assert.AreEqual(nameToFind, resultStore2[0].Name);

            Assert.AreEqual(1, resultStore.Count);
            Assert.AreEqual(1, resultStore2.Count);
        }
示例#4
0
        public void SearchItems_ByName_NameCorrect_ShouldPass()
        {
            using var context = new MarketDbContext(inMemoryConnection);
            Store[] stores = DataForTests.CreateStoresForSearchTests(storeHandler, context);

            Dictionary <Guid, ReadOnlyCollection <Item> > results =
                searchFacade.SearchItems(
                    context: context,
                    filterItemRank: null,
                    filterMinPrice: null,
                    filterMaxPrice: null,
                    filterStoreRank: null,
                    name: "item one");

            Assert.AreEqual(3, results.Keys.Count);

            ReadOnlyCollection <Item> resultStore  = results[stores[0].Id];
            ReadOnlyCollection <Item> resultStore1 = results[stores[1].Id];
            ReadOnlyCollection <Item> resultStore2 = results[stores[2].Id];

            Assert.AreEqual("item one", resultStore[0].Name);
            Assert.AreEqual("item one", resultStore1[0].Name);
            Assert.AreEqual("item one", resultStore2[0].Name);

            Assert.AreEqual(1, resultStore.Count);
            Assert.AreEqual(1, resultStore1.Count);
            Assert.AreEqual(1, resultStore2.Count);
        }
示例#5
0
        public void SearchItems_ByName_spellMistake_SpellingCannotHelp_ShouldFail()
        {
            using var context = new MarketDbContext(inMemoryConnection);
            Store[] stores = DataForTests.CreateStoresForSearchTests(storeHandler, context);

            IStoreInventoryManager inventoryManager3 = storeHandler.GetStoreInventoryManager(stores[3].Id, context);

            inventoryManager3.AddItem("apple computer", 300, new HashSet <string>()
            {
                "electrical"
            }, 2000, context,
                                      keyWords: new HashSet <string>()
            {
                "computers", "electronic"
            });

            Dictionary <Guid, ReadOnlyCollection <Item> > results =
                searchFacade.SearchItems(context: context,
                                         filterItemRank: null,
                                         filterMinPrice: 11,
                                         filterMaxPrice: 2000,
                                         filterStoreRank: null,
                                         name: "paplee compuetr",
                                         category: "electrical");

            Assert.AreEqual(0, results.Keys.Count);
        }
示例#6
0
        public void Setup()
        {
            inMemoryConnection = DbConnectionFactory.CreateTransient();
            using var context  = new MarketDbContext(inMemoryConnection);
            context.Init();

            filterStoreRank  = new FilterByStoreRank(4);
            filterByItemRank = new FilterByItemRank(3);
            filterByPrice    = new FilterByPrice(5, 20.66);

            RegisteredUser owner = new RegisteredUser("OWNER", new byte[] { });

            context.Users.Add(owner);
            Guid Owner   = owner.ID;
            Guid storeID = Guid.NewGuid();

            store = new Store(storeID, DataForTests.CreateTestContactDetails(), new PurchasePolicy(storeID), new DiscountPolicy(storeID), Owner, context);
            context.Stores.Add(store);
            HashSet <Category> categories = new HashSet <Category>()
            {
                new Category("cat1"), new Category("cat2")
            };

            context.Categories.AddRange(categories);
            item = new Item(Guid.NewGuid(), store.Id, "name ", 2, categories, 3.55);
            context.Items.Add(item);
            context.SaveChanges();
        }
示例#7
0
        public void EditStoreContactDetails_ShouldPass()
        {
            using var context = new MarketDbContext(inMemoryConnection);
            storeHandler.OpenStore(DataForTests.CreateTestContactDetails(), Owner, context);

            Store store = storeHandler.GetStoreByName("store", context);

            Dictionary <StoresUtils.StoreEditContactDetails, object> newDetails = new Dictionary <StoresUtils.StoreEditContactDetails, object>()
            {
                { StoresUtils.StoreEditContactDetails.name, "newStore" },
                { StoresUtils.StoreEditContactDetails.email, "new email" },
                { StoresUtils.StoreEditContactDetails.address, "newAddress" },
                { StoresUtils.StoreEditContactDetails.bankAccountNumber, "888-222222/20" },
                { StoresUtils.StoreEditContactDetails.bank, "Poalim" },
            };

            Assert.IsTrue(storeHandler.EditStoreContactDetails(store.Id, newDetails, context));
            store = storeHandler.GetStoreById(store.Id, context);

            StoreContactDetails storeContactDetails = store.ContactDetails;

            Assert.AreEqual(storeContactDetails.Name, "newStore");
            Assert.AreEqual(storeContactDetails.Email, "new email");
            Assert.AreEqual(storeContactDetails.Address, "newAddress");
            Assert.AreEqual(storeContactDetails.Phone, "0544444444");
            Assert.AreEqual(storeContactDetails.BankAccountNumber, "888-222222/20");
            Assert.AreEqual(storeContactDetails.Bank, "Poalim");
            Assert.AreEqual(storeContactDetails.Description, "Store description");
        }
示例#8
0
        public void SearchItems_ByCategory_ShouldPass()
        {
            using var context = new MarketDbContext(inMemoryConnection);
            Store[] stores = DataForTests.CreateStoresForSearchTests(storeHandler, context);

            Dictionary <Guid, ReadOnlyCollection <Item> > results = storeHandler.SearchItems(context: context, category: "cat2");

            Assert.AreEqual(3, results.Keys.Count);

            ReadOnlyCollection <Item> resultStore  = results[stores[0].Id];
            ReadOnlyCollection <Item> resultStore1 = results[stores[1].Id];
            ReadOnlyCollection <Item> resultStore2 = results[stores[2].Id];

            Assert.AreEqual("item two", resultStore[0].Name);
            Assert.AreEqual("item three", resultStore[1].Name);

            Assert.AreEqual("item two", resultStore1[0].Name);
            Assert.AreEqual("item four", resultStore1[1].Name);
            Assert.AreEqual("item five", resultStore1[2].Name);

            Assert.AreEqual("item two", resultStore2[0].Name);
            Assert.AreEqual("item three", resultStore2[1].Name);
            Assert.AreEqual("item four", resultStore2[2].Name);
            Assert.AreEqual("item five", resultStore2[3].Name);


            Assert.AreEqual(2, resultStore.Count);
            Assert.AreEqual(3, resultStore1.Count);
            Assert.AreEqual(4, resultStore2.Count);
        }
示例#9
0
        public void SearchItems_ByName_PriceFilter_ShouldPass()
        {
            using var context = new MarketDbContext(inMemoryConnection);
            Store[] stores = DataForTests.CreateStoresForSearchTests(storeHandler, context);

            SearchFilter        priceFilter = new FilterByPrice(null, 20.4);
            List <SearchFilter> filters     = new List <SearchFilter>()
            {
                priceFilter
            };

            Dictionary <Guid, ReadOnlyCollection <Item> > results = storeHandler.SearchItems(context: context,
                                                                                             name: "item one",
                                                                                             filters: filters);

            Assert.AreEqual(2, results.Keys.Count);

            ReadOnlyCollection <Item> resultStore  = results[stores[0].Id];
            ReadOnlyCollection <Item> resultStore1 = results[stores[1].Id];

            Assert.AreEqual("item one", resultStore[0].Name);
            Assert.AreEqual("item one", resultStore1[0].Name);

            Assert.AreEqual(1, resultStore.Count);
            Assert.AreEqual(1, resultStore1.Count);
        }
示例#10
0
        public void SearchItems_ByNameAndCategoryAndKeyWords_FilterByPrice_SpellMistake_ShouldPass()
        {
            using var context = new MarketDbContext(inMemoryConnection);
            Store[] stores = DataForTests.CreateStoresForSearchTests(storeHandler, context);

            Dictionary <Guid, ReadOnlyCollection <Item> > results =
                searchFacade.SearchItems(context: context,
                                         filterItemRank: null,
                                         filterMinPrice: null,
                                         filterMaxPrice: 20.4,
                                         filterStoreRank: null,
                                         name: "itam one",
                                         category: "cat1",
                                         keywords: new List <string>()
            {
                "word1"
            });

            Assert.AreEqual(2, results.Keys.Count);

            ReadOnlyCollection <Item> resultStore  = results[stores[0].Id];
            ReadOnlyCollection <Item> resultStore1 = results[stores[1].Id];

            Assert.AreEqual("item one", resultStore[0].Name);
            Assert.AreEqual("item one", resultStore1[0].Name);

            Assert.AreEqual(1, resultStore.Count);
            Assert.AreEqual(1, resultStore1.Count);
        }
示例#11
0
        public void SearchItems_ByKeyWords_ShouldPass()
        {
            using var context = new MarketDbContext(inMemoryConnection);
            Store[] stores = DataForTests.CreateStoresForSearchTests(storeHandler, context);

            Dictionary <Guid, ReadOnlyCollection <Item> > results =
                searchFacade.SearchItems(context: context,
                                         filterItemRank: null,
                                         filterMinPrice: null,
                                         filterMaxPrice: null,
                                         filterStoreRank: null,
                                         keywords: new List <string>()
            {
                "word50"
            });

            Assert.AreEqual(2, results.Keys.Count);

            ReadOnlyCollection <Item> resultStore1 = results[stores[1].Id];
            ReadOnlyCollection <Item> resultStore3 = results[stores[3].Id];

            Assert.AreEqual("item five", resultStore1[0].Name);
            Assert.AreEqual("item twenty", resultStore3[0].Name);

            Assert.AreEqual(1, resultStore1.Count);
            Assert.AreEqual(1, resultStore3.Count);
        }
示例#12
0
        private ResponseClass DeserializeOpenStore(Guid sessionID, string storeName)
        {
            StoreContactDetails details = DataForTests.CreateTestContactDetails();
            string json = marketFacade.OpenStore(sessionID, storeName, details.Email, details.Address, details.Phone, details.BankAccountNumber,
                                                 details.Bank, details.Description, null, null);

            return(JsonConvert.DeserializeObject <ResponseClass>(json));
        }
示例#13
0
        public void SearchItems_ByName_NoSuchName_ShouldFail()
        {
            using var context = new MarketDbContext(inMemoryConnection);
            Store[] stores = DataForTests.CreateStoresForSearchTests(storeHandler, context);

            Dictionary <Guid, ReadOnlyCollection <Item> > results = storeHandler.SearchItems(context: context, name: "noSuchName");

            Assert.AreEqual(0, results.Keys.Count);
        }
示例#14
0
        public void OpenStore_AndTryAnotherSameOne_ShouldFail()
        {
            using var context = new MarketDbContext(inMemoryConnection);
            Assert.DoesNotThrow(() => storeHandler.OpenStore(DataForTests.CreateTestContactDetails(), Owner, context));

            Assert.Throws(Is.TypeOf <StoreAlreadyExistException>()
                          .And.Message.EqualTo(string.Format("Store with name {0} already exists", "store")),
                          () => storeHandler.OpenStore(DataForTests.CreateTestContactDetails(), Owner, context));
        }
示例#15
0
        public void GetStoreByName_NoSuchStore_ShouldFail()
        {
            using var context = new MarketDbContext(inMemoryConnection);
            storeHandler.OpenStore(DataForTests.CreateTestContactDetails(), Owner, context); //just for initialization

            Assert.Throws(Is.TypeOf <StoreNotFoundException>()
                          .And.Message.EqualTo(string.Format("Invalid store name: {0}", "NoStoreName")),
                          () => storeHandler.GetStoreByName("NoStoreName", context));
        }
示例#16
0
        public void GetAllStoresInformation_StoreHasNoItems_ShouldPass()
        {
            using var context = new MarketDbContext(inMemoryConnection);
            Store store = storeHandler.OpenStore(DataForTests.CreateTestContactDetails(), Owner, context);

            ReadOnlyCollection <Store> data = searchFacade.GetAllStoresInformation(context);

            Assert.AreEqual(1, data.Count);
            Assert.IsTrue(data.Contains(store));
            Assert.AreEqual(0, store.GetStoreItems().Count);
        }
示例#17
0
        public void SetStoreRankById_ShouldPass()
        {
            using var context = new MarketDbContext(inMemoryConnection);
            storeHandler.OpenStore(DataForTests.CreateTestContactDetails(), Owner, context);
            Store store = storeHandler.GetStoreByName("store", context);

            storeHandler.SetStoreRankById(store.Id, 3.33, context);

            store = storeHandler.GetStoreByName("store", context);
            Assert.AreEqual(3.33, store.Rank);
        }
示例#18
0
        public void GetStoreById_NoSuchStore_ShouldPass()
        {
            using var context = new MarketDbContext(inMemoryConnection);
            storeHandler.OpenStore(DataForTests.CreateTestContactDetails(), Owner, context); //just for initialization

            Guid fakeId = Guid.NewGuid();

            Assert.Throws(Is.TypeOf <StoreNotFoundException>()
                          .And.Message.EqualTo(string.Format("Invalid Store id: {0}", fakeId)),
                          () => storeHandler.GetStoreById(fakeId, context));
        }
示例#19
0
        public void GetStoreCertificationManager_ShouldPass()
        {
            using var context = new MarketDbContext(inMemoryConnection);
            StoreContactDetails storeContactDetails = DataForTests.CreateTestContactDetails();

            storeHandler.OpenStore(storeContactDetails, Owner, context);

            Store store = storeHandler.GetStoreByName("store", context);
            IStoreCertificationManager scm = storeHandler.GetStoreCertificationManager(store.Id, context);

            Assert.AreEqual(store, scm);
        }
示例#20
0
        public void SearchItems_ByCategory_StoreRankFilterItemRankFilter_ShouldPass()
        {
            using var context = new MarketDbContext(inMemoryConnection);
            SearchFilter        storeRankFilter = new FilterByStoreRank(4.5);
            SearchFilter        itemRankFilter  = new FilterByItemRank(6.5);
            List <SearchFilter> filters         = new List <SearchFilter>()
            {
                storeRankFilter, itemRankFilter
            };

            Store[] stores = DataForTests.CreateStoresForSearchTests(storeHandler, context);

            storeHandler.SetStoreRankById(stores[0].Id, 4.5, context);
            storeHandler.SetStoreRankById(stores[1].Id, 3, context);

            //update rank of item2 of "store"
            ReadOnlyCollection <Item> items_Store = stores[0].GetStoreItems();
            Guid itemId2 = items_Store[1].Id;

            Dictionary <StoresUtils.ItemEditDetails, object> newDetails_item2 = new Dictionary <StoresUtils.ItemEditDetails, object>()
            {
                { StoresUtils.ItemEditDetails.rank, 6.5 }
            };

            IStoreInventoryManager storeInventoryManager = storeHandler.GetStoreInventoryManager(stores[0].Id, context);

            storeInventoryManager.EditItem(itemId2, newDetails_item2, context);

            //update rank of item5 of "store1"
            ReadOnlyCollection <Item> items_Store1 = stores[1].GetStoreItems();
            Guid itemId5 = items_Store1[3].Id;

            Dictionary <StoresUtils.ItemEditDetails, object> newDetails_item5 = new Dictionary <StoresUtils.ItemEditDetails, object>()
            {
                { StoresUtils.ItemEditDetails.rank, 6.9 }
            };

            IStoreInventoryManager storeInventoryManager1 = storeHandler.GetStoreInventoryManager(stores[1].Id, context);

            storeInventoryManager1.EditItem(itemId5, newDetails_item5, context);

            //start search test
            Dictionary <Guid, ReadOnlyCollection <Item> > results = storeHandler.SearchItems(context: context, category: "cat2",
                                                                                             filters: filters);

            Assert.AreEqual(1, results.Keys.Count);

            ReadOnlyCollection <Item> resultStore = results[stores[0].Id];

            Assert.AreEqual("item two", resultStore[0].Name);

            Assert.AreEqual(1, resultStore.Count);
        }
示例#21
0
        public void GetAllStoresInformation_ShouldPass()
        {
            using var context = new MarketDbContext(inMemoryConnection);
            Store[] stores = DataForTests.CreateStoresForSearchTests(storeHandler, context);

            ReadOnlyCollection <Store> data = searchFacade.GetAllStoresInformation(context);

            Assert.AreEqual(4, data.Count);

            foreach (Store store in stores)
            {
                Assert.IsTrue(data.Contains(store));
            }
        }
示例#22
0
        public void GetStoreById_ShouldPass()
        {
            using var context = new MarketDbContext(inMemoryConnection);
            storeHandler.OpenStore(DataForTests.CreateTestContactDetails(), Owner, context);

            StoreContactDetails storeContactDetails2 = DataForTests.CreateTestContactDetails();

            storeContactDetails2.Name = "store2";
            storeHandler.OpenStore(storeContactDetails2, Owner, context);

            Store store = storeHandler.GetStoreByName("store", context);

            Assert.AreEqual(store, storeHandler.GetStoreById(store.Id, context));
        }
示例#23
0
        public void SearchItems_ByName_NoSuchName_SpellCheckerShouldNotFindAnswer_ShouldFail()
        {
            using var context = new MarketDbContext(inMemoryConnection);
            Store[] stores = DataForTests.CreateStoresForSearchTests(storeHandler, context);

            Dictionary <Guid, ReadOnlyCollection <Item> > results =
                searchFacade.SearchItems(context: context,
                                         filterItemRank: null,
                                         filterMinPrice: null,
                                         filterMaxPrice: null,
                                         filterStoreRank: null,
                                         name: "noSuchName");

            Assert.AreEqual(0, results.Keys.Count);
        }
示例#24
0
        public void OpenStore_ShouldPass()
        {
            using var context = new MarketDbContext(inMemoryConnection);
            Store s = null;

            Assert.DoesNotThrow(() => s = storeHandler.OpenStore(DataForTests.CreateTestContactDetails(), Owner, context));

            Assert.AreEqual("store", s.ContactDetails.Name);
            Assert.AreEqual("*****@*****.**", s.ContactDetails.Email);
            Assert.AreEqual("Address", s.ContactDetails.Address);
            Assert.AreEqual("0544444444", s.ContactDetails.Phone);
            Assert.AreEqual("888-444444/34", s.ContactDetails.BankAccountNumber);
            Assert.AreEqual("Leumi", s.ContactDetails.Bank);
            Assert.AreEqual("Store description", s.ContactDetails.Description);
        }
示例#25
0
        public void SearchItems_RequestAllItems_ShouldPass()
        {
            using var context = new MarketDbContext(inMemoryConnection);
            Store[] stores = DataForTests.CreateStoresForSearchTests(storeHandler, context);

            Dictionary <Guid, ReadOnlyCollection <Item> > results = storeHandler.SearchItems(context: context);

            Assert.AreEqual(4, results.Keys.Count);

            ReadOnlyCollection <Item> resultStore  = results[stores[0].Id];
            ReadOnlyCollection <Item> resultStore1 = results[stores[1].Id];
            ReadOnlyCollection <Item> resultStore2 = results[stores[2].Id];
            ReadOnlyCollection <Item> resultStore3 = results[stores[3].Id];

            Assert.AreEqual(3, resultStore.Count);
            Assert.AreEqual(4, resultStore1.Count);
            Assert.AreEqual(5, resultStore2.Count);
            Assert.AreEqual(1, resultStore3.Count);
        }
示例#26
0
        public void Setup()
        {
            inMemoryConnection = DbConnectionFactory.CreateTransient();
            using var context  = new MarketDbContext(inMemoryConnection);
            context.Init();
            storeID = Guid.NewGuid();
            RegisteredUser owner = new RegisteredUser("OWNER", new byte[] { });

            context.Users.Add(owner);
            context.SaveChanges();
            Guid  Owner = owner.ID;
            Store store = new Store(storeID, DataForTests.CreateTestContactDetails(), new PurchasePolicy(storeID), new DiscountPolicy(storeID), Owner, context);

            context.Stores.Add(store);
            context.SaveChanges();
            storeInventory = store.storeInventory;
            categories1    = new HashSet <string>()
            {
                "cat1"
            };
            categories2 = new HashSet <string>()
            {
                "cat1", "cat2"
            };
            categories3 = new HashSet <string>()
            {
                "cat1", "cat2", "cat3"
            };
            keywords1 = new HashSet <string>()
            {
                "word1"
            };
            keywords2 = new HashSet <string>()
            {
                "word1", "word2"
            };
            keywords3 = new HashSet <string>()
            {
                "word1", "word2", "word3"
            };
        }
示例#27
0
        public void GetStores_ShouldPass()
        {
            using var context = new MarketDbContext(inMemoryConnection);
            StoreContactDetails storeContactDetails = DataForTests.CreateTestContactDetails();

            storeHandler.OpenStore(storeContactDetails, Owner, context);
            Store store = storeHandler.GetStoreByName(storeContactDetails.Name, context);

            Assert.IsTrue(storeHandler.Stores(context).Contains(store));
            Assert.AreEqual(1, storeHandler.Stores(context).Count);

            StoreContactDetails storeContactDetails2 = DataForTests.CreateTestContactDetails();

            storeContactDetails2.Name = "store2";
            storeHandler.OpenStore(storeContactDetails2, Owner, context);
            Store store2 = storeHandler.GetStoreByName(storeContactDetails.Name, context);

            Assert.IsTrue(storeHandler.Stores(context).Contains(store));
            Assert.IsTrue(storeHandler.Stores(context).Contains(store2));
            Assert.AreEqual(2, storeHandler.Stores(context).Count);
        }
示例#28
0
        public void SearchItems_ByCategory_WithPriceFilter_NoSuchItems_ShouldFail()
        {
            using var context = new MarketDbContext(inMemoryConnection);
            Store[] stores = DataForTests.CreateStoresForSearchTests(storeHandler, context);

            SearchFilter        priceFilter = new FilterByPrice(null, 3);
            List <SearchFilter> filters     = new List <SearchFilter>()
            {
                priceFilter
            };

            Dictionary <Guid, ReadOnlyCollection <Item> > results =
                searchFacade.SearchItems(context: context,
                                         filterItemRank: null,
                                         filterMinPrice: null,
                                         filterMaxPrice: 3,
                                         filterStoreRank: null,
                                         category: "cat2");

            Assert.AreEqual(0, results.Keys.Count);
        }
示例#29
0
        public void EditStoreContactDetails_EditNameToExistingStoreName_ShouldFail()
        {
            using var context = new MarketDbContext(inMemoryConnection);
            StoreContactDetails storeContactDetails1 = DataForTests.CreateTestContactDetails();

            storeHandler.OpenStore(storeContactDetails1, Owner, context);

            StoreContactDetails storeContactDetails2 = DataForTests.CreateTestContactDetails();

            storeContactDetails2.Name = "store2";
            storeHandler.OpenStore(storeContactDetails2, Owner, context);

            Store store = storeHandler.GetStoreByName("store", context);

            Dictionary <StoresUtils.StoreEditContactDetails, object> newDetails = new Dictionary <StoresUtils.StoreEditContactDetails, object>()
            {
                { StoresUtils.StoreEditContactDetails.name, "store2" },
            };

            Assert.Throws(Is.TypeOf <StoreAlreadyExistException>()
                          .And.Message.EqualTo(string.Format("Store with name {0} already exists", "store2")),
                          () => storeHandler.EditStoreContactDetails(store.Id, newDetails, context));
        }