Add some unit tests for enum serialization

This commit is contained in:
Phil Haack
2016-06-30 14:53:41 -07:00
parent 8b61566549
commit d42fcb79be
@@ -108,6 +108,20 @@ namespace Octokit.Tests
Assert.Equal("{\"name\":\"RmVycmlzIEJ1ZWxsZXI=\",\"description\":\"stuff\",\"content\":\"RGF5IG9mZg==\"}", json);
}
[Fact]
public void HandlesEnum()
{
var item = new ObjectWithEnumProperty
{
Name = "Ferris Bueller",
SomeEnum = SomeEnum.PlusOne
};
var json = new SimpleJsonSerializer().Serialize(item);
Assert.Equal("{\"name\":\"Ferris Bueller\",\"some_enum\":\"+1\"}", json);
}
}
@@ -282,6 +296,36 @@ namespace Octokit.Tests
Assert.False(sample.IsSomething);
Assert.True(sample.Private);
}
[Fact]
public void DeserializesEnum()
{
const string json = @"{""some_enum"":""unicode""}";
var sample = new SimpleJsonSerializer().Deserialize<ObjectWithEnumProperty>(json);
Assert.Equal(SomeEnum.Unicode, sample.SomeEnum);
}
[Fact]
public void RemovesDashFromEnums()
{
const string json = @"{""some_enum"":""utf-8""}";
var sample = new SimpleJsonSerializer().Deserialize<ObjectWithEnumProperty>(json);
Assert.Equal(SomeEnum.Utf8, sample.SomeEnum);
}
[Fact]
public void UnderstandsParameterAttribute()
{
const string json = @"{""some_enum"":""+1""}";
var sample = new SimpleJsonSerializer().Deserialize<ObjectWithEnumProperty>(json);
Assert.Equal(SomeEnum.PlusOne, sample.SomeEnum);
}
}
public class Sample
@@ -305,4 +349,22 @@ namespace Octokit.Tests
public string Description { get; set; }
}
}
public class ObjectWithEnumProperty
{
public string Name { get; set; }
public SomeEnum SomeEnum { get; set; }
}
public enum SomeEnum
{
[Parameter(Value = "+1")]
PlusOne,
Utf8,
[Parameter(Value = "something else")]
SomethingElse,
Unicode
}
}