Reborn() public method

Refresh the cache and change the internal IPhoenixState to avoid refreshing too many unnecessary times

The call will happen in background so the caller will not have to wait

public Reborn ( ) : void
return void
コード例 #1
0
ファイル: PhoenixTests.cs プロジェクト: minhkiller/Flatwhite
        public void The_method_Reborn_should_try_to_refresh_the_cache()
        {
            // Arrange
            var wait = SetUp("GetById");
            var phoenix = new Phoenix(_invocation, CacheInfo);

            // Action
            phoenix.Reborn();

            // Assert
            Assert.IsTrue(wait.WaitOne(2000));
            Global.CacheStoreProvider.GetCacheStore(StoreId).Received(1)
                .Set("cacheKey", Arg.Is<object>(obj => _id.Equals(((CacheItem) obj).Data)), Arg.Any<DateTimeOffset>());
        }
コード例 #2
0
        public void The_method_Reborn_should_dispose_and_return_DisposingPhoenix_if_cannot_create_new_cacheItem()
        {
            // Arrange
            var svc = Substitute.For<IUserService>();
            svc.GetById(Arg.Any<Guid>()).Returns(null);
            var wait = SetUp(nameof(IUserService.GetById), svc);
            var phoenix = new Phoenix(_invocation, CacheInfo);

            // Action
            phoenix.Reborn();
            Assert.IsTrue(wait.WaitOne(_waitTime));
            // Assert
            var storeId = Global.CacheStoreProvider.GetAsyncCacheStore(StoreId);
            storeId.Received(1).RemoveAsync("cacheKey");
        }
コード例 #3
0
        public void The_method_Reborn_should_throw_if_error_and_retry_after_1_second()
        {
            // Arrange
            var svc = Substitute.For<IUserService>();
            var wait = SetUp(nameof(IUserService.GetById), svc);
            svc.When(x => x.GetById(Arg.Any<Guid>())).Do(c =>
            {
                wait.Set();
                throw new Exception();
            });
            
            var phoenix = new Phoenix(_invocation, CacheInfo);

            // Action
            phoenix.Reborn();
            Assert.IsTrue(wait.WaitOne(_waitTime));
            wait.Reset();
            Assert.IsTrue(wait.WaitOne(_waitTime));

            // Assert
            svc.Received(2).GetById(Arg.Any<Guid>());
        }
コード例 #4
0
        public void The_method_Reborn_should_work_with_async_method()
        {
            // Arrange
            var wait = SetUp(nameof(IUserService.GetByIdAsync));
            var phoenix = new Phoenix(_invocation, CacheInfo);

            // Action
            phoenix.Reborn();

            // Assert
            Assert.IsTrue(wait.WaitOne(_waitTime));
            Global.CacheStoreProvider.GetAsyncCacheStore(StoreId).Received(1)
                .SetAsync("cacheKey", Arg.Is<object>(obj => _id.Equals(((CacheItem)obj).Data)), Arg.Any<DateTimeOffset>());
        }