From d42fcb79befe6f5bb2298c8ecbf173f1d44383e5 Mon Sep 17 00:00:00 2001 From: Phil Haack Date: Thu, 30 Jun 2016 14:53:41 -0700 Subject: [PATCH] Add some unit tests for enum serialization --- Octokit.Tests/SimpleJsonSerializerTests.cs | 62 ++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/Octokit.Tests/SimpleJsonSerializerTests.cs b/Octokit.Tests/SimpleJsonSerializerTests.cs index 6772250a..0b3ff29d 100644 --- a/Octokit.Tests/SimpleJsonSerializerTests.cs +++ b/Octokit.Tests/SimpleJsonSerializerTests.cs @@ -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(json); + + Assert.Equal(SomeEnum.Unicode, sample.SomeEnum); + } + + [Fact] + public void RemovesDashFromEnums() + { + const string json = @"{""some_enum"":""utf-8""}"; + + var sample = new SimpleJsonSerializer().Deserialize(json); + + Assert.Equal(SomeEnum.Utf8, sample.SomeEnum); + } + + [Fact] + public void UnderstandsParameterAttribute() + { + const string json = @"{""some_enum"":""+1""}"; + + var sample = new SimpleJsonSerializer().Deserialize(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 + } + }