Skip to content

Commit

Permalink
Obsolete VerifyJsonWriter.WriteProperty and replace with WriteMember (V…
Browse files Browse the repository at this point in the history
  • Loading branch information
SimonCropp authored Jul 26, 2022
1 parent 81755eb commit 8dd521a
Show file tree
Hide file tree
Showing 13 changed files with 53 additions and 51 deletions.
2 changes: 1 addition & 1 deletion docs/serializer-settings.md
Original file line number Diff line number Diff line change
Expand Up @@ -416,7 +416,7 @@ class CompanyConverter :
WriteOnlyJsonConverter<Company>
{
public override void Write(VerifyJsonWriter writer, Company company) =>
writer.WriteProperty(company, company.Name, "Name");
writer.WriteMember(company, company.Name, "Name");
}
```
<sup><a href='/src/Verify.Tests/Snippets/Snippets.cs#L152-L161' title='Snippet source file'>snippet source</a> | <a href='#snippet-companyconverter' title='Start of snippet'>anchor</a></sup>
Expand Down
4 changes: 2 additions & 2 deletions src/Verify.Tests/Serialization/SerializationTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2152,7 +2152,7 @@ class Converter :
public override void Write(VerifyJsonWriter writer, ConverterTarget target)
{
writer.WriteStartObject();
writer.WriteProperty(target, target.Name, "Name");
writer.WriteMember(target, target.Name, "Name");
writer.WritePropertyName("Custom");
writer.WriteValue("CustomValue");
writer.WriteEnd();
Expand Down Expand Up @@ -2180,7 +2180,7 @@ class StaticConverter :
public override void Write(VerifyJsonWriter writer, StaticConverterTarget target)
{
writer.WriteStartObject();
writer.WriteProperty(target, target.Name, "Name");
writer.WriteMember(target, target.Name, "Name");
writer.WritePropertyName("Custom");
writer.WriteValue("CustomValue");
writer.WriteEnd();
Expand Down
2 changes: 1 addition & 1 deletion src/Verify.Tests/Snippets/Snippets.cs
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ class CompanyConverter :
WriteOnlyJsonConverter<Company>
{
public override void Write(VerifyJsonWriter writer, Company company) =>
writer.WriteProperty(company, company.Name, "Name");
writer.WriteMember(company, company.Name, "Name");
}

#endregion
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,17 @@ public override void Write(VerifyJsonWriter writer, AggregateException exception
{
writer.WriteStartObject();

writer.WriteProperty(exception, exception.GetType(), "Type");
writer.WriteMember(exception, exception.GetType(), "Type");
if (exception.InnerExceptions.Count == 1)
{
writer.WriteProperty(exception, exception.InnerException, "InnerException");
writer.WriteMember(exception, exception.InnerException, "InnerException");
}
else
{
writer.WriteProperty(exception, exception.InnerExceptions, "InnerExceptions");
writer.WriteMember(exception, exception.InnerExceptions, "InnerExceptions");
}

writer.WriteProperty(exception, exception.StackTrace, "StackTrace");
writer.WriteMember(exception, exception.StackTrace, "StackTrace");

writer.WriteEndObject();
}
Expand Down
6 changes: 3 additions & 3 deletions src/Verify/Serialization/Converters/ClaimConverter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,13 @@ public override void Write(VerifyJsonWriter writer, Claim claim)
.Replace("http://schemas.xmlsoap.org/ws/2009/09/identity/claims/", "")
.Replace("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/", "")
.Replace("http://schemas.microsoft.com/ws/2008/06/identity/claims/", "");
writer.WriteProperty(claim, claim.Value, type);
writer.WriteMember(claim, claim.Value, type);

writer.WriteProperty(claim, claim.Properties, "Properties");
writer.WriteMember(claim, claim.Properties, "Properties");

if (claim.Subject is {Name: { }})
{
writer.WriteProperty(claim, claim.Subject, "Subject");
writer.WriteMember(claim, claim.Subject, "Subject");
}

writer.WriteEndObject();
Expand Down
12 changes: 6 additions & 6 deletions src/Verify/Serialization/Converters/ClaimsIdentityConverter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,19 @@ public override void Write(VerifyJsonWriter writer, ClaimsIdentity identity)
{
writer.WriteStartObject();

writer.WriteProperty(identity, identity.Claims, "Claims");
writer.WriteProperty(identity, identity.Actor, "Actor");
writer.WriteProperty(identity, identity.AuthenticationType, "AuthenticationType");
writer.WriteProperty(identity, identity.Label, "Label");
writer.WriteMember(identity, identity.Claims, "Claims");
writer.WriteMember(identity, identity.Actor, "Actor");
writer.WriteMember(identity, identity.AuthenticationType, "AuthenticationType");
writer.WriteMember(identity, identity.Label, "Label");

if (identity.NameClaimType != ClaimTypes.Name)
{
writer.WriteProperty(identity, identity.NameClaimType, "NameClaimType");
writer.WriteMember(identity, identity.NameClaimType, "NameClaimType");
}

if (identity.RoleClaimType != ClaimTypes.Role)
{
writer.WriteProperty(identity, identity.RoleClaimType, "RoleClaimType");
writer.WriteMember(identity, identity.RoleClaimType, "RoleClaimType");
}

writer.WriteEndObject();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ public override void Write(VerifyJsonWriter writer, ClaimsPrincipal principal)
}

writer.WriteStartObject();
writer.WriteProperty(principal, principal.Identities, "Identities");
writer.WriteMember(principal, principal.Identities, "Identities");
writer.WriteEndObject();
}
}
6 changes: 3 additions & 3 deletions src/Verify/Serialization/Converters/DelegateConverter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,13 @@ public override void Write(VerifyJsonWriter writer, Delegate @delegate)
{
writer.WriteStartObject();

writer.WriteProperty(@delegate, @delegate.GetType(), "Type");
writer.WriteMember(@delegate, @delegate.GetType(), "Type");

var declaringType = @delegate.Method.DeclaringType;
writer.WriteProperty(@delegate, declaringType, "Target");
writer.WriteMember(@delegate, declaringType, "Target");

var s = @delegate.Method.ToString()!;
writer.WriteProperty(@delegate, CleanMethodName(s), "Method");
writer.WriteMember(@delegate, CleanMethodName(s), "Method");

writer.WriteEndObject();
}
Expand Down
8 changes: 4 additions & 4 deletions src/Verify/Serialization/Converters/TaskConverter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@
public override void Write(VerifyJsonWriter writer, Task task)
{
writer.WriteStartObject();
writer.WriteProperty(task, task.Status, "Status");
writer.WriteMember(task, task.Status, "Status");

if (task.CreationOptions != TaskCreationOptions.None)
{
writer.WriteProperty(task, task.CreationOptions, "CreationOptions");
writer.WriteMember(task, task.CreationOptions, "CreationOptions");
}

writer.WriteProperty(task, task.Exception, "Exception");
writer.WriteMember(task, task.Exception, "Exception");
WriteResult(writer, task);

writer.WriteEndObject();
Expand Down Expand Up @@ -41,6 +41,6 @@ static void WriteResult(VerifyJsonWriter writer, Task task)

var resultProperty = type.GetProperty("Result")!;
var result = resultProperty.GetValue(task);
writer.WriteProperty(task, result, "Result");
writer.WriteMember(task, result, "Result");
}
}
14 changes: 7 additions & 7 deletions src/Verify/Serialization/Converters/ValueTaskConverter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,9 @@ public override void Write(VerifyJsonWriter writer, object value)

if (value is ValueTask task)
{
writer.WriteProperty(task, task.IsCanceled, "IsCanceled");
writer.WriteProperty(task, task.IsCompleted, "IsCompleted");
writer.WriteProperty(task, task.IsFaulted, "IsFaulted");
writer.WriteMember(task, task.IsCanceled, "IsCanceled");
writer.WriteMember(task, task.IsCompleted, "IsCompleted");
writer.WriteMember(task, task.IsFaulted, "IsFaulted");
}
else
{
Expand All @@ -51,9 +51,9 @@ public override void Write(VerifyJsonWriter writer, object value)
static void WriteGeneric<T>(VerifyJsonWriter writer, ValueTask<T?> task)
where T : notnull
{
writer.WriteProperty(task, task.IsCanceled, "IsCanceled");
writer.WriteProperty(task, task.IsCompleted, "IsCompleted");
writer.WriteProperty(task, task.IsFaulted, "IsFaulted");
writer.WriteMember(task, task.IsCanceled, "IsCanceled");
writer.WriteMember(task, task.IsCompleted, "IsCompleted");
writer.WriteMember(task, task.IsFaulted, "IsFaulted");
WriteResult(writer, task);
}

Expand All @@ -74,6 +74,6 @@ static void WriteResult<T>(VerifyJsonWriter writer, ValueTask<T?> task)
return;
}

writer.WriteProperty(task, task.Result, "Result");
writer.WriteMember(task, task.Result, "Result");
}
}
13 changes: 5 additions & 8 deletions src/Verify/Serialization/SerializationSettings_Ignore.cs
Original file line number Diff line number Diff line change
Expand Up @@ -153,10 +153,7 @@ internal bool ShouldIgnore(MemberInfo member)
return ShouldIgnore(member.DeclaringType!, member.MemberType(), member.Name);
}

internal bool ShouldIgnore<TTarget, TProperty>(string name) =>
ShouldIgnore(typeof(TTarget), typeof(TProperty), name);

bool ShouldIgnore(Type declaringType, Type memberType, string name)
internal bool ShouldIgnore(Type declaringType, Type memberType, string name)
{
if (ignoredTypes.Any(memberType.InheritsFrom))
{
Expand Down Expand Up @@ -192,15 +189,15 @@ bool ShouldIgnore(Type declaringType, Type memberType, string name)
return false;
}

internal bool ShouldSerialize<TMember>(TMember value)
where TMember : notnull
internal bool ShouldSerialize(object value)
{
if (ignoredInstances.TryGetValue(typeof(TMember), out var funcs))
var memberType = value.GetType();
if (ignoredInstances.TryGetValue(memberType, out var funcs))
{
return funcs.All(func => !func(value));
}

if (IsIgnoredCollection(typeof(TMember)))
if (IsIgnoredCollection(memberType))
{
// since inside IsCollection, it is safe to use IEnumerable
var collection = (IEnumerable) value;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ public static partial class VerifierSettings
internal static ConvertTargetMember? GetMemberConverter<T>(string name) =>
GetMemberConverter(typeof(T), name);

static ConvertTargetMember? GetMemberConverter(Type? declaringType, string name)
internal static ConvertTargetMember? GetMemberConverter(Type? declaringType, string name)
{
foreach (var pair in membersConverters)
{
Expand Down
25 changes: 15 additions & 10 deletions src/Verify/Serialization/VerifyJsonWriter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -120,24 +120,29 @@ public override void WriteValue(Guid value)
WriteRawValue(value.ToString("D", CultureInfo.InvariantCulture));
}

//TODO: remove generics in next major
/// <summary>
/// Writes a property name and value while respecting other custom serialization settings.
/// </summary>
[Obsolete("Use WriteMember", true)]
public void WriteProperty<T, TMember>(T target, TMember? value, string name)
where TMember : notnull
where T : notnull =>
WriteMember(target, value, name);

/// <summary>
/// Writes a property name and value while respecting other custom serialization settings.
/// </summary>
public void WriteMember(object target, object? value, string name)
{
if (settings.ShouldIgnore<T, TMember>(name))
if (value is null)
{
return;
}

InnerWriteProperty(target, value, name);
}

void InnerWriteProperty<T, TMember>(T target, TMember? value, string name)
where TMember : notnull
{
if (value is null)
var declaringType = target.GetType();
var memberType = value.GetType();
if (settings.ShouldIgnore(declaringType, memberType, name))
{
return;
}
Expand All @@ -147,10 +152,10 @@ void InnerWriteProperty<T, TMember>(T target, TMember? value, string name)
return;
}

var converter = VerifierSettings.GetMemberConverter<T>(name);
var converter = VerifierSettings.GetMemberConverter(declaringType, name);
if (converter != null)
{
var converted = converter(target!, value);
var converted = converter(target, value);
if (converted == null)
{
return;
Expand Down

0 comments on commit 8dd521a

Please sign in to comment.