Skip to content

Commit

Permalink
Merge pull request #8 from calebjenkins/develop
Browse files Browse the repository at this point in the history
no-publish - update to unit tests
  • Loading branch information
calebjenkins committed Apr 3, 2023
2 parents 6cc79a4 + 37f6b20 commit 54fc697
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 27 deletions.
6 changes: 3 additions & 3 deletions src/ExtensionTests/EnumExtensionTests.cs
Expand Up @@ -104,19 +104,19 @@ public class ExampleClass
{

[EnumStringValidatorAttribute(typeof(OptionsWithDescriptions))]
public string Size { get; set; }
public string Size { get; set; } = string.Empty;
}

public class RequiredPropertyClass
{
[Required(), EnumStringValidatorAttribute(typeof(OptionsWithDescriptions))]
public string Size { get; set; }
public string Size { get; set; } = string.Empty;
}

public class CaseSensitivePropertyClass
{
[Required(), EnumStringValidatorAttribute(typeof(OptionsWithDescriptions), false)]
public string Size { get; set; }
public string Size { get; set; } = string.Empty;
}


40 changes: 21 additions & 19 deletions src/ExtensionTests/EnumJSONSerializationTests.cs
Expand Up @@ -9,11 +9,12 @@ public class EnumJSONSerializationTests
public void SerializingWithStraightEnums()
{
// var converter = new Jason
var StartMsg = new MessageWithOptionsEnum() { Options = Options.Large };
var msgJson = JsonConvert.SerializeObject(StartMsg, new StringEnumConverter());

var EndMsg = JsonConvert.DeserializeObject<MessageWithOptions2Enum>(msgJson);
var startToString = StartMsg.Options.ToString();
var StartMsg = new MessageWithOptionsEnum() { Options = Options.Large };

var msgJson = StartMsg.ToJson();
var EndMsg = msgJson.FromJson<MessageWithOptions2Enum>();

var startToString = StartMsg.Options.ToString();
var endToString = EndMsg.Options.ToString();

startToString.Should().Be(endToString);
Expand All @@ -24,21 +25,21 @@ public void SerializingWithStraightEnums()
[Fact] // It's a lot of work to get the object to serialize the enum as a string.
public void SerializingWithEnumsBacking()
{
var StartMsg = new MessageWithEnumBacking () { Options = Options.Large };
var msgJson = JsonConvert.SerializeObject(StartMsg);

var EndMsg = JsonConvert.DeserializeObject<MessageWithOptions2Enum>(msgJson);
var StartMsg = new MessageWithEnumBacking () { Options = Options.Large };

StartMsg.Options.ToString().Should().Be(EndMsg.Options.ToString());
var msgJson = StartMsg.ToJson();
var EndMsg = msgJson.FromJson<MessageWithOptions2Enum>();

StartMsg.Options.ToString().Should().Be(EndMsg.Options.ToString());
}

[Fact] // This is much better. Using a Newtonsoft attribute on the enum, forces the ToString on the enum instead of the index
public void SerializingWithStraightEnumsUsingJasonAttributes()
{
var StartMsg = new MessageWithOptions1EnumWithAttribute () { Options = Options.Large };
var msgJson = JsonConvert.SerializeObject(StartMsg);

var EndMsg = JsonConvert.DeserializeObject<MessageWithStringOptions>(msgJson);
var StartMsg = new MessageWithOptions1EnumWithAttribute () { Options = Options.Large };

var msgJson = StartMsg.ToJson();
var EndMsg = msgJson.FromJson<MessageWithStringOptions>();

StartMsg.Options.ToString().Should().Be(EndMsg.Options.ToString());
}
Expand All @@ -47,12 +48,13 @@ public void SerializingWithStraightEnumsUsingJasonAttributes()
public void SerializingWithEnumMemberAttribute_DoesntWork_Enum_Serializes_Index_Instead_of_String()
{
var StartMsg = new MessageWithEnumMemberOptions() { Options = OptionWithEnumMember.Largish };
var msgJson = JsonConvert.SerializeObject(StartMsg);

var EndMsg = JsonConvert.DeserializeObject<MessageWithStringOptions>(msgJson);

var msgJson = StartMsg.ToJson();
var EndMsg = msgJson.FromJson<MessageWithStringOptions>();

StartMsg.Options.ToString().Should().NotBe(EndMsg.Options.ToString());
EndMsg.Options.ToString().Should().Be("0");
StartMsg.Options.ToString().Should().Be("Largish");
// Maps to ..
EndMsg.Options.Should().Be("Large");
}
}
}
10 changes: 5 additions & 5 deletions src/ExtensionTests/EnumWithDescriptionTests.cs
Expand Up @@ -10,9 +10,9 @@ public class EnumWithDescriptionTests
public void ShouldUseDescription()
{
var StartMsg = new MessageOptionsWithDescriptions() { Options = OptionsWithDescriptions.Large };
var msgJson = JsonConvert.SerializeObject(StartMsg);
var msgJson = StartMsg.ToJson();

var EndMsg = JsonConvert.DeserializeObject<MessageOptionsWithDescriptions>(msgJson);
var EndMsg = msgJson.FromJson<MessageOptionsWithDescriptions>();

OptionsWithDescriptions.Large.ToString()
.Should().Be(EndMsg.Options.ToString());
Expand All @@ -22,9 +22,9 @@ public void ShouldUseDescription()
public void ShouldUseDescriptionOrString()
{
var StartMsg = new MessageOptionsWithDescriptions() { Options = OptionsWithDescriptions.Large };
var msgJson = JsonConvert.SerializeObject(StartMsg);

var EndMsg = JsonConvert.DeserializeObject<MessageOptionsWithDescriptions>(msgJson);

var msgJson = StartMsg.ToJson();
var EndMsg = msgJson.FromJson<MessageOptionsWithDescriptions>();

StartMsg.Options.ToString()
.Should().Be(EndMsg.Options.ToString());
Expand Down

0 comments on commit 54fc697

Please sign in to comment.