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);
        }
Exemplo n.º 4
0
        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());
        }