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)); }
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"); }
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(); }
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 })); } }
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 })); } }
// 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)); }
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); }
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 })); } }
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 })); } }
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); }
private Result2 <OrderUpdateResult, string[]> ToOrderUpdateResult(OrderUpdateResult result) { return(Result2 <OrderUpdateResult, string[]> .Succeeded(result)); }
private Result2 <string, string[]> StringSuccess() { return(Result2 <string, string[]> .Succeeded("foo")); }
private Result2 <int, string[]> IntSuccess() { return(Result2 <int, string[]> .Succeeded(123)); }
private Result2 <bool, string[]> BoolSuccess() { return(Result2 <bool, string[]> .Succeeded(true)); }