public void ShouldProvideInstanceOfExpectedType()
        {
            var cacheServiceProvider = new HybridCacheServiceProvider();
            var cacheService         = cacheServiceProvider.GetCacheService(_context);

            Assert.That(cacheService, Is.TypeOf(typeof(HybridCacheService)));
        }
        public void MonorailServiceUsedWhenCacheGetIsCalled()
        {
            _context.Services.CacheProvider.Expect(x => x.Get("hello")).Return("world");

            var cacheServiceProvider = new HybridCacheServiceProvider();
            var cacheService         = cacheServiceProvider.GetCacheService(_context);
            var data = cacheService.Get("hello");

            Assert.That(data, Is.EqualTo("world"));

            _context.Services.CacheProvider.VerifyAllExpectations();
        }
        public void StoreShouldUseTheMonorailServiceWhenExpiresAndSignalAreNotProvided()
        {
            _context.Services.CacheProvider.Expect(x => x.Store("foo1", "bar1"));
            _context.Services.CacheProvider.Expect(x => x.Store("foo2", "bar2"));
            _context.Services.CacheProvider.Expect(x => x.Store("foo3", "bar3"));
            _context.Services.CacheProvider.Expect(x => x.Store("foo4", "bar4"));

            var cacheServiceProvider = new HybridCacheServiceProvider();
            var cacheService         = cacheServiceProvider.GetCacheService(_context);

            cacheService.Store("foo1", null, null, "bar1");
            cacheService.Store("foo2", new CacheExpires(), null, "bar2");
            cacheService.Store("foo3", new CacheExpires(CacheExpires.NoAbsoluteExpiration), null, "bar3");
            cacheService.Store("foo4", new CacheExpires(CacheExpires.NoSlidingExpiration), null, "bar4");

            _context.Services.CacheProvider.VerifyAllExpectations();
        }
        public void StoreShouldUseHttpContextCacheWhenExpiresOrSignalAreProvided()
        {
            _context.Services.CacheProvider
            .Expect(x => x.Store(null, null))
            .IgnoreArguments()
            .Repeat.Never();

            var signal = MockRepository.GenerateStub <ICacheSignal>();

            var cacheServiceProvider = new HybridCacheServiceProvider();
            var cacheService         = cacheServiceProvider.GetCacheService(_context);

            cacheService.Store("foo1", new CacheExpires(4), null, "bar1");
            cacheService.Store("foo2", new CacheExpires(TimeSpan.FromMinutes(2)), null, "bar2");
            cacheService.Store("foo3", new CacheExpires(DateTime.UtcNow.AddSeconds(4)), null, "bar3");
            cacheService.Store("foo4", null, signal, "bar4");

            _context.Services.CacheProvider.VerifyAllExpectations();
        }
        public void StoreAndGetToBothMonorailAndHttpCacheWorkSideBySide()
        {
            _context.Services.CacheProvider.Expect(x => x.Store("xfoo1", "bar1"));
            _context.Services.CacheProvider.Expect(x => x.Store("xfoo2", "bar2")).Repeat.Never();
            _context.Services.CacheProvider.Expect(x => x.Get("xfoo1")).Return("bar1");
            _context.Services.CacheProvider.Expect(x => x.Get("xfoo2")).Return(null);
            _context.Services.CacheProvider.Expect(x => x.Get("xfoo3")).Return(null);

            var signal = MockRepository.GenerateStub <ICacheSignal>();

            var cacheServiceProvider = new HybridCacheServiceProvider();
            var cacheService         = cacheServiceProvider.GetCacheService(_context);

            cacheService.Store("xfoo1", null, null, "bar1");
            cacheService.Store("xfoo2", null, signal, "bar2");

            Assert.That(cacheService.Get("xfoo1"), Is.EqualTo("bar1"));
            Assert.That(cacheService.Get("xfoo2"), Is.EqualTo("bar2"));
            Assert.That(cacheService.Get("xfoo3"), Is.Null);

            _context.Services.CacheProvider.VerifyAllExpectations();
        }