public async Task RunAsync_executes_the_task_succesfully_only_once() { // Arrange int count = 0; var target = new OperationRunner(_logger.Object, new Mock <IServiceProvider>().Object, _transactionManagerMock.Object); // Act await target.RunAsync(async (context) => { count++; }); // Assert Assert.Equal(1, count); }
public async Task Cancelled_if_the_context_on_timeout() { // Arrange var target = new OperationRunner(_logger.Object, new Mock <IServiceProvider>().Object, _transactionManagerMock.Object); var task = target.RunAsync((context) => Task.Delay(int.MaxValue, context.CancellationToken), timeout: 1); // Act await Task.WhenAny(task, Task.Delay(1000000)); // Assert Assert.True(task.IsCanceled); }
public void Cancelled_if_the_provided_token_is_cancelled() { // Arrange var target = new OperationRunner(_logger.Object, new Mock <IServiceProvider>().Object, _transactionManagerMock.Object); var cancellationSource = new CancellationTokenSource(); // Act var task = target.RunAsync((context) => Task.Delay(int.MaxValue, context.CancellationToken), cancellationSource.Token); cancellationSource.Cancel(); // Assert Assert.True(task.IsCanceled); }
public async Task <IActionResult> PushEvent([FromBody] AnimalEvent e) { // TODO: Validate the event. try { await _operationRunner.RunAsync((context) => ProcessEvent(context, e)); return(Ok()); } catch { return(BadRequest()); } }
public async Task RunAsync_repeatedly_executes_failed_task() { // Arrange int count = 0; var target = new OperationRunner(_logger.Object, new Mock <IServiceProvider>().Object, _transactionManagerMock.Object); // Act await target.RunAsync(async (context) => { count++; if (count < 2) { throw new Exception(); } }); // Assert Assert.Equal(2, count); }
public async Task <IActionResult> ClearCache() { await _operationRunner.RunAsync <IServiceHttpClientFactory>(ClearCacheAsync, CancellationToken.None); return(Ok()); }