Skip to content

Commit 37984f7

Browse files
committed
Fix JsonResultAssertions messages.
1 parent 80af63b commit 37984f7

File tree

6 files changed

+57
-37
lines changed

6 files changed

+57
-37
lines changed

src/FluentAssertions.AspNetCore.Mvc/FailureMessages.Designer.cs

Lines changed: 18 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/FluentAssertions.AspNetCore.Mvc/FailureMessages.resx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,9 +126,15 @@
126126
<data name="CommonNullWasSuppliedFailMessage" xml:space="preserve">
127127
<value>Expected {0} to be of type {1}, but no {0} was supplied.</value>
128128
</data>
129+
<data name="CommonNullWasSuppliedFailMessage2" xml:space="preserve">
130+
<value>Expected {context} to be of type {0}, but no value was supplied.</value>
131+
</data>
129132
<data name="CommonTypeFailMessage" xml:space="preserve">
130133
<value>Expected {0} to be of type '{1}' but was '{2}'</value>
131134
</data>
135+
<data name="CommonTypeFailMessage2" xml:space="preserve">
136+
<value>Expected {context} to be of type {0} but was {1}.</value>
137+
</data>
132138
<data name="FileContentResult_WithFileContents_LengthFail" xml:space="preserve">
133139
<value>Expected FileContentResult.FileContents to have {0} byte(s){reason} but found {1}.</value>
134140
</data>

src/FluentAssertions.AspNetCore.Mvc/JsonResultAssertions.cs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,8 @@ public JsonResultAssertions WithContentType(string expectedContentType, string r
6767
Execute.Assertion
6868
.ForCondition(string.Equals(expectedContentType, actualContentType, StringComparison.OrdinalIgnoreCase))
6969
.BecauseOf(reason, reasonArgs)
70-
.FailWith(FailureMessages.CommonFailMessage, "JsonResult.ContentType", expectedContentType, actualContentType);
70+
.WithDefaultIdentifier("JsonResult.ContentType")
71+
.FailWith(FailureMessages.CommonFailMessage2, expectedContentType, actualContentType);
7172
return this;
7273
}
7374

@@ -90,7 +91,8 @@ public JsonResultAssertions WithStatusCode(int? expectedStatusCode, string reaso
9091
Execute.Assertion
9192
.ForCondition(expectedStatusCode == actualStatusCode)
9293
.BecauseOf(reason, reasonArgs)
93-
.FailWith(FailureMessages.CommonFailMessage, "JsonResult.StatusCode", expectedStatusCode, actualStatusCode);
94+
.WithDefaultIdentifier("JsonResult.StatusCode")
95+
.FailWith(FailureMessages.CommonFailMessage2, expectedStatusCode, actualStatusCode);
9496
return this;
9597
}
9698

@@ -104,11 +106,14 @@ public TValue ValueAs<TValue>()
104106
var value = JsonResultSubject.Value;
105107

106108
if (value == null)
107-
Execute.Assertion.FailWith(FailureMessages.CommonNullWasSuppliedFailMessage, "Value", typeof(TValue).Name);
109+
Execute.Assertion
110+
.WithDefaultIdentifier("Value")
111+
.FailWith(FailureMessages.CommonNullWasSuppliedFailMessage2, typeof(TValue));
108112

109113
Execute.Assertion
110114
.ForCondition(value is TValue)
111-
.FailWith(FailureMessages.CommonTypeFailMessage, "Value", typeof(TValue).Name, value.GetType().Name);
115+
.WithDefaultIdentifier("Value")
116+
.FailWith(FailureMessages.CommonTypeFailMessage2, typeof(TValue), value.GetType());
112117

113118
return (TValue)value;
114119
}

tests/FluentAssertions.AspNetCore.Mvc.Tests/FileResultAssertions_Tests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ public void WithEntityTag_GivenUnexpected_ShouldFail()
107107
var expectedValue = new EntityTagHeaderValue("\"sha256 value 2\"", false);
108108
var result = TestDataGenerator.CreateFileContentResult();
109109
result.EntityTag = actualValue;
110-
var failureMessage = "Expected FileResult.EntityTag to be \"sha256 value 2\" because it is 10 but found W/\"sha256 value 1\".";
110+
var failureMessage = FailureMessageHelper.ExpectedContextToBeXButY("FileResult.EntityTag", expectedValue, actualValue);
111111

112112
Action a = () => result.Should().BeFileResult().WithEntityTag(expectedValue, "it is {0}", 10);
113113

tests/FluentAssertions.AspNetCore.Mvc.Tests/Helpers/FailureMessageHelper.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,12 @@ public static string Format(string message, params string[] args)
1414

1515
public static string ExpectedContextToBeXButY(string context, string expected, string actual)
1616
{
17-
return $"Expected {context} to be \"{expected}\" because it is 10 but found \"{actual}\".";
17+
return ExpectedContextToBeXButY(context, (object)$"\"{expected}\"", (object)$"\"{actual}\"");
18+
}
19+
20+
public static string ExpectedContextToBeXButY(string context, object expected, object actual)
21+
{
22+
return $"Expected {context} to be {expected} because it is 10 but found {actual}.";
1823
}
1924
}
2025
}

tests/FluentAssertions.AspNetCore.Mvc.Tests/JsonResultAssertions_Tests.cs

Lines changed: 17 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,9 @@ public void WithContentType_GivenUnexpected_ShouldFail()
2828
{
2929
ContentType = actualValue
3030
};
31-
var failureMessage = FailureMessageHelper.Format(FailureMessages.CommonFailMessage, "JsonResult.ContentType", expectedValue, actualValue);
31+
var failureMessage = FailureMessageHelper.ExpectedContextToBeXButY("JsonResult.ContentType", expectedValue, actualValue);
3232

33-
Action a = () => result.Should().BeJsonResult().WithContentType(expectedValue);
33+
Action a = () => result.Should().BeJsonResult().WithContentType(expectedValue, "it is {0}", 10);
3434

3535
a.Should().Throw<Exception>()
3636
.WithMessage(failureMessage);
@@ -56,62 +56,48 @@ public void WithStatusCode_GivenUnexpected_ShouldFail()
5656
{
5757
StatusCode = actualStatusCode
5858
};
59-
var failureMessage = string.Format(FailureMessages.CommonFailMessage, "\"JsonResult.StatusCode\"", expectedStatusCode, actualStatusCode);
59+
var failureMessage = FailureMessageHelper.ExpectedContextToBeXButY("JsonResult.StatusCode", expectedStatusCode, actualStatusCode);
6060

61-
Action a = () => result.Should().BeJsonResult().WithStatusCode(expectedStatusCode);
61+
Action a = () => result.Should().BeJsonResult().WithStatusCode(expectedStatusCode, "it is {0}", 10);
6262

6363
a.Should().Throw<Exception>()
6464
.WithMessage(failureMessage);
6565
}
6666

6767
[Fact]
68-
public void Value_GivenExpectedValue_ShouldPass()
68+
public void Value_GivenJsonResult_ShouldReturnSameValue()
6969
{
70-
var result = new TestController().JsonSimpleValue();
71-
72-
result.Should().BeJsonResult().Value.Should().Be("hello");
73-
}
74-
75-
[Fact]
76-
public void Value_GivenUnexpectedValue_ShouldFail()
77-
{
78-
var result = new TestController().JsonSimpleValue();
79-
80-
Action a = () => result.Should().BeJsonResult().Value.Should().Be("xyx");
81-
a.Should().Throw<Exception>();
82-
}
83-
84-
[Fact]
85-
public void ValueAs_GivenExpectedValue_ShouldPass()
86-
{
87-
var result = new TestController().JsonSimpleValue();
70+
object expectedValue = "hello";
71+
var result = new JsonResult(expectedValue);
8872

89-
result.Should().BeJsonResult().ValueAs<string>().Should().Be("hello");
73+
result.Should().BeJsonResult().Value.Should().BeSameAs(expectedValue);
9074
}
9175

9276
[Fact]
93-
public void ValueAs_GivenUnexpectedValue_ShouldFail()
77+
public void ValueAs_GivenJsonResultWithValue_ShouldReturnTheSame()
9478
{
95-
var result = new TestController().JsonSimpleValue();
79+
string expectedValue = "hello";
80+
var result = new JsonResult(expectedValue);
9681

97-
Action a = () => result.Should().BeJsonResult().ValueAs<string>().Should().Be("xyx");
98-
a.Should().Throw<Exception>();
82+
result.Should().BeJsonResult().ValueAs<string>().Should().BeSameAs(expectedValue);
9983
}
10084

10185
[Fact]
10286
public void ValueAs_GivenWrongType_ShouldFail()
10387
{
10488
var result = new TestController().JsonSimpleValue();
89+
const string failureMessage = "Expected Value to be of type System.Int32 but was System.String.";
10590

10691
Action a = () => result.Should().BeJsonResult().ValueAs<int>().Should().Be(2);
107-
a.Should().Throw<Exception>();
92+
a.Should().Throw<Exception>()
93+
.WithMessage(failureMessage);
10894
}
10995

11096
[Fact]
11197
public void ValueAs_Null_ShouldFail()
11298
{
11399
ActionResult result = new JsonResult(null);
114-
string failureMessage = FailureMessageHelper.Format(FailureMessages.CommonNullWasSuppliedFailMessage, "Value", typeof(Object).Name);
100+
string failureMessage = $"Expected Value to be of type System.Object, but no value was supplied.";
115101

116102
Action a = () => result.Should().BeJsonResult().ValueAs<Object>();
117103

@@ -120,7 +106,7 @@ public void ValueAs_Null_ShouldFail()
120106
}
121107

122108
[Fact]
123-
public void SerializerSettings_GivenExpectedValue_ShouldPass()
109+
public void SerializerSettings_GivenInJsonResult_ShouldBeSame()
124110
{
125111
var expectedValue = new JsonSerializerSettings();
126112
var result = new JsonResult("value", expectedValue);

0 commit comments

Comments
 (0)