DarabonbaUnitTests/Exceptions/DaraExceptionTest.cs (210 lines of code) (raw):

using System; using System.Collections; using System.Collections.Generic; using Darabonba.Exceptions; using Tea; using Darabonba.Utils; using Xunit; using Xunit.Abstractions; namespace DaraUnitTests { public class DaraExceptionTest { [Fact] public void TestDaraException_new() { var daraException = new DaraException { Message = "message", Code = "200", Data = new Dictionary<string, object> { { "test", "test" } } }; Assert.NotNull(daraException); Assert.Equal("200", daraException.Code); Assert.Equal("message", daraException.Message); Assert.NotNull(daraException.DataResult); Assert.Null(daraException.AccessDeniedDetail); daraException = new DaraException { Message = "message", Code = "200", AccessDeniedDetail = new Dictionary<string, object> { { "NoPermissionType", "ImplicitDeny" } } }; Assert.NotNull(daraException); Assert.Equal("200", daraException.Code); Assert.Equal("message", daraException.Message); Assert.Null(daraException.DataResult); Assert.NotNull(daraException.AccessDeniedDetail); Assert.Equal("ImplicitDeny", DictUtils.GetDicValue(daraException.AccessDeniedDetail, "NoPermissionType")); } [Fact] public void TestDaraException_compatible() { var daraException = new DaraException(new Dictionary<string, object> { { "code", "200" }, { "message", "message" }, { "data", null } }); Assert.NotNull(daraException); Assert.Equal("200", daraException.Code); Assert.Equal("message", daraException.Message); Assert.Null(daraException.DataResult); daraException = new DaraException(new Dictionary<string, object> { { "code", "200" }, { "message", "message" }, { "data", new Dictionary<string, string> { { "test", "test" } } } }); Assert.NotNull(daraException); Assert.NotNull(daraException.DataResult); Assert.Equal("test", daraException.Data["test"]); daraException = new DaraException(new Dictionary<string, object> { { "code", "200" }, { "message", "message" }, { "data", new { test = "test" } } }); Assert.NotNull(daraException); Assert.NotNull(daraException.DataResult); daraException = new DaraException(new Dictionary<string, string> { { "code", "200" } }); Assert.NotNull(daraException); Assert.Equal("200", daraException.Code); daraException = new DaraException(new Dictionary<string, object> { { "code", "code" }, { "message", "message" }, { "description", "description" }, { "data", new Dictionary<string, object> { { "test", "test" }, { "statusCode", 200 } } }, { "accessDeniedDetail", new Dictionary<string, object> { { "NoPermissionType", "ImplicitDeny" } } } }); Assert.NotNull(daraException); Assert.Equal("code", daraException.Code); Assert.Equal("message", daraException.Message); Assert.Equal("description", daraException.Description); Assert.Equal(200, daraException.StatusCode); Assert.Equal("test", daraException.DataResult["test"]); Assert.Equal("ImplicitDeny", DictUtils.GetDicValue(daraException.AccessDeniedDetail, "NoPermissionType")); daraException = new DaraException(new Dictionary<string, object> { { "code", "code" }, { "accessDeniedDetail", null } }); Assert.NotNull(daraException); Assert.Null(daraException.AccessDeniedDetail); daraException = new DaraException(new Dictionary<string, object> { { "code", "code" }, { "accessDeniedDetail", "error type" } }); Assert.NotNull(daraException); Assert.Null(daraException.AccessDeniedDetail); } [Fact] public void Test_Throw_And_Catch() { try { throw new DaraException { Message = "msg", Code = "200", AccessDeniedDetail = new Dictionary<string, object> { { "NoPermissionType", "ImplicitDeny" } }, Data = new Dictionary<string, object> { { "test", "test" } } }; } catch (TeaException e) { Assert.Equal("msg", e.Message); Assert.Equal("200", e.Code); Assert.Equal("ImplicitDeny", DictUtils.GetDicValue(e.AccessDeniedDetail, "NoPermissionType")); Assert.Equal("test", DictUtils.GetDicValue(e.DataResult, "test")); Assert.Equal("test", e.DataResult["test"]); Assert.Equal(0, e.StatusCode); } try { throw new TestException { TestCode = 123, Code = "400" }; } catch (TestException e) { Assert.Null(e.Message); Assert.Equal("400", e.Code); Assert.Null(e.AccessDeniedDetail); Assert.Null(e.DataResult); Assert.Equal(123, e.TestCode); } try { throw new TestException { Message = "message", Code = "400", Data = new Dictionary<string, object> { { "test", "test" } } }; } catch (DaraException e) { Assert.Equal("message", e.Message); Assert.Equal("400", e.Code); Assert.Null(e.AccessDeniedDetail); Assert.Equal("test", e.Data["test"]); } } } } internal class TestException : DaraException { public int TestCode { get; set; } }