diff --git a/src/SparkPost.Tests/DataMapperTests.cs b/src/SparkPost.Tests/DataMapperTests.cs index 6d595a72..3a6e54e3 100644 --- a/src/SparkPost.Tests/DataMapperTests.cs +++ b/src/SparkPost.Tests/DataMapperTests.cs @@ -259,6 +259,16 @@ public void metadata() .CastAs>()[key].ShouldEqual(value); } + [Test] + public void do_not_alter_the_keys_passed_to_metadata() + { + var key = "TEST"; + var value = Guid.NewGuid().ToString(); + transmission.Metadata[key] = value; + mapper.ToDictionary(transmission)["metadata"] + .CastAs>()[key].ShouldEqual(value); + } + [Test] public void do_not_include_empty_metadata() { diff --git a/src/SparkPost/DataMapper.cs b/src/SparkPost/DataMapper.cs index ac3ce89b..ba94e6c0 100644 --- a/src/SparkPost/DataMapper.cs +++ b/src/SparkPost/DataMapper.cs @@ -84,10 +84,8 @@ public virtual IDictionary ToDictionary(Transmission transmissio { var data = new Dictionary { - ["substitution_data"] = - transmission.SubstitutionData != null && transmission.SubstitutionData.Keys.Any() - ? transmission.SubstitutionData - : null, + ["substitution_data"] = AlterThisDictionaryToBePassedToSparkpost(transmission.SubstitutionData), + ["metadata"] = AlterThisDictionaryToBePassedToSparkpost(transmission.Metadata), ["recipients"] = transmission.ListId != null ? (object) new Dictionary {["list_id"] = transmission.ListId} : transmission.Recipients.Select(ToDictionary) @@ -100,6 +98,13 @@ public virtual IDictionary ToDictionary(Transmission transmissio return result; } + private static IDictionary AlterThisDictionaryToBePassedToSparkpost(IDictionary dictionary) + { + return dictionary != null && dictionary.Keys.Any() + ? dictionary + : null; + } + public virtual IDictionary ToDictionary(Recipient recipient) { return WithCommonConventions(recipient, new Dictionary()