Browse Source
Fixed CSHARP-81. The IdPropertyMap for a class map should come from the highest class possible in the inheritance hierarchy.
pull/10/head
Fixed CSHARP-81. The IdPropertyMap for a class map should come from the highest class possible in the inheritance hierarchy.
pull/10/head

3 changed files with 89 additions and 23 deletions
-
52Bson/DefaultSerializer/BsonClassMap.cs
-
1BsonUnitTests/BsonUnitTests.csproj
-
59BsonUnitTests/Jira/CSharp81Tests.cs
@ -0,0 +1,59 @@ |
|||||
|
/* Copyright 2010 10gen 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 System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.IO; |
||||
|
using System.Linq; |
||||
|
using System.Runtime.Serialization; |
||||
|
using System.Text; |
||||
|
using System.Xml; |
||||
|
using NUnit.Framework; |
||||
|
|
||||
|
using MongoDB.Bson; |
||||
|
using MongoDB.Bson.IO; |
||||
|
using MongoDB.Bson.DefaultSerializer; |
||||
|
using MongoDB.Bson.Serialization; |
||||
|
|
||||
|
namespace MongoDB.BsonUnitTests.Jira { |
||||
|
[TestFixture] |
||||
|
public class CSharp81Tests { |
||||
|
private class BaseModel { |
||||
|
[BsonId] |
||||
|
public ObjectId Id { get; set; } |
||||
|
} |
||||
|
|
||||
|
private class User : BaseModel { |
||||
|
public ObjectId FriendId { get; set; } |
||||
|
} |
||||
|
|
||||
|
[Test] |
||||
|
public void TestIdProperty() { |
||||
|
var u = new User { Id = ObjectId.Empty, FriendId = ObjectId.Empty }; |
||||
|
|
||||
|
var classMap = BsonClassMap.LookupClassMap(typeof(User)); |
||||
|
var idPropertyMap = classMap.IdPropertyMap; |
||||
|
Assert.AreEqual("Id", idPropertyMap.PropertyName); |
||||
|
|
||||
|
var serializer = BsonSerializer.LookupSerializer(typeof(User)); |
||||
|
var idGenerator = BsonSerializer.LookupIdGenerator(typeof(ObjectId)); |
||||
|
serializer.GenerateDocumentId(u); |
||||
|
Assert.IsFalse(idGenerator.IsEmpty(u.Id)); |
||||
|
Assert.IsTrue(idGenerator.IsEmpty(u.FriendId)); |
||||
|
|
||||
|
var json = u.ToJson(); |
||||
|
} |
||||
|
} |
||||
|
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue