Пример #1
0
        public async Task BindAnyAsync_OnFailureAsync_GivenValue_WhenPayloadIsIgnored_ReturnsFailureAsync()
        {
            var failure = ResultFactory.CreateFailureAsync <int>("serious error");

            var result = await failure.BindAnyAsync(() => 3);

            result.ShouldBeFailure();
            result.Error().Message.ShouldBe("serious error");
        }
Пример #2
0
        public async Task BindAnyAsync_OnFailureAsync_GivenTask_ReturnsFailureAsync()
        {
            var failure = ResultFactory.CreateFailureAsync <int>("serious error");

            var result = await failure.BindAnyAsync(a => Task.FromResult(a + 3));

            result.ShouldBeFailure();
            result.Error().Message.ShouldBe("serious error");
        }
Пример #3
0
        public async Task BindAsync_WhenBothAreAsync_WhenResultIgnored_ReturnsFailureAsync()
        {
            var success = ResultFactory.CreateSuccessAsync(1);
            var next    = ResultFactory.CreateFailureAsync("some serious message");

            var result = success.BindAsync(() => next);

            await result.ShouldBeFailure();

            (await result.Error()).Message.ShouldBe("some serious message");
        }
        public async Task BindAsync_WhenBothAreAsync_ReturnsFailureAsync()
        {
            var failure = ResultFactory.CreateFailureAsync("some serious message");
            var next    = ResultFactory.CreateFailureAsync("next error");

            var result = failure.BindAsync(a => next);

            await result.ShouldBeFailure();

            (await result.Error()).Message.ShouldBe("some serious message");
        }
Пример #5
0
 public Task <IResult <Unit> > DeleteAsync(TKey id, CancellationToken token = default)
 {
     try
     {
         Cache.Remove(GetKey(id));
         return(ResultFactory.CreateSuccessAsync());
     }
     catch (Exception e)
     {
         return(ResultFactory.CreateFailureAsync <Unit>(e.Message));
     }
 }
Пример #6
0
        public Task <IResult <Unit> > DeleteAllAsync(CancellationToken token = default)
        {
            try
            {
                _tokenSource.Cancel();
                _tokenSource.Dispose();

                _tokenSource = new CancellationTokenSource();
                return(ResultFactory.CreateSuccessAsync());
            }
            catch (Exception e)
            {
                return(ResultFactory.CreateFailureAsync <Unit>(e.Message));
            }
        }
        public async Task OnResultExecutionAsync_WhenBodyShouldNotBeIncluded_NotCallSetBody()
        {
            var httpAccessor = new Mock <IRequestDataAccessor>();

            httpAccessor.Setup(x => x.SetBody(It.IsAny <HttpContext>(), It.IsAny <IActionResult>()))
            .Returns(await ResultFactory.CreateFailureAsync("dd"));
            var logger            = new Mock <ILogger <RewindFilter> >();
            var telemetryEnricher = new Mock <ITelemetryEnricher>();

            telemetryEnricher.Setup(x => x.AttachResponse(It.IsAny <HttpContext>())).Returns(false);
            var filter = new RewindFilter(httpAccessor.Object, logger.Object, telemetryEnricher.Object);

            await filter.OnResultExecutionAsync(new ResultExecutingContext(new ActionContext(new DefaultHttpContext(), new RouteData(), new ActionDescriptor()), new List <IFilterMetadata>(), new OkObjectResult("dd"), new object()), () => Task.FromResult(new ResultExecutedContext(new ActionContext(new DefaultHttpContext(), new RouteData(), new ActionDescriptor()), new List <IFilterMetadata>(), new OkObjectResult("dd"), new object())));

            httpAccessor.Verify(x => x.SetBody(It.IsAny <HttpContext>(), It.IsAny <ActionDescriptor>(),
                                               It.IsAny <IDictionary <string, object> >()), Times.Never);
        }
Пример #8
0
 public Task <IResult <Unit> > UpsertAsync(TKey id, TItem item, CancellationToken token = default)
 {
     try
     {
         var key = GetKey(id);
         var opt = new MemoryCacheEntryOptions
         {
             SlidingExpiration = _cacheEntryExpiration,
             Size = 1
         };
         opt.AddExpirationToken(new CancellationChangeToken(_tokenSource.Token));
         Cache.Set(key, item, opt);
         var successSave = Cache.TryGetValue(key, out _);
         return(successSave
             ? ResultFactory.CreateSuccessAsync()
             : ResultFactory.CreateFailureAsync <Unit>($"entry under key {key} was not saved in a cache"));
     }
     catch (Exception e)
     {
         return(ResultFactory.CreateFailureAsync(e.Message));
     }
 }
Пример #9
0
 private static Task <IResult <int> > FailAsync(int _) => ResultFactory.CreateFailureAsync <int>("fail");
Пример #10
0
 public async Task MapAsync_OnFailure_ReturnTaskWith2Inside() =>
 (await ResultFactory.CreateFailureAsync <Unit>("").MapAsync(x => Task.FromResult(1), y => Task.FromResult(2))).ShouldBe(2);
Пример #11
0
 public async Task MapAsync_OnFailure_Return2() =>
 (await ResultFactory.CreateFailureAsync <Unit>("").MapAsync(x => 1, y => 2)).ShouldBe(2);
Пример #12
0
        public static async Task <IResult <TType> > ToFailureAsync <TType>(this Task <Exception> obj, [CallerMemberName] string memberName = "", [CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0)
        {
            var ex = await obj;

            return(await ResultFactory.CreateFailureAsync <TType>(new Error(ex.Message, memberName, sourceFilePath, sourceLineNumber)));
        }
Пример #13
0
 public static async Task <IResult <TType> > ToFailureAsync <TType>(this Task <Exception> obj, string msg, [CallerMemberName] string memberName = "", [CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0)
 => await ResultFactory.CreateFailureAsync <TType>(new Error(msg, memberName, sourceFilePath, sourceLineNumber));
Пример #14
0
 public static Task <IResult <TType> > ToFailureWithMsgAsync <TType>(this Exception obj, string msg, [CallerMemberName] string memberName = "", [CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0)
 => ResultFactory.CreateFailureAsync <TType>(new ErrorWithException(msg, obj, memberName, sourceFilePath, sourceLineNumber));