public async void GetLongUrl_CacheNoneCacheTest() { var mockRepo = new Mock <IUrlRepository>(); var mockLogger = new Mock <ILogger <UrlShorteningService> >(); var mockCache = new Mock <ICacheService>(); var service = new UrlShorteningService(_settings, mockRepo.Object, mockCache.Object, mockLogger.Object); var shortUrlCode = "aBcDeF"; var pk = "aBc"; var longUrl = "https://example.com"; mockCache.SetupSequence(c => c.GetCache(shortUrlCode)) .Returns(longUrl) .Returns(string.Empty); // get value from cache Assert.Equal(longUrl, service.GetLongUrl(shortUrlCode).Result.Data); // check if cache set and repo called mockRepo.Setup(r => r.GetRedirectOptimizedUrl(pk, shortUrlCode)) .Returns(Task.FromResult(new Url(pk, shortUrlCode, longUrl))); await service.GetLongUrl(shortUrlCode); mockRepo.Verify(v => v.GetRedirectOptimizedUrl(pk, shortUrlCode), Times.Once); mockCache.Verify(c => c.SetCache(shortUrlCode, longUrl), Times.Once); }
public void GetLongUrl_CacheThrowException() { var mockRepo = new Mock <IUrlRepository>(); var mockLogger = new Mock <ILogger <UrlShorteningService> >(); var mockCache = new Mock <ICacheService>(); var service = new UrlShorteningService(_settings, mockRepo.Object, mockCache.Object, mockLogger.Object); var shortUrlCode = "aBcDeF"; string cacheEx = "Cache Exception"; mockCache.Setup(c => c.GetCache(shortUrlCode)) .Throws(new Exception(cacheEx)); Assert.Equal(cacheEx, service.GetLongUrl(shortUrlCode).Result.Error); }
public void GetLongUrl_RepoThrowException() { var mockRepo = new Mock <IUrlRepository>(); var mockLogger = new Mock <ILogger <UrlShorteningService> >(); var mockCache = new Mock <ICacheService>(); var service = new UrlShorteningService(_settings, mockRepo.Object, mockCache.Object, mockLogger.Object); var shortUrlCode = "aBcDeF"; var pk = "aBc"; string repoEx = "Repo Exception"; mockRepo.Setup(r => r.GetRedirectOptimizedUrl(pk, shortUrlCode)) .Throws(new Exception(repoEx)); Assert.Equal(repoEx, service.GetLongUrl(shortUrlCode).Result.Error); }