From 5965fb368268c1d8a6d629e222062e00d79a25f3 Mon Sep 17 00:00:00 2001 From: Jared Nance Date: Mon, 3 Sep 2018 21:21:23 -0700 Subject: [PATCH] fix(Identifiable): handle null id values --- src/JsonApiDotNetCore/Models/Identifiable.cs | 3 +++ test/UnitTests/Models/IdentifiableTests.cs | 12 +++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/JsonApiDotNetCore/Models/Identifiable.cs b/src/JsonApiDotNetCore/Models/Identifiable.cs index 08dd43bf22..038544a89c 100644 --- a/src/JsonApiDotNetCore/Models/Identifiable.cs +++ b/src/JsonApiDotNetCore/Models/Identifiable.cs @@ -37,6 +37,9 @@ public string StringId /// protected virtual string GetStringId(object value) { + if(value == null) + return string.Empty; + var type = typeof(T); var stringValue = value.ToString(); diff --git a/test/UnitTests/Models/IdentifiableTests.cs b/test/UnitTests/Models/IdentifiableTests.cs index 778b1b485f..da4e30360a 100644 --- a/test/UnitTests/Models/IdentifiableTests.cs +++ b/test/UnitTests/Models/IdentifiableTests.cs @@ -21,6 +21,16 @@ public void Setting_StringId_To_Null_Sets_Id_As_Default() Assert.Equal(0, resource.Id); } - private class IntId : Identifiable { } + [Fact] + public void GetStringId_Returns_EmptyString_If_Object_Is_Null() + { + var resource = new IntId(); + var stringId = resource.ExposedGetStringId(null); + Assert.Equal(string.Empty, stringId); + } + + private class IntId : Identifiable { + public string ExposedGetStringId(object value) => GetStringId(value); + } } }