public void Result2_GivenOnSuccesMap_WhenIsFailure_ExpectNoOperation() { var result = Result2 <Order, string> .Failed("error"); var result2 = result.OnSuccess(order => new Customer()); result2.IsSuccess.Should().BeFalse(); result2.SuccessResult.Should().BeNull(); result2.FailureResult.Should().Be("error"); }
public void Result2_GivenAFailure_WhenOnFailureMap_ExpectCorrectedSuccess() { var result = Result2 <Order, string> .Failed("error"); var result2 = result.OnFailure(e => new Order()); result2.IsSuccess.Should().BeTrue(); result2.SuccessResult.GetType().Should().Be(typeof(Order)); result2.FailureResult.Should().BeNull(); }
public void Result2_GivenAFailure_WhenOnFailureBind_BindToOtherFailure() { var result = Result2 <Order, string> .Failed("error"); var result2 = result.ConvertFailure(e => Result2 <Order, int> .Failed(e.Length)); result2.IsFailure.Should().BeTrue(); result2.FailureResult.Should().Be(5); result2.SuccessResult.Should().BeNull(); }
public void Result2_OnFailureActionTest() { string output = null; var result = Result2 <Order, string> .Failed("error"); var result2 = result.OnFailure(e => { output = e.ToUpper(); }); result2.IsFailure.Should().BeTrue(); output.Should().Be("ERROR"); }
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 })); } }
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 <string, string[]> StringFailure() { return(Result2 <string, string[]> .Failed(new[] { "error" })); }
private Result2 <bool, string[]> BoolFailure() { return(Result2 <bool, string[]> .Failed(new [] { "error" })); }