diff --git a/src/CSharpFunctionalExtensions.FluentAssertions/ResultExtensions.cs b/src/CSharpFunctionalExtensions.FluentAssertions/ResultExtensions.cs index b05bc34..b627964 100644 --- a/src/CSharpFunctionalExtensions.FluentAssertions/ResultExtensions.cs +++ b/src/CSharpFunctionalExtensions.FluentAssertions/ResultExtensions.cs @@ -25,9 +25,8 @@ public AndConstraint Succeed(string because = "", params objec { Execute.Assertion .BecauseOf(because, becauseArgs) - .Given(() => Subject) - .ForCondition(s => s.IsSuccess) - .FailWith("Expected Result to be successful but it failed"); + .ForCondition(Subject.IsSuccess) + .FailWith(() => new FailReason(@$"Expected {{context:result}} to succeed{{reason}}, but it failed with error ""{Subject.Error}""")); return new AndConstraint(this); } @@ -42,9 +41,8 @@ public AndConstraint Fail(string because = "", params object[] { Execute.Assertion .BecauseOf(because, becauseArgs) - .Given(() => Subject) - .ForCondition(s => s.IsFailure) - .FailWith("Expected Result to be failure but it succeeded"); + .ForCondition(Subject.IsFailure) + .FailWith(() => new FailReason($"Expected {{context:result}} to fail{{reason}}, but it succeeded")); return new AndConstraint(this); } diff --git a/src/CSharpFunctionalExtensions.FluentAssertions/ResultTEExtensions.cs b/src/CSharpFunctionalExtensions.FluentAssertions/ResultTEExtensions.cs index f5502a3..16c2fed 100644 --- a/src/CSharpFunctionalExtensions.FluentAssertions/ResultTEExtensions.cs +++ b/src/CSharpFunctionalExtensions.FluentAssertions/ResultTEExtensions.cs @@ -24,9 +24,8 @@ public AndConstraint> Succeed(string because = "", para { Execute.Assertion .BecauseOf(because, becauseArgs) - .Given(() => Subject) - .ForCondition(s => s.IsSuccess) - .FailWith("Expected Result to be successful but it failed"); + .ForCondition(Subject.IsSuccess) + .FailWith(() => new FailReason(@$"Expected {{context:result}} to succeed{{reason}}, but it failed with error ""{Subject.Error}""")); return new AndConstraint>(this); } @@ -42,13 +41,12 @@ public AndConstraint> SucceedWith(T value, string becau { Execute.Assertion .BecauseOf(because, becauseArgs) - .Given(() => Subject) - .ForCondition(s => s.IsSuccess) - .FailWith("Expected Result to be successful but it failed") + .ForCondition(Subject.IsSuccess) + .FailWith(() => new FailReason(@$"Expected {{context:result}} to succeed{{reason}}, but it failed with error ""{Subject.Error}""")) .Then - .Given(s => s.Value) + .Given(() => Subject.Value) .ForCondition(v => v!.Equals(value)) - .FailWith("Excepted Result value to be {0} but found {1}", value, Subject.Value); + .FailWith("Expected {context:result} value to be {0}, but found {1}", value, Subject.Value); return new AndConstraint>(this); } @@ -63,9 +61,8 @@ public AndConstraint> Fail(string because = "", params { Execute.Assertion .BecauseOf(because, becauseArgs) - .Given(() => Subject) - .ForCondition(s => s.IsFailure) - .FailWith("Expected Result to be failure but it succeeded"); + .ForCondition(Subject.IsFailure) + .FailWith(() => new FailReason(@$"Expected {{context:result}} to fail, but it succeeded with value ""{Subject.Value}""")); return new AndConstraint>(this); } @@ -81,13 +78,12 @@ public AndConstraint> FailWith(E error, string because { Execute.Assertion .BecauseOf(because, becauseArgs) - .Given(() => Subject) - .ForCondition(s => s.IsFailure) - .FailWith("Expected Result to be failure but it succeeded") + .ForCondition(Subject.IsFailure) + .FailWith(() => new FailReason($"Expected {{context:result}} to fail, but it succeeded")) .Then - .Given(s => s.Error) + .Given(() => Subject.Error) .ForCondition(e => e!.Equals(error)) - .FailWith("Excepted Result value to be {0} but found {1}", error, Subject.Error); + .FailWith($"Expected {{context:result}} error to be {{0}}, but found {{1}}", error, Subject.Error); return new AndConstraint>(this); } diff --git a/src/CSharpFunctionalExtensions.FluentAssertions/ResultTExtensions.cs b/src/CSharpFunctionalExtensions.FluentAssertions/ResultTExtensions.cs index 200d4a7..5cd87fb 100644 --- a/src/CSharpFunctionalExtensions.FluentAssertions/ResultTExtensions.cs +++ b/src/CSharpFunctionalExtensions.FluentAssertions/ResultTExtensions.cs @@ -25,9 +25,8 @@ public AndConstraint> Succeed(string because = "", params o { Execute.Assertion .BecauseOf(because, becauseArgs) - .Given(() => Subject) - .ForCondition(s => s.IsSuccess) - .FailWith("Expected Result to be successful but it failed"); + .ForCondition(Subject.IsSuccess) + .FailWith(() => new FailReason(@$"Expected {{context:result}} to succeed{{reason}}, but it failed with error ""{Subject.Error}""")); return new AndConstraint>(this); } @@ -43,13 +42,12 @@ public AndConstraint> SucceedWith(T value, string because = { Execute.Assertion .BecauseOf(because, becauseArgs) - .Given(() => Subject) - .ForCondition(s => s.IsSuccess) - .FailWith("Expected Result to be successful but it failed") + .ForCondition(Subject.IsSuccess) + .FailWith(() => new FailReason(@$"Expected {{context:result}} to succeed{{reason}}, but it failed with error ""{Subject.Error}""")) .Then - .Given(s => s.Value) + .Given(() => Subject.Value) .ForCondition(v => v!.Equals(value)) - .FailWith("Excepted Result value to be {0} but found {1}", value, Subject.Value); + .FailWith($"Expected {{context:result}} value to be {{0}}, but found {{1}}", value, Subject.Value); return new AndConstraint>(this); } @@ -64,9 +62,8 @@ public AndConstraint> Fail(string because = "", params obje { Execute.Assertion .BecauseOf(because, becauseArgs) - .Given(() => Subject) - .ForCondition(s => s.IsFailure) - .FailWith("Expected Result to be failure but it succeeded"); + .ForCondition(Subject.IsFailure) + .FailWith(() => new FailReason(@$"Expected {{context:result}} to fail, but it succeeded with value ""{Subject.Value}""")); return new AndConstraint>(this); } diff --git a/src/CSharpFunctionalExtensions.FluentAssertions/UnitResultExtensions.cs b/src/CSharpFunctionalExtensions.FluentAssertions/UnitResultExtensions.cs index 2519489..542d898 100644 --- a/src/CSharpFunctionalExtensions.FluentAssertions/UnitResultExtensions.cs +++ b/src/CSharpFunctionalExtensions.FluentAssertions/UnitResultExtensions.cs @@ -24,9 +24,8 @@ public AndConstraint> Succeed(string because = "", param { Execute.Assertion .BecauseOf(because, becauseArgs) - .Given(() => Subject) - .ForCondition(s => s.IsSuccess) - .FailWith("Expected UnitResult to be successful but it failed"); + .ForCondition(Subject.IsSuccess) + .FailWith(() => new FailReason(@$"Expected {{context:result}} to succeed{{reason}}, but it failed with error ""{Subject.Error}""")); return new AndConstraint>(this); } @@ -41,15 +40,14 @@ public AndConstraint> Fail(string because = "", params o { Execute.Assertion .BecauseOf(because, becauseArgs) - .Given(() => Subject) - .ForCondition(s => s.IsFailure) - .FailWith("Expected UnitResult to be failure but it succeeded"); + .ForCondition(Subject.IsFailure) + .FailWith(() => new FailReason($"Expected {{context:result}} to fail, but it succeeded")); return new AndConstraint>(this); } /// - /// Asserts a unit result is a failure with a specfied error. + /// Asserts a unit result is a failure with a specified error. /// /// /// @@ -59,13 +57,12 @@ public AndConstraint> FailWith(E error, string because = { Execute.Assertion .BecauseOf(because, becauseArgs) - .Given(() => Subject) - .ForCondition(s => s.IsFailure) - .FailWith("Expected UnitResult to be failure but it succeeded") + .ForCondition(Subject.IsFailure) + .FailWith(() => new FailReason($"Expected {{context:result}} to fail, but it succeeded")) .Then - .Given(s => s.Error) + .Given(() => Subject.Error) .ForCondition(e => e!.Equals(error)) - .FailWith("Excepted UnitResult value to be {0} but found {1}", error, Subject.Error); + .FailWith($"Expected {{context:result}} error to be {{0}}, but found {{1}}", error, Subject.Error); return new AndConstraint>(this); } diff --git a/tests/CSharpFunctionalExtensions.FluentAssertions.Tests/ResultAssertionTests.cs b/tests/CSharpFunctionalExtensions.FluentAssertions.Tests/ResultAssertionTests.cs index 70e4f03..6f7c87a 100644 --- a/tests/CSharpFunctionalExtensions.FluentAssertions.Tests/ResultAssertionTests.cs +++ b/tests/CSharpFunctionalExtensions.FluentAssertions.Tests/ResultAssertionTests.cs @@ -21,7 +21,7 @@ public void WhenResultIsExpectedToHaveValueItShouldNotBeFailure() var action = () => result.Should().Fail(); - action.Should().Throw().WithMessage("Expected Result to be failure but it succeeded"); + action.Should().Throw().WithMessage($"Expected {nameof(result)} to fail, but it succeeded"); } [Fact] @@ -39,6 +39,6 @@ public void WhenResultIsExpectedToHaveErrorItShouldBeFailure() var action = () => result.Should().Succeed(); - action.Should().Throw().WithMessage("Expected Result to be successful but it failed"); + action.Should().Throw().WithMessage(@$"Expected {nameof(result)} to succeed, but it failed with error ""error"""); } } diff --git a/tests/CSharpFunctionalExtensions.FluentAssertions.Tests/ResultTAssertionsTests.cs b/tests/CSharpFunctionalExtensions.FluentAssertions.Tests/ResultTAssertionsTests.cs index 687554a..576925d 100644 --- a/tests/CSharpFunctionalExtensions.FluentAssertions.Tests/ResultTAssertionsTests.cs +++ b/tests/CSharpFunctionalExtensions.FluentAssertions.Tests/ResultTAssertionsTests.cs @@ -21,7 +21,7 @@ public void WhenResultIsExpectedToHaveValueItShouldNotBeFailure() var action = () => result.Should().Fail(); - action.Should().Throw().WithMessage("Expected Result to be failure but it succeeded"); + action.Should().Throw().WithMessage(@$"Expected {nameof(result)} to fail, but it succeeded with value ""test"""); } [Fact] @@ -40,7 +40,7 @@ public void WhenResultIsExpectedToHaveValueItShouldNotBeSuccessfulWithDifferentV var action = () => result.Should().SucceedWith("bar"); - action.Should().Throw().WithMessage(@"Excepted Result value to be ""bar"" but found ""foo"""); + action.Should().Throw().WithMessage(@$"Expected {nameof(result)} value to be ""bar"", but found ""foo"""); } [Fact] @@ -58,6 +58,6 @@ public void WhenResultIsExpectedToHaveErrorItShouldBeFailure() var action = () => result.Should().Succeed(); - action.Should().Throw().WithMessage("Expected Result to be successful but it failed"); + action.Should().Throw().WithMessage(@$"Expected {nameof(result)} to succeed, but it failed with error ""error"""); } } diff --git a/tests/CSharpFunctionalExtensions.FluentAssertions.Tests/ResultTEAssertionTests.cs b/tests/CSharpFunctionalExtensions.FluentAssertions.Tests/ResultTEAssertionTests.cs index 9c5ba7f..c0fc4d4 100644 --- a/tests/CSharpFunctionalExtensions.FluentAssertions.Tests/ResultTEAssertionTests.cs +++ b/tests/CSharpFunctionalExtensions.FluentAssertions.Tests/ResultTEAssertionTests.cs @@ -34,7 +34,7 @@ public void WhenResultIsExpectedToBeSuccessItShouldThrowWhenFailure() var action = () => result.Should().Succeed(); - action.Should().Throw().WithMessage("Expected Result to be successful but it failed"); + action.Should().Throw().WithMessage(@$"Expected {nameof(result)} to succeed, but it failed with error ""System.Exception: error"""); } [Fact] @@ -45,7 +45,7 @@ public void WhenResultIsExpectedToBeSuccessWithValueItShouldThrowWhenSuccessWith var action = () => result.Should().SucceedWith("some other value"); - action.Should().Throw().WithMessage("Excepted Result value to be \"some other value\" but found \"value\""); + action.Should().Throw().WithMessage(@$"Expected {nameof(result)} value to be ""some other value"", but found ""value"""); } [Fact] @@ -78,7 +78,7 @@ public void WhenResultIsExpectedToBeFailureWithValueItShouldThrowWhenFailureWith var action = () => result.Should().FailWith(new Exception("Some other error")); - action.Should().Throw().WithMessage("Excepted Result value to be System.Exception with message \"Some other error\" but found System.Exception with message \"error\""); + action.Should().Throw().WithMessage(@$"Expected {nameof(result)} error to be System.Exception with message ""Some other error"", but found System.Exception with message ""error"""); } [Fact] @@ -91,7 +91,7 @@ public void WhenResultIsExpectedToBeFailureItShouldThrowWhenSuccess() var action = () => result.Should().Fail(); var actionWith = () => result.Should().FailWith(someError); - action.Should().Throw().WithMessage("Expected Result to be failure but it succeeded"); - actionWith.Should().Throw().WithMessage("Expected Result to be failure but it succeeded"); + action.Should().Throw().WithMessage(@$"Expected {nameof(result)} to fail, but it succeeded with value ""{value}"""); + actionWith.Should().Throw().WithMessage(@$"Expected {nameof(result)} to fail, but it succeeded"); } } diff --git a/tests/CSharpFunctionalExtensions.FluentAssertions.Tests/UnitResultAssertionTests.cs b/tests/CSharpFunctionalExtensions.FluentAssertions.Tests/UnitResultAssertionTests.cs index 6280956..8fa4808 100644 --- a/tests/CSharpFunctionalExtensions.FluentAssertions.Tests/UnitResultAssertionTests.cs +++ b/tests/CSharpFunctionalExtensions.FluentAssertions.Tests/UnitResultAssertionTests.cs @@ -23,7 +23,7 @@ public void WhenResultIsExpectedToBeSuccessItShouldThrowWhenFailure() var action = () => result.Should().Succeed(); - action.Should().Throw().WithMessage("Expected UnitResult to be successful but it failed"); + action.Should().Throw().WithMessage(@$"Expected {nameof(result)} to succeed, but it failed with error ""{error}"""); } [Fact] @@ -56,7 +56,7 @@ public void WhenResultIsExpectedToBeFailureWithValueItShouldThrowWhenFailureWith var action = () => result.Should().FailWith("some other error"); - action.Should().Throw().WithMessage("Excepted UnitResult value to be \"some other error\" but found \"error\""); + action.Should().Throw().WithMessage(@$"Expected {nameof(result)} error to be ""some other error"", but found ""{error}"""); } [Fact] @@ -66,6 +66,6 @@ public void WhenResultIsExpectedToBeFailureItShouldThrowWhenSuccess() var action = () => result.Should().Fail(); - action.Should().Throw().WithMessage("Expected UnitResult to be failure but it succeeded"); + action.Should().Throw().WithMessage($"Expected {nameof(result)} to fail, but it succeeded"); } }