// ReSharper disable once TooManyDeclarations public async void CachingBehavior_CallHandlerWithCacheableRequest_ReturnCachedObject() { // Arrange var cacheableRequest = new FooRequestCacheable(TimeSpan.FromMilliseconds(10)); var cachedObjectTime = DateTime.UtcNow; var actual = new RefTypeObject { Foo = 1, Bar = "bar", Created = cachedObjectTime }; var sut = new CachingBehavior <FooRequestCacheable, RefTypeObject>(_cache, _loggerFactory); // Act // call delegate, cache and return result await sut.Handle(cacheableRequest, CancellationToken.None, async() => await Task.FromResult(actual)); // waiting to spend some time await Task.Delay(5); // return cached result, even-though wrong result expected from delegate var expected = await sut.Handle(cacheableRequest, CancellationToken.None, async() => await Task.FromResult(new RefTypeObject())); // Assert Assert.Equal(expected.Created, cachedObjectTime); }
public Task<IHalHttpClient> CreateClientAsync(HttpMessageHandler httpMessageHandler, CachingBehavior apiRootCachingBehavior = CachingBehavior.Never) { if (httpMessageHandler == null) throw new ArgumentNullException(nameof(httpMessageHandler)); return CreateHalHttpClientAsync(GetHttpClient(httpMessageHandler), apiRootCachingBehavior); }
public async void CachingBehavior_CallHandlerWithNormalRequest_ReturnExpectedObject() { //Given var request = new FooRequest(); var actual = new RefTypeObject { Foo = 1, Bar = "bar", Created = DateTime.UtcNow }; var sut = new CachingBehavior <FooRequest, RefTypeObject>(_cache, _loggerFactory); //When var expected = await sut.Handle(request, CancellationToken.None, async() => await Task.FromResult(actual)); //Then Assert.Equal(expected, actual); }
public Task <IHalHttpClient> CreateClientAsync(HttpClient httpClient, T context, CachingBehavior apiRootCachingBehavior = CachingBehavior.Never) { if (httpClient == null) { throw new ArgumentNullException(nameof(httpClient)); } return(CreateHalHttpClientAsync(httpClient, context, apiRootCachingBehavior)); }
public Task <IHalHttpClient> CreateClientAsync(T context, CachingBehavior apiRootCachingBehavior = CachingBehavior.Never) { return(CreateHalHttpClientAsync(GetHttpClient(), context, apiRootCachingBehavior)); }
private async Task<IHalHttpClient> CreateHalHttpClientAsync(HttpClient httpClient, CachingBehavior apiRootCachingBehavior) { var wrapped = new HalHttpClient(Parser, httpClient); try { Configure(wrapped.Configuration); var decorated = Decorate(wrapped) ?? wrapped; switch (apiRootCachingBehavior) { case CachingBehavior.Never: break; case CachingBehavior.PerClient: var apiRootResource = await GetFreshRootResourceAsync(decorated, wrapped.Configuration).ConfigureAwait(false); wrapped.CachedApiRootResource = apiRootResource; break; case CachingBehavior.Once: _cachedApiRootResource = _cachedApiRootResource ?? await GetFreshRootResourceAsync(decorated, wrapped.Configuration).ConfigureAwait(false); wrapped.CachedApiRootResource = _cachedApiRootResource; break; default: throw new ArgumentOutOfRangeException(nameof(apiRootCachingBehavior), apiRootCachingBehavior, null); } return decorated; } catch (Exception) { wrapped.Dispose(); // client is unusable ... throw; } }
public Task<IHalHttpClient> CreateClientAsync(HttpClient httpClient, CachingBehavior apiRootCachingBehavior = CachingBehavior.Never) { return CreateHalHttpClientAsync(httpClient, apiRootCachingBehavior); }
public void CachingBehaviorInvokeDelegateNullTest() { var target = new CachingBehavior(_cachingProvider, _logger); target.Invoke(new Mock <IMethodInvocation>().Object, null); }
public Task <IHalHttpClient> CreateClientAsync(HttpClient httpClient, CachingBehavior apiRootCachingBehavior = CachingBehavior.Never) { return(CreateHalHttpClientAsync(httpClient, apiRootCachingBehavior)); }
public CachingAttribute(string cacheManagerProviderServiceName, CachingBehavior behavior, params string[] methodNames) { Behavior = behavior; CacheManagerProviderServiceName = cacheManagerProviderServiceName; MethodNames = methodNames; }
public CachingAttribute(string cacheManagerProviderServiceName, CachingBehavior behavior) : this(cacheManagerProviderServiceName, behavior, (string[])null) { }
public void CachingBehaviorConstructorProfilerNullTest() { var target = new CachingBehavior(null, _logger); }
public void CachingBehaviorConstructorLoggerNullTest() { var target = new CachingBehavior(_cachingProvider, null); }
public void CachingBehaviorConstructorTest() { var target = new CachingBehavior(_cachingProvider, _logger); Assert.IsNotNull(target); }
public Task <IHalHttpClient> CreateClientAsync(CachingBehavior apiRootCachingBehavior) { return(CreateHalHttpClientAsync(GetHttpClient(), apiRootCachingBehavior)); }
public Task <IHalHttpClient> CreateClientAsync(HttpMessageHandler httpMessageHandler, CachingBehavior apiRootCachingBehavior = CachingBehavior.Never) { if (httpMessageHandler == null) { throw new ArgumentNullException(nameof(httpMessageHandler)); } return(CreateHalHttpClientAsync(GetHttpClient(httpMessageHandler), apiRootCachingBehavior)); }
public Task<IHalHttpClient> CreateClientAsync(CachingBehavior apiRootCachingBehavior) { return CreateHalHttpClientAsync(GetHttpClient(), apiRootCachingBehavior); }
private async Task <IHalHttpClient> CreateHalHttpClientAsync(HttpClient httpClient, CachingBehavior apiRootCachingBehavior) { var wrapped = new HalHttpClient(HalJsonParser, httpClient); try { Configure(wrapped.Configuration); var decorated = Decorate(wrapped) ?? wrapped; switch (apiRootCachingBehavior) { case CachingBehavior.Never: break; case CachingBehavior.PerClient: var apiRootResource = await GetFreshRootResourceAsync(decorated, wrapped.Configuration).ConfigureAwait(false); wrapped.CachedApiRootResource = apiRootResource; break; case CachingBehavior.Once: _cachedApiRootResource = _cachedApiRootResource ?? await GetFreshRootResourceAsync(decorated, wrapped.Configuration).ConfigureAwait(false); wrapped.CachedApiRootResource = _cachedApiRootResource; break; default: throw new ArgumentOutOfRangeException(nameof(apiRootCachingBehavior), apiRootCachingBehavior, null); } return(decorated); } catch (Exception) { wrapped.Dispose(); // client is unusable ... throw; } }
public void CachingBehaviorInvokeInputNullTest() { var target = new CachingBehavior(_cachingProvider, _logger); target.Invoke(null, new GetNextInterceptionBehaviorDelegate(() => null)); }