Skip to content

Version 3.1 #22

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 20 commits into from
Oct 24, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
3a336dc
Clean up warnings.
faddiv Jul 23, 2020
d1f4e52
Fix messages in several Assertion.
faddiv Aug 17, 2020
4ab62e1
Add Basic ObjectAssertions.
faddiv Aug 17, 2020
46be55d
Add ContainsFormatter To ObjectResultAssertions.
faddiv Aug 18, 2020
f9348d5
Implement ObjectResultAssertions.ContainsContentType
faddiv Aug 18, 2020
5cc6e1b
ContainsContentTypes -> WithContentTypes
faddiv Aug 31, 2020
bd5f61d
Fix Several assertion not including reason text.
faddiv Aug 31, 2020
b6abf8d
Add ObjectAssertions.WithDeclaredType.
faddiv Aug 31, 2020
3d09bb1
Add ObjectAssertions.WithStatusCode. Simplify FailureMessageHelper.
faddiv Sep 18, 2020
ae13c8b
Deduplicate package tags.
faddiv Oct 24, 2020
86c802d
Refactor AcceptedAtActionResultAssertions to use ObjectResultAssertio…
faddiv Oct 24, 2020
9d01093
Refactor AcceptedAtRouteResultAssertions to use ObjectResultAssertion…
faddiv Oct 24, 2020
df3b2b2
Refactor AcceptedResultAssertions to use ObjectResultAssertionsBase. …
faddiv Oct 24, 2020
c91edc5
Refactor CreatedAtActionResultAssertions to use ObjectResultAssertion…
faddiv Oct 24, 2020
bb704e9
Refactor CreatedAtRouteResultAssertions to use ObjectResultAssertions…
faddiv Oct 24, 2020
8837b44
Refactor AcceptedResultAssertions to use ObjectResultAssertionsBase.
faddiv Oct 24, 2020
1eaf112
Refactor NotFoundObjectResultAssertions to use ObjectResultAssertions…
faddiv Oct 24, 2020
72139a5
Refactor OkObjectResultAssertions to use ObjectResultAssertionsBase.
faddiv Oct 24, 2020
00eb0b4
Add missing comments.
faddiv Oct 24, 2020
477d79f
Bump version.
faddiv Oct 24, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,16 +1,15 @@
using System;
using System.Diagnostics;
using FluentAssertions.Execution;
using FluentAssertions.Primitives;
using FluentAssertions.Execution;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Diagnostics;

namespace FluentAssertions.AspNetCore.Mvc
{
/// <summary>
/// Contains a number of methods to assert that a <see cref="AcceptedAtActionResult"/> is in the expected state.
/// </summary>
[DebuggerNonUserCode]
public class AcceptedAtActionResultAssertions : ObjectAssertions
public class AcceptedAtActionResultAssertions : ObjectResultAssertionsBase<AcceptedAtActionResult, AcceptedAtActionResultAssertions>
{
/// <summary>
/// Initializes a new instance of the <see cref="AcceptedAtActionResultAssertions" /> class.
Expand All @@ -30,7 +29,7 @@ public AcceptedAtActionResultAssertions(AcceptedAtActionResult subject) : base(s
/// </param>
public AcceptedAtActionResultAssertions WithActionName(string expectedActionName, string reason = "", params object[] reasonArgs)
{
string actualActionName = (Subject as AcceptedAtActionResult)?.ActionName;
string actualActionName = ObjectResultSubject.ActionName;

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

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

AssertionHelpers.AssertStringObjectDictionary(subjectTyped.RouteValues,
AssertionHelpers.AssertStringObjectDictionary(actualRouteValues,
"AcceptedAtActionResult.RouteValues", key, expectedValue, reason, reasonArgs);

return this;
}

/// <summary>
/// Asserts the value is of the expected type.
/// </summary>
/// <typeparam name="TValue">The expected type.</typeparam>
/// <returns>The typed value.</returns>
public TValue ValueAs<TValue>()
{
var subjectTyped = Subject as AcceptedAtActionResult;
var value = subjectTyped.Value;

if (value == null)
Execute.Assertion
.WithDefaultIdentifier("AcceptedAtActionResult.Value")
.FailWith(FailureMessages.CommonNullWasSuppliedFailMessage, typeof(TValue));

Execute.Assertion
.ForCondition(value is TValue)
.WithDefaultIdentifier("AcceptedAtActionResult.Value")
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(TValue), value.GetType());

return (TValue)value;
}
}
}
Original file line number Diff line number Diff line change
@@ -1,16 +1,15 @@
using System;
using System.Diagnostics;
using FluentAssertions.Execution;
using FluentAssertions.Primitives;
using FluentAssertions.Execution;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Diagnostics;

namespace FluentAssertions.AspNetCore.Mvc
{
/// <summary>
/// Contains a number of methods to assert that a <see cref="AcceptedAtRouteResult"/> is in the expected state.
/// </summary>
[DebuggerNonUserCode]
public class AcceptedAtRouteResultAssertions : ObjectAssertions
public class AcceptedAtRouteResultAssertions : ObjectResultAssertionsBase<AcceptedAtRouteResult, AcceptedAtRouteResultAssertions>
{
/// <summary>
/// Initializes a new instance of the <see cref="AcceptedAtRouteResultAssertions" /> class.
Expand All @@ -30,13 +29,13 @@ public AcceptedAtRouteResultAssertions(AcceptedAtRouteResult subject) : base(sub
/// </param>
public AcceptedAtRouteResultAssertions WithRouteName(string expectedRouteName, string reason = "", params object[] reasonArgs)
{
var subjectTyped = Subject as AcceptedAtRouteResult;
var actualRouteName = ObjectResultSubject.RouteName;

Execute.Assertion
.BecauseOf(reason, reasonArgs)
.ForCondition(string.Equals(expectedRouteName, subjectTyped.RouteName, StringComparison.OrdinalIgnoreCase))
.ForCondition(string.Equals(expectedRouteName, actualRouteName, StringComparison.OrdinalIgnoreCase))
.WithDefaultIdentifier("AcceptedAtRouteResult.RouteName")
.FailWith(FailureMessages.CommonFailMessage, expectedRouteName, subjectTyped.RouteName);
.FailWith(FailureMessages.CommonFailMessage, expectedRouteName, actualRouteName);

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

AssertionHelpers.AssertStringObjectDictionary(subjectTyped.RouteValues,
AssertionHelpers.AssertStringObjectDictionary(actualRouteValues,
"AcceptedAtRouteResult.RouteValues", key, expectedValue, reason, reasonArgs);

return this;
}

/// <summary>
/// Asserts the value is of the expected type.
/// </summary>
/// <typeparam name="TValue">The expected type.</typeparam>
/// <returns>The typed value.</returns>
public TValue ValueAs<TValue>()
{
var subjectTyped = Subject as AcceptedAtRouteResult;
var value = subjectTyped.Value;

if (value == null)
Execute.Assertion
.WithDefaultIdentifier("AcceptedAtRouteResult.Value")
.FailWith(FailureMessages.CommonNullWasSuppliedFailMessage, typeof(TValue));

Execute.Assertion
.ForCondition(value is TValue)
.WithDefaultIdentifier("AcceptedAtRouteResult.Value")
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(TValue), value.GetType());

return (TValue)value;
}
}
}
46 changes: 8 additions & 38 deletions src/FluentAssertions.AspNetCore.Mvc/AcceptedResultAssertions.cs
Original file line number Diff line number Diff line change
@@ -1,16 +1,15 @@
using System;
using System.Diagnostics;
using FluentAssertions.Execution;
using FluentAssertions.Primitives;
using FluentAssertions.Execution;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Diagnostics;

namespace FluentAssertions.AspNetCore.Mvc
{
/// <summary>
/// Contains a number of methods to assert that a <see cref="AcceptedResult"/> is in the expected state.
/// </summary>
[DebuggerNonUserCode]
public class AcceptedResultAssertions : ObjectAssertions
public class AcceptedResultAssertions : ObjectResultAssertionsBase<AcceptedResult, AcceptedResultAssertions>
{
#region Public Constructors

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

#region Public Properties
/// <summary>
/// The value on the AcceptedResult
/// The location on the AcceptedResult.
/// </summary>
public object Value => AcceptedResultSubject.Value;

public string Location => AcceptedResultSubject.Location;

#endregion

#region Private Properties
private AcceptedResult AcceptedResultSubject => (AcceptedResult)Subject;
public string Location => ObjectResultSubject.Location;

#endregion

#region Public Methods
/// <summary>
/// Asserts the value is of the expected type.
/// </summary>
/// <typeparam name="TValue">The expected type.</typeparam>
/// <returns>The typed value.</returns>
public TValue ValueAs<TValue>()
{
var value = AcceptedResultSubject.Value;

if (value == null)
Execute.Assertion
.WithDefaultIdentifier("AcceptedResultAssertions.Value")
.FailWith(FailureMessages.CommonNullWasSuppliedFailMessage, typeof(TValue));

Execute.Assertion
.ForCondition(value is TValue)
.WithDefaultIdentifier("AcceptedResultAssertions.Value")
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(TValue), value.GetType());

return (TValue)value;
}

/// <summary>
/// Asserts the uri has the expected value.
/// </summary>
Expand All @@ -83,7 +53,7 @@ public AcceptedResultAssertions WithUri(Uri uri, string reason = "", params obje
Execute.Assertion
.BecauseOf(reason, reasonArgs)
.ForCondition(expectedUri == Location)
.WithDefaultIdentifier("AcceptedResultAssertions.Uri")
.WithDefaultIdentifier("AcceptedResult.Uri")
.FailWith(FailureMessages.CommonFailMessage, expectedUri, Location);

return this;
Expand All @@ -108,7 +78,7 @@ public AcceptedResultAssertions WithUri(string uri, string reason = "", params o
Execute.Assertion
.BecauseOf(reason, reasonArgs)
.ForCondition(uri == Location)
.WithDefaultIdentifier("AcceptedResultAssertions.Uri")
.WithDefaultIdentifier("AcceptedResult.Uri")
.FailWith(FailureMessages.CommonFailMessage, uri, Location);

return this;
Expand Down
45 changes: 34 additions & 11 deletions src/FluentAssertions.AspNetCore.Mvc/ActionResultAssertions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,9 @@ public ActionResultAssertions(IActionResult subject) : base(subject)
#endregion Public Constructors

#region Protected Properties

/// <summary>
/// <inheritdoc />
/// </summary>
protected override string Identifier => "ActionResult";

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

/// <summary>
/// Asserts that the subject is a <see cref="ObjectResult"/>.
/// </summary>
/// <param name="reason">
/// A formatted phrase as is supported by <see cref="string.Format(string,object[])" /> explaining why the assertion
/// is needed. If the phrase does not start with the word <i>because</i>, it is prepended automatically.
/// </param>
/// <param name="reasonArgs">
/// Zero or more objects to format using the placeholders in <paramref name="reason"/>.
/// </param>
[CustomAssertion]
public ObjectResultAssertions BeObjectResult(string reason = "", params object[] reasonArgs)
{
Execute.Assertion
.BecauseOf(reason, reasonArgs)
.ForCondition(Subject is ObjectResult)
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(ObjectResult), Subject.GetType());

return new ObjectResultAssertions(Subject as ObjectResult);
}

/// <summary>
/// Asserts that the subject is an <see cref="OkResult"/>.
/// </summary>
Expand Down Expand Up @@ -362,7 +385,7 @@ public OkObjectResultAssertions BeOkObjectResult(string reason = "", params obje
Execute.Assertion
.BecauseOf(reason, reasonArgs)
.ForCondition(Subject is OkObjectResult)
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(OkObjectResult).Name, Subject.GetType().Name);
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(OkObjectResult), Subject.GetType());

return new OkObjectResultAssertions(Subject as OkObjectResult);
}
Expand Down Expand Up @@ -404,7 +427,7 @@ public BadRequestObjectResultAssertions BeBadRequestObjectResult(string reason =
Execute.Assertion
.BecauseOf(reason, reasonArgs)
.ForCondition(Subject is BadRequestObjectResult)
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(BadRequestObjectResult).Name, Subject.GetType().Name);
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(BadRequestObjectResult), Subject.GetType());

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

return new CreatedResultAssertions(Subject as CreatedResult);
}
Expand Down Expand Up @@ -488,7 +511,7 @@ public ForbidResultAssertions BeForbidResult(string reason = "", params object[]
Execute.Assertion
.BecauseOf(reason, reasonArgs)
.ForCondition(Subject is ForbidResult)
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(ForbidResult).Name, Subject.GetType().Name);
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(ForbidResult), Subject.GetType());

return new ForbidResultAssertions(Subject as ForbidResult);
}
Expand Down Expand Up @@ -551,7 +574,7 @@ public NotFoundObjectResultAssertions BeNotFoundObjectResult(string reason = "",
Execute.Assertion
.BecauseOf(reason, reasonArgs)
.ForCondition(Subject is NotFoundObjectResult)
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(NotFoundObjectResult).Name, Subject.GetType().Name);
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(NotFoundObjectResult), Subject.GetType());

return new NotFoundObjectResultAssertions(Subject as NotFoundObjectResult);
}
Expand Down Expand Up @@ -593,7 +616,7 @@ public SignInResultAssertions BeSignInResult(string reason = "", params object[]
Execute.Assertion
.BecauseOf(reason, reasonArgs)
.ForCondition(Subject is SignInResult)
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(SignInResult).Name, Subject.GetType().Name);
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(SignInResult), Subject.GetType());

return new SignInResultAssertions(Subject as SignInResult);
}
Expand Down Expand Up @@ -656,7 +679,7 @@ public AcceptedAtActionResultAssertions BeAcceptedAtActionResult(string reason =
Execute.Assertion
.BecauseOf(reason, reasonArgs)
.ForCondition(Subject is AcceptedAtActionResult)
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(AcceptedAtActionResult).Name, Subject.GetType().Name);
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(AcceptedAtActionResult), Subject.GetType());

return new AcceptedAtActionResultAssertions(Subject as AcceptedAtActionResult);
}
Expand All @@ -677,7 +700,7 @@ public AcceptedAtRouteResultAssertions BeAcceptedAtRouteResult(string reason = "
Execute.Assertion
.BecauseOf(reason, reasonArgs)
.ForCondition(Subject is AcceptedAtRouteResult)
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(AcceptedAtRouteResult).Name, Subject.GetType().Name);
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(AcceptedAtRouteResult), Subject.GetType());

return new AcceptedAtRouteResultAssertions(Subject as AcceptedAtRouteResult);
}
Expand All @@ -698,7 +721,7 @@ public CreatedAtActionResultAssertions BeCreatedAtActionResult(string reason = "
Execute.Assertion
.BecauseOf(reason, reasonArgs)
.ForCondition(Subject is CreatedAtActionResult)
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(CreatedAtActionResult).Name, Subject.GetType().Name);
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(CreatedAtActionResult), Subject.GetType());

return new CreatedAtActionResultAssertions(Subject as CreatedAtActionResult);
}
Expand All @@ -719,7 +742,7 @@ public CreatedAtRouteResultAssertions BeCreatedAtRouteResult(string reason = "",
Execute.Assertion
.BecauseOf(reason, reasonArgs)
.ForCondition(Subject is CreatedAtRouteResult)
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(CreatedAtRouteResult).Name, Subject.GetType().Name);
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(CreatedAtRouteResult), Subject.GetType());

return new CreatedAtRouteResultAssertions(Subject as CreatedAtRouteResult);
}
Expand Down
Loading