public void TryGetReturnsEntryInCache() { var mockRepository = new MockRepository(MockBehavior.Strict); var stockResolver = mockRepository.Create <IStockResolver>(MockBehavior.Loose); var portfolioFactory = new PortfolioFactory(stockResolver.Object); var id = Guid.NewGuid(); var portfolio = portfolioFactory.CreatePortfolio(id); var repositry = mockRepository.Create <IRepository <Portfolio> >(); var memoryCache = mockRepository.Create <IMemoryCache>(); object portfolioObject = portfolio; memoryCache.Setup(x => x.TryGetValue(id, out portfolioObject)).Returns(true); var cache = new PortfolioCache(repositry.Object, memoryCache.Object); var result = cache.TryGet(id, out var cachedPortfolio); result.Should().BeTrue(); cachedPortfolio.Should().Be(portfolio); mockRepository.VerifyAll(); }
public void TryGetFetchesEntryNotInCache() { var mockRepository = new MockRepository(MockBehavior.Strict); var stockResolver = mockRepository.Create <IStockResolver>(MockBehavior.Loose); var portfolioFactory = new PortfolioFactory(stockResolver.Object); var id = Guid.NewGuid(); var portfolio = portfolioFactory.CreatePortfolio(id); var repositry = mockRepository.Create <IRepository <Portfolio> >(); repositry.Setup(x => x.Get(id)).Returns(portfolio).Verifiable(); var cacheEntry = mockRepository.Create <ICacheEntry>(MockBehavior.Loose); cacheEntry.SetupSet(x => x.Value = portfolio).Verifiable(); var memoryCache = mockRepository.Create <IMemoryCache>(); memoryCache.Setup(x => x.TryGetValue(id, out It.Ref <object> .IsAny)).Returns(false); memoryCache.Setup(x => x.CreateEntry(id)).Returns(cacheEntry.Object).Verifiable(); var cache = new PortfolioCache(repositry.Object, memoryCache.Object); var result = cache.TryGet(id, out var cachedPortfolio); result.Should().BeTrue(); cachedPortfolio.Should().Be(portfolio); mockRepository.VerifyAll(); }
public void TryGetEntryDoesNotExist() { var mockRepository = new MockRepository(MockBehavior.Strict); var id = Guid.NewGuid(); Portfolio portfolio = null; var repositry = mockRepository.Create <IRepository <Portfolio> >(); repositry.Setup(x => x.Get(id)).Returns(portfolio); var memoryCache = mockRepository.Create <IMemoryCache>(); memoryCache.Setup(x => x.TryGetValue(id, out It.Ref <object> .IsAny)).Returns(false); var cache = new PortfolioCache(repositry.Object, memoryCache.Object); var result = cache.TryGet(id, out var cachedPortfolio); result.Should().BeFalse(); mockRepository.VerifyAll(); }
public void GetEntryDoesNotExist() { var mockRepository = new MockRepository(MockBehavior.Strict); var id = Guid.NewGuid(); Portfolio portfolio = null; var repositry = mockRepository.Create <IRepository <Portfolio> >(); repositry.Setup(x => x.Get(id)).Returns(portfolio); var memoryCache = mockRepository.Create <IMemoryCache>(); memoryCache.Setup(x => x.TryGetValue(id, out It.Ref <object> .IsAny)).Returns(false); var cache = new PortfolioCache(repositry.Object, memoryCache.Object); IReadOnlyPortfolio cachedPortfolio; Action a = () => cachedPortfolio = cache.Get(id); a.Should().ThrowExactly <KeyNotFoundException>(); mockRepository.VerifyAll(); }