public void TestShouldNotDeleteACategoryWithoutTimestapData()
        {
            // Arrange
            Category vCategory =
                new Category
            {
                CategoryName = _FOO
            };

            _Db.Categories.Add(vCategory);
            _Db.SaveChanges();
            StoreContext vContext          = new StoreContext();
            Category     vCategoryToDelete =
                new Category
            {
                Id = vCategory.Id
            };

            vContext.Categories.Remove(vCategoryToDelete);

            // Act
            RetryLimitExceededException vResult =
                Assert.Throws <RetryLimitExceededException>
                    (() => vContext.SaveChanges());
            DbUpdateConcurrencyException vInnerException =
                vResult.InnerException as DbUpdateConcurrencyException;

            // Assert
            vInnerException?.Entries.Count.Should().Be(1);
            ((Category)vInnerException?.Entries[0].Entity)?.Id.Should().Be(vCategory.Id);
        }
Esempio n. 2
0
        public void RetryLimitExceededException_exposes_public_string_and_inner_exception_constructor()
        {
            var inner = new Exception();

            var ex = new RetryLimitExceededException("Foo", inner);

            Assert.Equal("Foo", ex.Message);
            Assert.Same(inner, ex.InnerException);
        }
Esempio n. 3
0
 public void When_I_try_to_access_the_database_and_it_the_retries_exceed_the_max_count()
 {
     try
     {
         var entity = _db.ToDoItems.FirstOrDefault();
     }
     catch (RetryLimitExceededException exception)
     {
         _result = exception;
     }
 }
Esempio n. 4
0
 /// <summary>
 /// Obtiene un <see cref="ServiceResult"/> que representa un
 /// <see cref="ServiceResult"/> fallido a partir de la excepción
 /// producida.
 /// </summary>
 /// <param name="ex">Excepción que se ha producido.</param>
 /// <returns>
 /// Un resultado que representa y describe una falla en la
 /// operación solicitada.
 /// </returns>
 protected static ServiceResult ResultFromException(Exception ex)
 {
     return(ex switch
     {
         null => throw new ArgumentNullException(nameof(ex)),
         DataNotFoundException _ => NotFound,
         TaskCanceledException _ => NetworkFailure,
         DbUpdateConcurrencyException _ => ConcurrencyFailure,
         DbUpdateException _ => DbFailure,
         RetryLimitExceededException _ => NetworkFailure,
         _ => ex,
     });
Esempio n. 5
0
        public void FixedDelayPolicyExecuteActionTest()
        {
            TestFixedDelayPolicy policy = new TestFixedDelayPolicy(
                strategy: new NetworkConnectivityErrorDetectionStrategy(),
                maxRetryCount: 3,
                intervalBetweenRetries: TimeSpan.FromMilliseconds(20));

            // execute an action that throws a retry limit exception
            CancellationToken token = new CancellationToken();

            Assert.Equal(policy.ExecuteAction <int>((s) => { throw new RetryLimitExceededException(); }, token), default(int));

            // execute an action that throws a retry limit exeception with an inner exception
            Assert.Throws <Exception>(() =>
            {
                policy.ExecuteAction <int>((s) =>
                {
                    var e = new RetryLimitExceededException("retry", new Exception());
                    throw e;
                });
            });
        }
Esempio n. 6
0
 public CustomRetryLimitExceededException(string message, RetryLimitExceededException innerException)
     : base(message, innerException)
 {
 }