예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }