Skip to content

Commit 4637031

Browse files
authoredOct 24, 2020
Merge pull request #22 from faddiv/master
Version 3.1
2 parents 5195716 + 477d79f commit 4637031

29 files changed

+737
-379
lines changed
 

‎src/FluentAssertions.AspNetCore.Mvc/AcceptedAtActionResultAssertions.cs

+8-32
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
1-
using System;
2-
using System.Diagnostics;
3-
using FluentAssertions.Execution;
4-
using FluentAssertions.Primitives;
1+
using FluentAssertions.Execution;
52
using Microsoft.AspNetCore.Mvc;
3+
using System;
4+
using System.Diagnostics;
65

76
namespace FluentAssertions.AspNetCore.Mvc
87
{
98
/// <summary>
109
/// Contains a number of methods to assert that a <see cref="AcceptedAtActionResult"/> is in the expected state.
1110
/// </summary>
1211
[DebuggerNonUserCode]
13-
public class AcceptedAtActionResultAssertions : ObjectAssertions
12+
public class AcceptedAtActionResultAssertions : ObjectResultAssertionsBase<AcceptedAtActionResult, AcceptedAtActionResultAssertions>
1413
{
1514
/// <summary>
1615
/// Initializes a new instance of the <see cref="AcceptedAtActionResultAssertions" /> class.
@@ -30,7 +29,7 @@ public AcceptedAtActionResultAssertions(AcceptedAtActionResult subject) : base(s
3029
/// </param>
3130
public AcceptedAtActionResultAssertions WithActionName(string expectedActionName, string reason = "", params object[] reasonArgs)
3231
{
33-
string actualActionName = (Subject as AcceptedAtActionResult)?.ActionName;
32+
string actualActionName = ObjectResultSubject.ActionName;
3433

3534
Execute.Assertion
3635
.ForCondition(string.Equals(actualActionName, expectedActionName, StringComparison.OrdinalIgnoreCase))
@@ -54,7 +53,7 @@ public AcceptedAtActionResultAssertions WithActionName(string expectedActionName
5453
/// </param>
5554
public AcceptedAtActionResultAssertions WithControllerName(string expectedControllerName, string reason = "", params object[] reasonArgs)
5655
{
57-
string actualControllerName = (Subject as AcceptedAtActionResult)?.ControllerName;
56+
string actualControllerName = ObjectResultSubject.ControllerName;
5857

5958
Execute.Assertion
6059
.ForCondition(string.Equals(actualControllerName, expectedControllerName, StringComparison.OrdinalIgnoreCase))
@@ -79,35 +78,12 @@ public AcceptedAtActionResultAssertions WithControllerName(string expectedContro
7978
/// </param>
8079
public AcceptedAtActionResultAssertions WithRouteValue(string key, object expectedValue, string reason = "", params object[] reasonArgs)
8180
{
82-
var subjectTyped = Subject as AcceptedAtActionResult;
81+
var actualRouteValues = ObjectResultSubject.RouteValues;
8382

84-
AssertionHelpers.AssertStringObjectDictionary(subjectTyped.RouteValues,
83+
AssertionHelpers.AssertStringObjectDictionary(actualRouteValues,
8584
"AcceptedAtActionResult.RouteValues", key, expectedValue, reason, reasonArgs);
8685

8786
return this;
8887
}
89-
90-
/// <summary>
91-
/// Asserts the value is of the expected type.
92-
/// </summary>
93-
/// <typeparam name="TValue">The expected type.</typeparam>
94-
/// <returns>The typed value.</returns>
95-
public TValue ValueAs<TValue>()
96-
{
97-
var subjectTyped = Subject as AcceptedAtActionResult;
98-
var value = subjectTyped.Value;
99-
100-
if (value == null)
101-
Execute.Assertion
102-
.WithDefaultIdentifier("AcceptedAtActionResult.Value")
103-
.FailWith(FailureMessages.CommonNullWasSuppliedFailMessage, typeof(TValue));
104-
105-
Execute.Assertion
106-
.ForCondition(value is TValue)
107-
.WithDefaultIdentifier("AcceptedAtActionResult.Value")
108-
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(TValue), value.GetType());
109-
110-
return (TValue)value;
111-
}
11288
}
11389
}
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
1-
using System;
2-
using System.Diagnostics;
3-
using FluentAssertions.Execution;
4-
using FluentAssertions.Primitives;
1+
using FluentAssertions.Execution;
52
using Microsoft.AspNetCore.Mvc;
3+
using System;
4+
using System.Diagnostics;
65

76
namespace FluentAssertions.AspNetCore.Mvc
87
{
98
/// <summary>
109
/// Contains a number of methods to assert that a <see cref="AcceptedAtRouteResult"/> is in the expected state.
1110
/// </summary>
1211
[DebuggerNonUserCode]
13-
public class AcceptedAtRouteResultAssertions : ObjectAssertions
12+
public class AcceptedAtRouteResultAssertions : ObjectResultAssertionsBase<AcceptedAtRouteResult, AcceptedAtRouteResultAssertions>
1413
{
1514
/// <summary>
1615
/// Initializes a new instance of the <see cref="AcceptedAtRouteResultAssertions" /> class.
@@ -30,13 +29,13 @@ public AcceptedAtRouteResultAssertions(AcceptedAtRouteResult subject) : base(sub
3029
/// </param>
3130
public AcceptedAtRouteResultAssertions WithRouteName(string expectedRouteName, string reason = "", params object[] reasonArgs)
3231
{
33-
var subjectTyped = Subject as AcceptedAtRouteResult;
32+
var actualRouteName = ObjectResultSubject.RouteName;
3433

3534
Execute.Assertion
3635
.BecauseOf(reason, reasonArgs)
37-
.ForCondition(string.Equals(expectedRouteName, subjectTyped.RouteName, StringComparison.OrdinalIgnoreCase))
36+
.ForCondition(string.Equals(expectedRouteName, actualRouteName, StringComparison.OrdinalIgnoreCase))
3837
.WithDefaultIdentifier("AcceptedAtRouteResult.RouteName")
39-
.FailWith(FailureMessages.CommonFailMessage, expectedRouteName, subjectTyped.RouteName);
38+
.FailWith(FailureMessages.CommonFailMessage, expectedRouteName, actualRouteName);
4039

4140
return this;
4241
}
@@ -55,35 +54,12 @@ public AcceptedAtRouteResultAssertions WithRouteName(string expectedRouteName, s
5554
/// </param>
5655
public AcceptedAtRouteResultAssertions WithRouteValue(string key, object expectedValue, string reason = "", params object[] reasonArgs)
5756
{
58-
var subjectTyped = Subject as AcceptedAtRouteResult;
57+
var actualRouteValues = ObjectResultSubject.RouteValues;
5958

60-
AssertionHelpers.AssertStringObjectDictionary(subjectTyped.RouteValues,
59+
AssertionHelpers.AssertStringObjectDictionary(actualRouteValues,
6160
"AcceptedAtRouteResult.RouteValues", key, expectedValue, reason, reasonArgs);
6261

6362
return this;
6463
}
65-
66-
/// <summary>
67-
/// Asserts the value is of the expected type.
68-
/// </summary>
69-
/// <typeparam name="TValue">The expected type.</typeparam>
70-
/// <returns>The typed value.</returns>
71-
public TValue ValueAs<TValue>()
72-
{
73-
var subjectTyped = Subject as AcceptedAtRouteResult;
74-
var value = subjectTyped.Value;
75-
76-
if (value == null)
77-
Execute.Assertion
78-
.WithDefaultIdentifier("AcceptedAtRouteResult.Value")
79-
.FailWith(FailureMessages.CommonNullWasSuppliedFailMessage, typeof(TValue));
80-
81-
Execute.Assertion
82-
.ForCondition(value is TValue)
83-
.WithDefaultIdentifier("AcceptedAtRouteResult.Value")
84-
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(TValue), value.GetType());
85-
86-
return (TValue)value;
87-
}
8864
}
8965
}

‎src/FluentAssertions.AspNetCore.Mvc/AcceptedResultAssertions.cs

+8-38
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
1-
using System;
2-
using System.Diagnostics;
3-
using FluentAssertions.Execution;
4-
using FluentAssertions.Primitives;
1+
using FluentAssertions.Execution;
52
using Microsoft.AspNetCore.Mvc;
3+
using System;
4+
using System.Diagnostics;
65

76
namespace FluentAssertions.AspNetCore.Mvc
87
{
98
/// <summary>
109
/// Contains a number of methods to assert that a <see cref="AcceptedResult"/> is in the expected state.
1110
/// </summary>
1211
[DebuggerNonUserCode]
13-
public class AcceptedResultAssertions : ObjectAssertions
12+
public class AcceptedResultAssertions : ObjectResultAssertionsBase<AcceptedResult, AcceptedResultAssertions>
1413
{
1514
#region Public Constructors
1615

@@ -26,42 +25,13 @@ public AcceptedResultAssertions(AcceptedResult subject) : base(subject)
2625

2726
#region Public Properties
2827
/// <summary>
29-
/// The value on the AcceptedResult
28+
/// The location on the AcceptedResult.
3029
/// </summary>
31-
public object Value => AcceptedResultSubject.Value;
32-
33-
public string Location => AcceptedResultSubject.Location;
34-
35-
#endregion
36-
37-
#region Private Properties
38-
private AcceptedResult AcceptedResultSubject => (AcceptedResult)Subject;
30+
public string Location => ObjectResultSubject.Location;
3931

4032
#endregion
4133

4234
#region Public Methods
43-
/// <summary>
44-
/// Asserts the value is of the expected type.
45-
/// </summary>
46-
/// <typeparam name="TValue">The expected type.</typeparam>
47-
/// <returns>The typed value.</returns>
48-
public TValue ValueAs<TValue>()
49-
{
50-
var value = AcceptedResultSubject.Value;
51-
52-
if (value == null)
53-
Execute.Assertion
54-
.WithDefaultIdentifier("AcceptedResultAssertions.Value")
55-
.FailWith(FailureMessages.CommonNullWasSuppliedFailMessage, typeof(TValue));
56-
57-
Execute.Assertion
58-
.ForCondition(value is TValue)
59-
.WithDefaultIdentifier("AcceptedResultAssertions.Value")
60-
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(TValue), value.GetType());
61-
62-
return (TValue)value;
63-
}
64-
6535
/// <summary>
6636
/// Asserts the uri has the expected value.
6737
/// </summary>
@@ -83,7 +53,7 @@ public AcceptedResultAssertions WithUri(Uri uri, string reason = "", params obje
8353
Execute.Assertion
8454
.BecauseOf(reason, reasonArgs)
8555
.ForCondition(expectedUri == Location)
86-
.WithDefaultIdentifier("AcceptedResultAssertions.Uri")
56+
.WithDefaultIdentifier("AcceptedResult.Uri")
8757
.FailWith(FailureMessages.CommonFailMessage, expectedUri, Location);
8858

8959
return this;
@@ -108,7 +78,7 @@ public AcceptedResultAssertions WithUri(string uri, string reason = "", params o
10878
Execute.Assertion
10979
.BecauseOf(reason, reasonArgs)
11080
.ForCondition(uri == Location)
111-
.WithDefaultIdentifier("AcceptedResultAssertions.Uri")
81+
.WithDefaultIdentifier("AcceptedResult.Uri")
11282
.FailWith(FailureMessages.CommonFailMessage, uri, Location);
11383

11484
return this;

‎src/FluentAssertions.AspNetCore.Mvc/ActionResultAssertions.cs

+34-11
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@ public ActionResultAssertions(IActionResult subject) : base(subject)
2424
#endregion Public Constructors
2525

2626
#region Protected Properties
27-
27+
/// <summary>
28+
/// <inheritdoc />
29+
/// </summary>
2830
protected override string Identifier => "ActionResult";
2931

3032
#endregion Protected Properties
@@ -325,6 +327,27 @@ public StatusCodeResultAssertions BeStatusCodeResult(string reason = "", params
325327
return new StatusCodeResultAssertions(Subject as StatusCodeResult);
326328
}
327329

330+
/// <summary>
331+
/// Asserts that the subject is a <see cref="ObjectResult"/>.
332+
/// </summary>
333+
/// <param name="reason">
334+
/// A formatted phrase as is supported by <see cref="string.Format(string,object[])" /> explaining why the assertion
335+
/// is needed. If the phrase does not start with the word <i>because</i>, it is prepended automatically.
336+
/// </param>
337+
/// <param name="reasonArgs">
338+
/// Zero or more objects to format using the placeholders in <paramref name="reason"/>.
339+
/// </param>
340+
[CustomAssertion]
341+
public ObjectResultAssertions BeObjectResult(string reason = "", params object[] reasonArgs)
342+
{
343+
Execute.Assertion
344+
.BecauseOf(reason, reasonArgs)
345+
.ForCondition(Subject is ObjectResult)
346+
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(ObjectResult), Subject.GetType());
347+
348+
return new ObjectResultAssertions(Subject as ObjectResult);
349+
}
350+
328351
/// <summary>
329352
/// Asserts that the subject is an <see cref="OkResult"/>.
330353
/// </summary>
@@ -362,7 +385,7 @@ public OkObjectResultAssertions BeOkObjectResult(string reason = "", params obje
362385
Execute.Assertion
363386
.BecauseOf(reason, reasonArgs)
364387
.ForCondition(Subject is OkObjectResult)
365-
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(OkObjectResult).Name, Subject.GetType().Name);
388+
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(OkObjectResult), Subject.GetType());
366389

367390
return new OkObjectResultAssertions(Subject as OkObjectResult);
368391
}
@@ -404,7 +427,7 @@ public BadRequestObjectResultAssertions BeBadRequestObjectResult(string reason =
404427
Execute.Assertion
405428
.BecauseOf(reason, reasonArgs)
406429
.ForCondition(Subject is BadRequestObjectResult)
407-
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(BadRequestObjectResult).Name, Subject.GetType().Name);
430+
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(BadRequestObjectResult), Subject.GetType());
408431

409432
return new BadRequestObjectResultAssertions(Subject as BadRequestObjectResult);
410433
}
@@ -425,7 +448,7 @@ public CreatedResultAssertions BeCreatedResult(string reason = "", params object
425448
Execute.Assertion
426449
.BecauseOf(reason, reasonArgs)
427450
.ForCondition(Subject is CreatedResult)
428-
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(CreatedResult).Name, Subject.GetType().Name);
451+
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(CreatedResult), Subject.GetType());
429452

430453
return new CreatedResultAssertions(Subject as CreatedResult);
431454
}
@@ -488,7 +511,7 @@ public ForbidResultAssertions BeForbidResult(string reason = "", params object[]
488511
Execute.Assertion
489512
.BecauseOf(reason, reasonArgs)
490513
.ForCondition(Subject is ForbidResult)
491-
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(ForbidResult).Name, Subject.GetType().Name);
514+
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(ForbidResult), Subject.GetType());
492515

493516
return new ForbidResultAssertions(Subject as ForbidResult);
494517
}
@@ -551,7 +574,7 @@ public NotFoundObjectResultAssertions BeNotFoundObjectResult(string reason = "",
551574
Execute.Assertion
552575
.BecauseOf(reason, reasonArgs)
553576
.ForCondition(Subject is NotFoundObjectResult)
554-
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(NotFoundObjectResult).Name, Subject.GetType().Name);
577+
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(NotFoundObjectResult), Subject.GetType());
555578

556579
return new NotFoundObjectResultAssertions(Subject as NotFoundObjectResult);
557580
}
@@ -593,7 +616,7 @@ public SignInResultAssertions BeSignInResult(string reason = "", params object[]
593616
Execute.Assertion
594617
.BecauseOf(reason, reasonArgs)
595618
.ForCondition(Subject is SignInResult)
596-
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(SignInResult).Name, Subject.GetType().Name);
619+
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(SignInResult), Subject.GetType());
597620

598621
return new SignInResultAssertions(Subject as SignInResult);
599622
}
@@ -656,7 +679,7 @@ public AcceptedAtActionResultAssertions BeAcceptedAtActionResult(string reason =
656679
Execute.Assertion
657680
.BecauseOf(reason, reasonArgs)
658681
.ForCondition(Subject is AcceptedAtActionResult)
659-
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(AcceptedAtActionResult).Name, Subject.GetType().Name);
682+
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(AcceptedAtActionResult), Subject.GetType());
660683

661684
return new AcceptedAtActionResultAssertions(Subject as AcceptedAtActionResult);
662685
}
@@ -677,7 +700,7 @@ public AcceptedAtRouteResultAssertions BeAcceptedAtRouteResult(string reason = "
677700
Execute.Assertion
678701
.BecauseOf(reason, reasonArgs)
679702
.ForCondition(Subject is AcceptedAtRouteResult)
680-
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(AcceptedAtRouteResult).Name, Subject.GetType().Name);
703+
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(AcceptedAtRouteResult), Subject.GetType());
681704

682705
return new AcceptedAtRouteResultAssertions(Subject as AcceptedAtRouteResult);
683706
}
@@ -698,7 +721,7 @@ public CreatedAtActionResultAssertions BeCreatedAtActionResult(string reason = "
698721
Execute.Assertion
699722
.BecauseOf(reason, reasonArgs)
700723
.ForCondition(Subject is CreatedAtActionResult)
701-
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(CreatedAtActionResult).Name, Subject.GetType().Name);
724+
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(CreatedAtActionResult), Subject.GetType());
702725

703726
return new CreatedAtActionResultAssertions(Subject as CreatedAtActionResult);
704727
}
@@ -719,7 +742,7 @@ public CreatedAtRouteResultAssertions BeCreatedAtRouteResult(string reason = "",
719742
Execute.Assertion
720743
.BecauseOf(reason, reasonArgs)
721744
.ForCondition(Subject is CreatedAtRouteResult)
722-
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(CreatedAtRouteResult).Name, Subject.GetType().Name);
745+
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(CreatedAtRouteResult), Subject.GetType());
723746

724747
return new CreatedAtRouteResultAssertions(Subject as CreatedAtRouteResult);
725748
}

0 commit comments

Comments
 (0)