public async Task Remove_InvalidatesCachedCart() { var shoppingCartService = new MockShoppingCartService { RemoveShoppingCartItemDelegate = (s, s1) => Task.FromResult(string.Empty), GetShoppingCartAsyncDelegate = s => Task.FromResult(new ShoppingCart(new Collection<ShoppingCartItem>()) {Id = "first"}) }; var eventAggregator = new MockEventAggregator { GetEventDelegate = type => new ShoppingCartItemUpdatedEvent() }; var target = new ShoppingCartRepository(shoppingCartService, null, eventAggregator, null, new MockSuspensionManagerState()); var firstCartReturned = await target.GetShoppingCartAsync(); await target.RemoveShoppingCartItemAsync("TestShoppingCartItemId"); shoppingCartService.GetShoppingCartAsyncDelegate = s => Task.FromResult(new ShoppingCart(new Collection<ShoppingCartItem>()) { Id = "second" }); var secondCartReturned = await target.GetShoppingCartAsync(); Assert.IsNotNull(firstCartReturned); Assert.IsNotNull(secondCartReturned); Assert.AreNotSame(firstCartReturned, secondCartReturned); }
public async Task GetShoppingCartAsync_CachesCart() { var shoppingCart = new ShoppingCart(new Collection<ShoppingCartItem>()); var shoppingCartService = new MockShoppingCartService() { GetShoppingCartAsyncDelegate = s => Task.FromResult(shoppingCart) }; var target = new ShoppingCartRepository(shoppingCartService, null, null, null, new MockSuspensionManagerState()); var firstCartReturned = await target.GetShoppingCartAsync(); shoppingCartService.GetShoppingCartAsyncDelegate = s => { Assert.Fail("Should not have called proxy second time."); return Task.FromResult((ShoppingCart)null); }; var secondCartReturned = await target.GetShoppingCartAsync(); Assert.AreSame(shoppingCart, firstCartReturned); Assert.AreSame(shoppingCart, secondCartReturned); }