Esempio n. 1
0
        public void Result2_OnSuccessMapTest()
        {
            var result = Result2 <Order, string> .Succeeded(new Order());

            var result2 = result.OnSuccess(order => new Customer());

            result2.IsSuccess.Should().BeTrue();
            result2.SuccessResult.GetType().Should().Be(typeof(Customer));
        }
Esempio n. 2
0
        public void Result2_GivenOnSuccessBind_WhenIsFailure_ExpectNoOperation()
        {
            var result = Result2 <Order, string> .Failed("error");

            var result2 = result.OnSuccess(order => Result2 <Customer, string> .Succeeded(new Customer()));

            result2.IsSuccess.Should().BeFalse();
            result2.SuccessResult.Should().BeNull();
            result2.FailureResult.Should().Be("error");
        }
Esempio n. 3
0
        public void Result2_GivenAFailure_WhenOnFailureBind_ExpectCorrectedSuccess()
        {
            var result = Result2 <Order, string> .Failed("error");

            var result2 = result.OnFailure(e => Result2 <Order, string> .Succeeded(new Order()));

            result2.IsSuccess.Should().BeTrue();
            result2.SuccessResult.GetType().Should().Be(typeof(Order));
            result2.FailureResult.Should().BeNull();
        }
Esempio n. 4
0
 private Result2 <Product, string[]> GetProductResult(int productId)
 {
     try
     {
         return(Result2 <Product, string[]> .Succeeded(Repository.GetProduct(productId)));
     }
     catch (Exception ex)
     {
         return(Result2 <Product, string[]> .Failed(new[] { ex.Message }));
     }
 }
Esempio n. 5
0
 private Result2 <Customer, string[]> GetCustomerResult(int customerId)
 {
     try
     {
         return(Result2 <Customer, string[]> .Succeeded(Repository.GetCustomer(customerId)));
     }
     catch (Exception ex)
     {
         return(Result2 <Customer, string[]> .Failed(new[] { ex.Message }));
     }
 }
Esempio n. 6
0
        // eigenlijk zou ik hier Result2<OrderUpdateResult,OrderUpdateResult> willen teruggeven.
        // maar dat kan niet omdat een failure string[] niet geconverteerd kan worden naar een OrderUpdateResult
        private Result2 <OrderUpdateResult, string[]> AddProductToCustomerOrder(
            Order order,
            Customer customer,
            Product product)
        {
            if ((order.TotalOrderAmount() + product.Price) > customer.OrderLimit)
            {
                return(Result2 <OrderUpdateResult, string[]> .Succeeded(OrderUpdateResult.ExceedLimit));
            }

            order.AddProduct(product);
            return(Result2 <OrderUpdateResult, string[]> .Succeeded(OrderUpdateResult.OK));
        }
Esempio n. 7
0
        public void Result2_OnSuccessActionTest()
        {
            Order orderResult = null;
            var   result      = Result2 <Order, string> .Succeeded(new Order()
            {
                Id = 123
            });

            var result2 = result.OnSuccess(order => { orderResult = order; });

            result2.IsSuccess.Should().BeTrue();
            result2.SuccessResult.GetType().Should().Be(typeof(Order));
            orderResult.Id.Should().Be(123);
        }
Esempio n. 8
0
        private Result2 <OrderUpdateResult, string[]> UpdateModifiedOrder(Order order)
        {
            try
            {
                if (Repository.UpdateOrder(order))
                {
                    return(Result2 <OrderUpdateResult, string[]> .Succeeded(OrderUpdateResult.OK));
                }

                return(Result2 <OrderUpdateResult, string[]> .Failed(new[] { "Failed to Update Order" }));
            }
            catch (Exception e)
            {
                return(Result2 <OrderUpdateResult, string[]> .Failed(new[] { e.Message }));
            }
        }
Esempio n. 9
0
        private Result2 <Order, string[]> GetOrderResult(int orderId)
        {
            try
            {
                Order order = Repository.GetOrder(orderId);
                if (order != null)
                {
                    return(Result2 <Order, string[]> .Succeeded(order));
                }

                return(Result2 <Order, string[]> .Failed(new [] { $"Order with id {orderId} does not exist." }));
            }
            catch (Exception ex)
            {
                return(Result2 <Order, string[]> .Failed(new[] { ex.Message }));
            }
        }
Esempio n. 10
0
        public void Result2_GivenTwoDifferentFailureType_ConvertToOtherFailure()
        {
            // The code below will not return a Result2<Customer, int> on failure
            // var result =
            //    Result2<Order, string>.Failed("error")
            //        .OnSuccess(o => Result2<Customer, int>.Succeeded(new Customer()));
            //
            // result.FailureResult.Should().Be(-1)
            // will not compile unless a ConvertFailure is added to the chain.
            //
            var result =
                Result2 <Order, string> .Failed("error")
                .ConvertFailure(e => Result2 <Order, int> .Failed(-1))    // bind
                .OnSuccess(o => Result2 <Customer, int> .Succeeded(new Customer()));

            result.IsFailure.Should().BeTrue();
            result.FailureResult.Should().Be(-1);
        }
Esempio n. 11
0
 private Result2 <OrderUpdateResult, string[]> ToOrderUpdateResult(OrderUpdateResult result)
 {
     return(Result2 <OrderUpdateResult, string[]> .Succeeded(result));
 }
Esempio n. 12
0
 private Result2 <string, string[]> StringSuccess()
 {
     return(Result2 <string, string[]> .Succeeded("foo"));
 }
Esempio n. 13
0
 private Result2 <int, string[]> IntSuccess()
 {
     return(Result2 <int, string[]> .Succeeded(123));
 }
Esempio n. 14
0
 private Result2 <bool, string[]> BoolSuccess()
 {
     return(Result2 <bool, string[]> .Succeeded(true));
 }