public void Initialize()
 {
     subscriptionService = new Mock <ISubscriptionService>();
     cacheClient         = new Mock <ICacheClient>();
     cache = new CacheClientEventSubscriptionCache
     {
         SubscriptionService = subscriptionService.Object,
         CacheClient         = cacheClient.Object
     };
 }
            public void WhenGetAllAndCached_ThenReturnsSubscriptions()
            {
                var config      = new SubscriptionRelayConfig();
                var subscribers = new List <SubscriptionRelayConfig>
                {
                    config
                };

                cacheClient.Setup(cc => cc.Get <CachedSubscription>(It.IsAny <string>()))
                .Returns(new CachedSubscription
                {
                    Subscribers = subscribers
                });

                var result = cache.GetAll("aneventname");

                Assert.That(result.Count, Is.EqualTo(1));
                Assert.That(result[0], Is.EqualTo(config));

                cacheClient.Verify(cc => cc.Get <CachedSubscription>(CacheClientEventSubscriptionCache.FormatCacheKey("aneventname")));
                subscriptionService.Verify(ss => ss.Search(It.IsAny <string>()), Times.Never);
                cacheClient.Verify(cc => cc.Set(It.IsAny <string>(), It.IsAny <CachedSubscription>()), Times.Never);
            }
            public void WhenGetAllAndNothingInCache_ThenCachesSubscriptions()
            {
                var config      = new SubscriptionRelayConfig();
                var subscribers = new List <SubscriptionRelayConfig>
                {
                    config
                };

                cacheClient.Setup(cc => cc.Get <CachedSubscription>(It.IsAny <string>()))
                .Returns((CachedSubscription)null);
                subscriptionService.Setup(ss => ss.Search(It.IsAny <string>()))
                .Returns(subscribers);

                var result = cache.GetAll("aneventname");

                Assert.That(result.Count, Is.EqualTo(1));
                Assert.That(result[0], Is.EqualTo(config));

                cacheClient.Verify(cc => cc.Get <CachedSubscription>(CacheClientEventSubscriptionCache.FormatCacheKey("aneventname")));
                subscriptionService.Verify(ss => ss.Search("aneventname"));
                cacheClient.Verify(cc => cc.Set(CacheClientEventSubscriptionCache.FormatCacheKey("aneventname"), It.Is <CachedSubscription>(cs =>
                                                                                                                                            cs.Subscribers == subscribers), TimeSpan.FromSeconds(cache.ExpiryTimeSeconds)));
            }