Example #1
0
        public async Task InvokeCacheAsync_Bypass_ShouldReturnNewValueAndCache()
        {
            using var fixture = new ExpressionCacheBaseFixture();
            fixture.SetCacheProviderGetAsyncSuccess();
            var key = fixture.ExpressionCacheBase.GetKey(() => _testFunctions.FunctionWithoutParametersAsync());

            var result = await fixture.ExpressionCacheBase.InvokeCacheAsync(() => _testFunctions.FunctionWithoutParametersAsync(), ExpressionCacheBaseFixture.TimeSpan, CacheAction.Bypass);

            result.Should().Be(TestFunctionsFixture.ReturnResult);
            fixture.CacheProviderMock.Verify(m => m.GetAsync <string>(key), Times.Never);
            fixture.CacheProviderMock.Verify(m => m.SetAsync(key, result, ExpressionCacheBaseFixture.TimeSpan), Times.Never);
        }
        public async Task InvokeCacheAsync_Overwrite_ShouldReturnFunctionResult()
        {
            using (var fixture = new ExpressionCacheBaseFixture())
            {
                fixture.SetCacheProviderGetAsyncSuccess();
                var key = fixture.ExpressionCacheBase.GetKey(() => _testFunctions.FunctionWithoutParametersAsync());

                var result = await fixture.ExpressionCacheBase.InvokeCacheAsync(() => _testFunctions.FunctionWithoutParametersAsync(), ExpressionCacheBaseFixture.TimeSpan, CacheAction.Overwrite);

                result.ShouldBe(_testFunctions.ReturnResult);
                fixture.CacheProviderMock.Verify(m => m.GetAsync <string>(key), Times.Never);
                fixture.CacheProviderMock.Verify(m => m.SetAsync(key, result, ExpressionCacheBaseFixture.TimeSpan), Times.Once);
            }
        }