public async Task FailureIsNotCachedAsync() { using MemoryCache memoryCache = new(new MemoryCacheOptions()); IdempotencyRequestCache cache = new(memoryCache); SimpleRequestType request = new(); // A request that is presented for the first time. SimpleResponseType preparedResponse = new(); // Pre-prepared response for testing purposes. // First request. InvalidOperationException ex1 = await Assert.ThrowsAsync <InvalidOperationException>(() => cache.GetCachedResponseAsync(request, action: ExceptionAsync)); // Second request. SimpleResponseType response = await cache.GetCachedResponseAsync(request, action : SuccessAsync); Assert.Same(preparedResponse, response); Task <SimpleResponseType> ExceptionAsync(SimpleRequestType request, CancellationToken cancellationToken) { throw new InvalidOperationException(); } Task <SimpleResponseType> SuccessAsync(SimpleRequestType request, CancellationToken cancellationToken) { return(Task.FromResult(preparedResponse)); } }
public async Task BasicCacheBehaviorAsync() { using MemoryCache memoryCache = new(new MemoryCacheOptions()); IdempotencyRequestCache cache = new(memoryCache); SimpleRequestType request = new(); // A request that is presented for the first time. SimpleResponseType preparedResponse = new(); // Pre-prepared response for testing purposes. SimpleResponseType response = await cache.GetCachedResponseAsync(request, action : (request, cancellationToken) => Task.FromResult(preparedResponse)); // Verify that the response is really what we pre-prepared Assert.NotNull(response); Assert.IsType <SimpleResponseType>(response); Assert.Same(preparedResponse, response); // Compare by reference. }
public SimpleResponseElement(string content, SimpleResponseType type) { Content = content; Type = type; }