From 10f9e1151eb27fd0f91e0ab56ebb2bdc42c6b732 Mon Sep 17 00:00:00 2001 From: Ferdinando Papale <4850119+papafe@users.noreply.github.com> Date: Tue, 6 May 2025 11:28:10 +0200 Subject: [PATCH 1/8] CSHARP4040: Fix bug when using field with same element name as discriminator --- .../Serialization/BsonClassMap.cs | 15 ++++ .../Jira/Csharp4040Tests.cs | 76 +++++++++++++++++++ 2 files changed, 91 insertions(+) create mode 100644 tests/MongoDB.Driver.Tests/Jira/Csharp4040Tests.cs diff --git a/src/MongoDB.Bson/Serialization/BsonClassMap.cs b/src/MongoDB.Bson/Serialization/BsonClassMap.cs index 87239a33bf5..d0cf33f24ff 100644 --- a/src/MongoDB.Bson/Serialization/BsonClassMap.cs +++ b/src/MongoDB.Bson/Serialization/BsonClassMap.cs @@ -1327,6 +1327,21 @@ internal IDiscriminatorConvention GetDiscriminatorConvention() discriminatorConvention = LookupDiscriminatorConvention(); _discriminatorConvention = discriminatorConvention; } + + // if (discriminatorConvention != null) + // { + // var conflictingMemberMap = _allMemberMaps.FirstOrDefault(memberMap => memberMap.ElementName == discriminatorConvention.ElementName); + // + // if (conflictingMemberMap != null) + // { + // var fieldOrProperty = conflictingMemberMap.MemberInfo is FieldInfo ? "field" : "property"; + // + // throw new BsonSerializationException( + // $"The {fieldOrProperty} {conflictingMemberMap.MemberName} of type '{_classType.FullName}' cannot use element name '{discriminatorConvention.ElementName}' " + + // $"because it is already being used by the discriminator convention '{discriminatorConvention.GetType().Name}'."); + // } + // } + return discriminatorConvention; IDiscriminatorConvention LookupDiscriminatorConvention() diff --git a/tests/MongoDB.Driver.Tests/Jira/Csharp4040Tests.cs b/tests/MongoDB.Driver.Tests/Jira/Csharp4040Tests.cs new file mode 100644 index 00000000000..885dcf4a060 --- /dev/null +++ b/tests/MongoDB.Driver.Tests/Jira/Csharp4040Tests.cs @@ -0,0 +1,76 @@ +/* Copyright 2010-present MongoDB Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +using FluentAssertions; +using MongoDB.Bson; +using MongoDB.Bson.Serialization; +using MongoDB.Bson.Serialization.Attributes; +using MongoDB.Bson.Serialization.Conventions; +using Xunit; + +namespace MongoDB.Driver.Tests.Jira +{ + public class Csharp4040Tests + { + private class BaseDocument + { + [BsonId] public ObjectId Id { get; set; } = ObjectId.GenerateNewId(); + + [BsonElement("_t")] + public string Field1 { get; set; } + } + + private class DerivedDocument : BaseDocument {} + + [Fact] + public void BsonClassMapSerializer_when_using_field_with_same_element_name_as_discriminator_shoult_throw() + { + var obj = new DerivedDocument { Field1 = "field1" }; + + var recordedException = Record.Exception(() => obj.ToJson(typeof(BaseDocument))); + recordedException.Should().NotBeNull(); + recordedException.Should().BeOfType(); + recordedException.Message.Should().Be("The property Field1 of type 'MongoDB.Driver.Tests.Jira.Csharp4040Tests+DerivedDocument' " + + "cannot use element name '_t' because it is already being used by " + + "the discriminator convention 'ScalarDiscriminatorConvention'."); + } + + private class BaseDocument2 + { + //[BsonId] public ObjectId Id { get; set; } = ObjectId.GenerateNewId(); + + public string Field1 { get; set; } + } + + private class DerivedDocument2 : BaseDocument2 {} + + [Fact] + public void BsonClassMapSerializer_when_using_discriminator_with_same_element_name_as_id_should_throw() + { + var obj = new DerivedDocument2 { Field1 = "field1" }; + + BsonSerializer.RegisterDiscriminatorConvention( + typeof(BaseDocument2), + new ScalarDiscriminatorConvention("_id")); + + var jsonFile = obj.ToJson(typeof(BaseDocument2)); + var recordedException = Record.Exception(() => obj.ToJson(typeof(BaseDocument2))); + recordedException.Should().NotBeNull(); + recordedException.Should().BeOfType(); + recordedException.Message.Should().Be("The property 'Field1' of type 'MongoDB.Driver.Tests.Jira.Csharp4040Tests+BaseDocument2' cannot use element name '_id' because it is already being used by property 'Id'"); + } + + } +} From 770f24d800dbfc8b2fe487b80f1f7f652c4f4355 Mon Sep 17 00:00:00 2001 From: Ferdinando Papale <4850119+papafe@users.noreply.github.com> Date: Tue, 6 May 2025 11:41:30 +0200 Subject: [PATCH 2/8] Added implementation --- .../Serialization/BsonClassMap.cs | 28 +++++++++---------- .../StandardDiscriminatorConvention.cs | 11 ++++++-- .../StandardDiscriminatorConventionTests.cs | 6 ++++ .../Jira/Csharp4040Tests.cs | 26 ----------------- 4 files changed, 28 insertions(+), 43 deletions(-) diff --git a/src/MongoDB.Bson/Serialization/BsonClassMap.cs b/src/MongoDB.Bson/Serialization/BsonClassMap.cs index d0cf33f24ff..c49c8e76de2 100644 --- a/src/MongoDB.Bson/Serialization/BsonClassMap.cs +++ b/src/MongoDB.Bson/Serialization/BsonClassMap.cs @@ -1323,24 +1323,24 @@ internal IDiscriminatorConvention GetDiscriminatorConvention() var discriminatorConvention = _discriminatorConvention; if (discriminatorConvention == null) { - // it's possible but harmless for multiple threads to do the discriminator convention lookukp at the same time + // it's possible but harmless for multiple threads to do the discriminator convention lookup at the same time discriminatorConvention = LookupDiscriminatorConvention(); _discriminatorConvention = discriminatorConvention; } - // if (discriminatorConvention != null) - // { - // var conflictingMemberMap = _allMemberMaps.FirstOrDefault(memberMap => memberMap.ElementName == discriminatorConvention.ElementName); - // - // if (conflictingMemberMap != null) - // { - // var fieldOrProperty = conflictingMemberMap.MemberInfo is FieldInfo ? "field" : "property"; - // - // throw new BsonSerializationException( - // $"The {fieldOrProperty} {conflictingMemberMap.MemberName} of type '{_classType.FullName}' cannot use element name '{discriminatorConvention.ElementName}' " + - // $"because it is already being used by the discriminator convention '{discriminatorConvention.GetType().Name}'."); - // } - // } + if (discriminatorConvention != null) //TODO This will also influence deserialization... Is it ok? + { + var conflictingMemberMap = _allMemberMaps.FirstOrDefault(memberMap => memberMap.ElementName == discriminatorConvention.ElementName); + + if (conflictingMemberMap != null) + { + var fieldOrProperty = conflictingMemberMap.MemberInfo is FieldInfo ? "field" : "property"; + + throw new BsonSerializationException( + $"The {fieldOrProperty} {conflictingMemberMap.MemberName} of type '{_classType.FullName}' cannot use element name '{discriminatorConvention.ElementName}' " + + $"because it is already being used by the discriminator convention '{discriminatorConvention.GetType().Name}'."); + } + } return discriminatorConvention; diff --git a/src/MongoDB.Bson/Serialization/Conventions/StandardDiscriminatorConvention.cs b/src/MongoDB.Bson/Serialization/Conventions/StandardDiscriminatorConvention.cs index ca4d2cbc117..e30778fe780 100644 --- a/src/MongoDB.Bson/Serialization/Conventions/StandardDiscriminatorConvention.cs +++ b/src/MongoDB.Bson/Serialization/Conventions/StandardDiscriminatorConvention.cs @@ -39,14 +39,19 @@ public abstract class StandardDiscriminatorConvention : IDiscriminatorConvention /// The element name. protected StandardDiscriminatorConvention(string elementName) { - if (elementName == null) + if (string.IsNullOrEmpty(elementName)) { - throw new ArgumentNullException("elementName"); + throw new ArgumentNullException(nameof(elementName)); } if (elementName.IndexOf('\0') != -1) { - throw new ArgumentException("Element names cannot contain nulls.", "elementName"); + throw new ArgumentException("Element names cannot be null or empty.", nameof(elementName)); } + if (elementName == "_id") + { + throw new ArgumentException("Element names cannot be '_id'.", nameof(elementName)); + } + _elementName = elementName; } diff --git a/tests/MongoDB.Bson.Tests/Serialization/Conventions/StandardDiscriminatorConventionTests.cs b/tests/MongoDB.Bson.Tests/Serialization/Conventions/StandardDiscriminatorConventionTests.cs index f1d633bd724..5da02291083 100644 --- a/tests/MongoDB.Bson.Tests/Serialization/Conventions/StandardDiscriminatorConventionTests.cs +++ b/tests/MongoDB.Bson.Tests/Serialization/Conventions/StandardDiscriminatorConventionTests.cs @@ -28,6 +28,12 @@ public void TestConstructorThrowsWhenElementNameContainsNulls() Assert.Throws(() => new ScalarDiscriminatorConvention("a\0b")); } + [Fact] + public void TestConstructorThrowsWhenElementNameIsId() + { + Assert.Throws(() => new ScalarDiscriminatorConvention("_id")); + } + [Fact] public void TestConstructorThrowsWhenElementNameIsNull() { diff --git a/tests/MongoDB.Driver.Tests/Jira/Csharp4040Tests.cs b/tests/MongoDB.Driver.Tests/Jira/Csharp4040Tests.cs index 885dcf4a060..8c456927f2f 100644 --- a/tests/MongoDB.Driver.Tests/Jira/Csharp4040Tests.cs +++ b/tests/MongoDB.Driver.Tests/Jira/Csharp4040Tests.cs @@ -46,31 +46,5 @@ public void BsonClassMapSerializer_when_using_field_with_same_element_name_as_di "cannot use element name '_t' because it is already being used by " + "the discriminator convention 'ScalarDiscriminatorConvention'."); } - - private class BaseDocument2 - { - //[BsonId] public ObjectId Id { get; set; } = ObjectId.GenerateNewId(); - - public string Field1 { get; set; } - } - - private class DerivedDocument2 : BaseDocument2 {} - - [Fact] - public void BsonClassMapSerializer_when_using_discriminator_with_same_element_name_as_id_should_throw() - { - var obj = new DerivedDocument2 { Field1 = "field1" }; - - BsonSerializer.RegisterDiscriminatorConvention( - typeof(BaseDocument2), - new ScalarDiscriminatorConvention("_id")); - - var jsonFile = obj.ToJson(typeof(BaseDocument2)); - var recordedException = Record.Exception(() => obj.ToJson(typeof(BaseDocument2))); - recordedException.Should().NotBeNull(); - recordedException.Should().BeOfType(); - recordedException.Message.Should().Be("The property 'Field1' of type 'MongoDB.Driver.Tests.Jira.Csharp4040Tests+BaseDocument2' cannot use element name '_id' because it is already being used by property 'Id'"); - } - } } From a6612bb849af8b04f8955363947082d900f22a9b Mon Sep 17 00:00:00 2001 From: Ferdinando Papale <4850119+papafe@users.noreply.github.com> Date: Tue, 6 May 2025 11:58:13 +0200 Subject: [PATCH 3/8] Various fixes --- src/MongoDB.Bson/Serialization/BsonClassMap.cs | 4 ++-- .../Serialization/Serializers/BsonClassMapSerializer.cs | 2 +- tests/MongoDB.Driver.Tests/Jira/Csharp4040Tests.cs | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/MongoDB.Bson/Serialization/BsonClassMap.cs b/src/MongoDB.Bson/Serialization/BsonClassMap.cs index c49c8e76de2..d0c19642862 100644 --- a/src/MongoDB.Bson/Serialization/BsonClassMap.cs +++ b/src/MongoDB.Bson/Serialization/BsonClassMap.cs @@ -1317,7 +1317,7 @@ public void UnmapProperty(string propertyName) /// Gets the discriminator convention for the class. /// /// The discriminator convention for the class. - internal IDiscriminatorConvention GetDiscriminatorConvention() + internal IDiscriminatorConvention GetDiscriminatorConvention(bool checkConflicts = false) { // return a cached discriminator convention when possible var discriminatorConvention = _discriminatorConvention; @@ -1328,7 +1328,7 @@ internal IDiscriminatorConvention GetDiscriminatorConvention() _discriminatorConvention = discriminatorConvention; } - if (discriminatorConvention != null) //TODO This will also influence deserialization... Is it ok? + if (checkConflicts && discriminatorConvention != null) { var conflictingMemberMap = _allMemberMaps.FirstOrDefault(memberMap => memberMap.ElementName == discriminatorConvention.ElementName); diff --git a/src/MongoDB.Bson/Serialization/Serializers/BsonClassMapSerializer.cs b/src/MongoDB.Bson/Serialization/Serializers/BsonClassMapSerializer.cs index fdcd59916ed..cd72dc477ad 100644 --- a/src/MongoDB.Bson/Serialization/Serializers/BsonClassMapSerializer.cs +++ b/src/MongoDB.Bson/Serialization/Serializers/BsonClassMapSerializer.cs @@ -637,7 +637,7 @@ private void SerializeExtraElements(BsonSerializationContext context, object obj private void SerializeDiscriminator(BsonSerializationContext context, Type nominalType, object obj) { - var discriminatorConvention = _classMap.GetDiscriminatorConvention(); + var discriminatorConvention = _classMap.GetDiscriminatorConvention(true); if (discriminatorConvention != null) { var actualType = obj.GetType(); diff --git a/tests/MongoDB.Driver.Tests/Jira/Csharp4040Tests.cs b/tests/MongoDB.Driver.Tests/Jira/Csharp4040Tests.cs index 8c456927f2f..1608af8963d 100644 --- a/tests/MongoDB.Driver.Tests/Jira/Csharp4040Tests.cs +++ b/tests/MongoDB.Driver.Tests/Jira/Csharp4040Tests.cs @@ -35,7 +35,7 @@ private class BaseDocument private class DerivedDocument : BaseDocument {} [Fact] - public void BsonClassMapSerializer_when_using_field_with_same_element_name_as_discriminator_shoult_throw() + public void BsonClassMapSerializer_serialization_when_using_field_with_same_element_name_as_discriminator_should_throw() { var obj = new DerivedDocument { Field1 = "field1" }; From 4cf885f002befc4be0c76e834b97b5a36d787f76 Mon Sep 17 00:00:00 2001 From: Ferdinando Papale <4850119+papafe@users.noreply.github.com> Date: Thu, 8 May 2025 17:11:05 +0200 Subject: [PATCH 4/8] Small corrections following PR comments. --- .../Serialization/BsonClassMap.cs | 22 +++++++++---------- .../StandardDiscriminatorConvention.cs | 4 ++-- .../Serializers/BsonClassMapSerializer.cs | 2 +- .../Jira/Csharp4040Tests.cs | 5 ++--- 4 files changed, 16 insertions(+), 17 deletions(-) diff --git a/src/MongoDB.Bson/Serialization/BsonClassMap.cs b/src/MongoDB.Bson/Serialization/BsonClassMap.cs index d0c19642862..2781d218d6b 100644 --- a/src/MongoDB.Bson/Serialization/BsonClassMap.cs +++ b/src/MongoDB.Bson/Serialization/BsonClassMap.cs @@ -1317,7 +1317,7 @@ public void UnmapProperty(string propertyName) /// Gets the discriminator convention for the class. /// /// The discriminator convention for the class. - internal IDiscriminatorConvention GetDiscriminatorConvention(bool checkConflicts = false) + internal IDiscriminatorConvention GetDiscriminatorConvention() { // return a cached discriminator convention when possible var discriminatorConvention = _discriminatorConvention; @@ -1326,19 +1326,19 @@ internal IDiscriminatorConvention GetDiscriminatorConvention(bool checkConflicts // it's possible but harmless for multiple threads to do the discriminator convention lookup at the same time discriminatorConvention = LookupDiscriminatorConvention(); _discriminatorConvention = discriminatorConvention; - } - - if (checkConflicts && discriminatorConvention != null) - { - var conflictingMemberMap = _allMemberMaps.FirstOrDefault(memberMap => memberMap.ElementName == discriminatorConvention.ElementName); - if (conflictingMemberMap != null) + if (discriminatorConvention != null) { - var fieldOrProperty = conflictingMemberMap.MemberInfo is FieldInfo ? "field" : "property"; + var conflictingMemberMap = _allMemberMaps.FirstOrDefault(memberMap => memberMap.ElementName == discriminatorConvention.ElementName); - throw new BsonSerializationException( - $"The {fieldOrProperty} {conflictingMemberMap.MemberName} of type '{_classType.FullName}' cannot use element name '{discriminatorConvention.ElementName}' " + - $"because it is already being used by the discriminator convention '{discriminatorConvention.GetType().Name}'."); + if (conflictingMemberMap != null) + { + var fieldOrProperty = conflictingMemberMap.MemberInfo is FieldInfo ? "field" : "property"; + + throw new BsonSerializationException( + $"The discriminator element name cannot be {discriminatorConvention.ElementName} " + + $"because it is already being used by the {fieldOrProperty} {conflictingMemberMap.MemberName} of type {_classType.FullName}"); + } } } diff --git a/src/MongoDB.Bson/Serialization/Conventions/StandardDiscriminatorConvention.cs b/src/MongoDB.Bson/Serialization/Conventions/StandardDiscriminatorConvention.cs index e30778fe780..1c9ebded38b 100644 --- a/src/MongoDB.Bson/Serialization/Conventions/StandardDiscriminatorConvention.cs +++ b/src/MongoDB.Bson/Serialization/Conventions/StandardDiscriminatorConvention.cs @@ -41,11 +41,11 @@ protected StandardDiscriminatorConvention(string elementName) { if (string.IsNullOrEmpty(elementName)) { - throw new ArgumentNullException(nameof(elementName)); + throw new ArgumentException("Element names cannot be null or empty.", nameof(elementName)); } if (elementName.IndexOf('\0') != -1) { - throw new ArgumentException("Element names cannot be null or empty.", nameof(elementName)); + throw new ArgumentException("Element names cannot contain nulls.", nameof(elementName)); } if (elementName == "_id") { diff --git a/src/MongoDB.Bson/Serialization/Serializers/BsonClassMapSerializer.cs b/src/MongoDB.Bson/Serialization/Serializers/BsonClassMapSerializer.cs index cd72dc477ad..fdcd59916ed 100644 --- a/src/MongoDB.Bson/Serialization/Serializers/BsonClassMapSerializer.cs +++ b/src/MongoDB.Bson/Serialization/Serializers/BsonClassMapSerializer.cs @@ -637,7 +637,7 @@ private void SerializeExtraElements(BsonSerializationContext context, object obj private void SerializeDiscriminator(BsonSerializationContext context, Type nominalType, object obj) { - var discriminatorConvention = _classMap.GetDiscriminatorConvention(true); + var discriminatorConvention = _classMap.GetDiscriminatorConvention(); if (discriminatorConvention != null) { var actualType = obj.GetType(); diff --git a/tests/MongoDB.Driver.Tests/Jira/Csharp4040Tests.cs b/tests/MongoDB.Driver.Tests/Jira/Csharp4040Tests.cs index 1608af8963d..dfa3e71c65c 100644 --- a/tests/MongoDB.Driver.Tests/Jira/Csharp4040Tests.cs +++ b/tests/MongoDB.Driver.Tests/Jira/Csharp4040Tests.cs @@ -42,9 +42,8 @@ public void BsonClassMapSerializer_serialization_when_using_field_with_same_elem var recordedException = Record.Exception(() => obj.ToJson(typeof(BaseDocument))); recordedException.Should().NotBeNull(); recordedException.Should().BeOfType(); - recordedException.Message.Should().Be("The property Field1 of type 'MongoDB.Driver.Tests.Jira.Csharp4040Tests+DerivedDocument' " + - "cannot use element name '_t' because it is already being used by " + - "the discriminator convention 'ScalarDiscriminatorConvention'."); + recordedException.Message.Should().Be("The discriminator element name cannot be _t because it is already being used" + + " by the property Field1 of type MongoDB.Driver.Tests.Jira.Csharp4040Tests+DerivedDocument"); } } } From 2f46ff4632ee77563b65a941ba2812b2bbc2f9ee Mon Sep 17 00:00:00 2001 From: Ferdinando Papale <4850119+papafe@users.noreply.github.com> Date: Thu, 8 May 2025 17:14:22 +0200 Subject: [PATCH 5/8] Small fixes --- .../Jira/{Csharp4040Tests.cs => CSharp4040Tests.cs} | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) rename tests/MongoDB.Driver.Tests/Jira/{Csharp4040Tests.cs => CSharp4040Tests.cs} (93%) diff --git a/tests/MongoDB.Driver.Tests/Jira/Csharp4040Tests.cs b/tests/MongoDB.Driver.Tests/Jira/CSharp4040Tests.cs similarity index 93% rename from tests/MongoDB.Driver.Tests/Jira/Csharp4040Tests.cs rename to tests/MongoDB.Driver.Tests/Jira/CSharp4040Tests.cs index dfa3e71c65c..f0dd630069f 100644 --- a/tests/MongoDB.Driver.Tests/Jira/Csharp4040Tests.cs +++ b/tests/MongoDB.Driver.Tests/Jira/CSharp4040Tests.cs @@ -15,14 +15,12 @@ using FluentAssertions; using MongoDB.Bson; -using MongoDB.Bson.Serialization; using MongoDB.Bson.Serialization.Attributes; -using MongoDB.Bson.Serialization.Conventions; using Xunit; namespace MongoDB.Driver.Tests.Jira { - public class Csharp4040Tests + public class CSharp4040Tests { private class BaseDocument { From 3e53e45cb017ea059d7a9853ef29cfa68e057401 Mon Sep 17 00:00:00 2001 From: Ferdinando Papale <4850119+papafe@users.noreply.github.com> Date: Thu, 8 May 2025 17:41:33 +0200 Subject: [PATCH 6/8] Removed check of conflict in discriminator convention. --- .../Conventions/StandardDiscriminatorConvention.cs | 4 ---- .../Conventions/StandardDiscriminatorConventionTests.cs | 6 ------ 2 files changed, 10 deletions(-) diff --git a/src/MongoDB.Bson/Serialization/Conventions/StandardDiscriminatorConvention.cs b/src/MongoDB.Bson/Serialization/Conventions/StandardDiscriminatorConvention.cs index 1c9ebded38b..55148561676 100644 --- a/src/MongoDB.Bson/Serialization/Conventions/StandardDiscriminatorConvention.cs +++ b/src/MongoDB.Bson/Serialization/Conventions/StandardDiscriminatorConvention.cs @@ -47,10 +47,6 @@ protected StandardDiscriminatorConvention(string elementName) { throw new ArgumentException("Element names cannot contain nulls.", nameof(elementName)); } - if (elementName == "_id") - { - throw new ArgumentException("Element names cannot be '_id'.", nameof(elementName)); - } _elementName = elementName; } diff --git a/tests/MongoDB.Bson.Tests/Serialization/Conventions/StandardDiscriminatorConventionTests.cs b/tests/MongoDB.Bson.Tests/Serialization/Conventions/StandardDiscriminatorConventionTests.cs index 5da02291083..f1d633bd724 100644 --- a/tests/MongoDB.Bson.Tests/Serialization/Conventions/StandardDiscriminatorConventionTests.cs +++ b/tests/MongoDB.Bson.Tests/Serialization/Conventions/StandardDiscriminatorConventionTests.cs @@ -28,12 +28,6 @@ public void TestConstructorThrowsWhenElementNameContainsNulls() Assert.Throws(() => new ScalarDiscriminatorConvention("a\0b")); } - [Fact] - public void TestConstructorThrowsWhenElementNameIsId() - { - Assert.Throws(() => new ScalarDiscriminatorConvention("_id")); - } - [Fact] public void TestConstructorThrowsWhenElementNameIsNull() { From 68b59859d60230683a69e91e5113e311c68e519a Mon Sep 17 00:00:00 2001 From: Ferdinando Papale <4850119+papafe@users.noreply.github.com> Date: Thu, 8 May 2025 17:43:39 +0200 Subject: [PATCH 7/8] Corrected exception type --- .../Conventions/StandardDiscriminatorConventionTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/MongoDB.Bson.Tests/Serialization/Conventions/StandardDiscriminatorConventionTests.cs b/tests/MongoDB.Bson.Tests/Serialization/Conventions/StandardDiscriminatorConventionTests.cs index f1d633bd724..25fabd6b479 100644 --- a/tests/MongoDB.Bson.Tests/Serialization/Conventions/StandardDiscriminatorConventionTests.cs +++ b/tests/MongoDB.Bson.Tests/Serialization/Conventions/StandardDiscriminatorConventionTests.cs @@ -31,7 +31,7 @@ public void TestConstructorThrowsWhenElementNameContainsNulls() [Fact] public void TestConstructorThrowsWhenElementNameIsNull() { - Assert.Throws(() => new ScalarDiscriminatorConvention(null)); + Assert.Throws(() => new ScalarDiscriminatorConvention(null)); } [Fact] From 5e8b73455f104daeaeb53f9e97e544482af30528 Mon Sep 17 00:00:00 2001 From: Ferdinando Papale <4850119+papafe@users.noreply.github.com> Date: Fri, 9 May 2025 11:39:00 +0200 Subject: [PATCH 8/8] String corrected --- tests/MongoDB.Driver.Tests/Jira/CSharp4040Tests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/MongoDB.Driver.Tests/Jira/CSharp4040Tests.cs b/tests/MongoDB.Driver.Tests/Jira/CSharp4040Tests.cs index f0dd630069f..7858491fd0a 100644 --- a/tests/MongoDB.Driver.Tests/Jira/CSharp4040Tests.cs +++ b/tests/MongoDB.Driver.Tests/Jira/CSharp4040Tests.cs @@ -41,7 +41,7 @@ public void BsonClassMapSerializer_serialization_when_using_field_with_same_elem recordedException.Should().NotBeNull(); recordedException.Should().BeOfType(); recordedException.Message.Should().Be("The discriminator element name cannot be _t because it is already being used" + - " by the property Field1 of type MongoDB.Driver.Tests.Jira.Csharp4040Tests+DerivedDocument"); + " by the property Field1 of type MongoDB.Driver.Tests.Jira.CSharp4040Tests+DerivedDocument"); } } }