forked from nhibernate/nhibernate-core
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathComposedIdTests.cs
139 lines (130 loc) · 4.14 KB
/
ComposedIdTests.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
using System;
using NHibernate.Cfg.MappingSchema;
using NHibernate.Mapping.ByCode;
using NUnit.Framework;
namespace NHibernate.Test.MappingByCode.ExpliticMappingTests
{
[TestFixture]
public class ComposedIdTests
{
private class MyClass
{
public int Code { get; set; }
private MyOther relation;
public MyOther Relation
{
get { return relation; }
set { relation = value; }
}
}
private class MyOther
{
public int Id { get; set; }
}
private class MyOtherSubclass : MyOther
{
public int SubId { get; set; }
}
[Test]
public void WhenPropertyUsedAsComposedIdThenRegister()
{
var inspector = new ExplicitlyDeclaredModel();
var mapper = new ModelMapper(inspector);
mapper.Class<MyClass>(map =>
map.ComposedId(cm=>
{
cm.Property(x => x.Code);
cm.ManyToOne(x => x.Relation);
})
);
Assert.That(inspector.IsMemberOfComposedId(For<MyClass>.Property(x => x.Code)), Is.True);
Assert.That(inspector.IsMemberOfComposedId(For<MyClass>.Property(x => x.Relation)), Is.True);
Assert.That(inspector.IsPersistentProperty(For<MyClass>.Property(x => x.Code)), Is.True);
Assert.That(inspector.IsPersistentProperty(For<MyClass>.Property(x => x.Relation)), Is.True);
Assert.That(inspector.IsPersistentId(For<MyClass>.Property(x => x.Code)), Is.False);
Assert.That(inspector.IsPersistentId(For<MyClass>.Property(x => x.Relation)), Is.False);
}
[Test]
public void WhenPropertyUsedAsComposedIdThenNotUsedAsSimpleProperties()
{
var mapper = new ModelMapper();
mapper.Class<MyClass>(map =>
map.ComposedId(cm =>
{
cm.Property(x => x.Code);
cm.ManyToOne(x => x.Relation);
})
);
var hbmMapping = mapper.CompileMappingFor(new[] { typeof(MyClass) });
var hbmClass = hbmMapping.RootClasses[0];
var hbmCompositId = hbmClass.CompositeId;
Assert.That(hbmCompositId.Items, Has.Length.EqualTo(2));
Assert.That(hbmClass.Properties, Is.Empty);
}
[Test]
public void WhenPropertyUsedAsComposedIdAndPropertiesThenNotUsedAsSimpleProperties()
{
var mapper = new ModelMapper();
mapper.Class<MyClass>(map =>
{
map.ComposedId(cm =>
{
cm.Property(x => x.Code);
cm.ManyToOne(x => x.Relation);
});
map.Property(x => x.Code);
map.ManyToOne(x => x.Relation);
}
);
HbmMapping hbmMapping = mapper.CompileMappingFor(new[] {typeof (MyClass)});
HbmClass hbmClass = hbmMapping.RootClasses[0];
HbmCompositeId hbmCompositId = hbmClass.CompositeId;
Assert.That(hbmCompositId.Items, Has.Length.EqualTo(2));
Assert.That(hbmClass.Properties, Is.Empty);
}
[Test]
public void WhenPropertyUsedAsComposedIdAndPropertiesAndNaturalIdThenMapOnlyAsComposedId()
{
var mapper = new ModelMapper();
mapper.Class<MyClass>(map =>
{
map.ComposedId(cm =>
{
cm.Property(x => x.Code);
cm.ManyToOne(x => x.Relation);
});
map.NaturalId(nm =>
{
nm.Property(x => x.Code);
nm.ManyToOne(x => x.Relation);
});
map.Property(x => x.Code);
map.ManyToOne(x => x.Relation);
}
);
HbmMapping hbmMapping = mapper.CompileMappingFor(new[] { typeof(MyClass) });
HbmClass hbmClass = hbmMapping.RootClasses[0];
HbmCompositeId hbmCompositId = hbmClass.CompositeId;
Assert.That(hbmCompositId.Items, Has.Length.EqualTo(2));
Assert.That(hbmClass.naturalid, Is.Null);
Assert.That(hbmClass.Properties, Is.Empty);
}
[Test]
public void WhenSuperclassPropertyUsedAsComposedIdThenRegister()
{
var inspector = new ExplicitlyDeclaredModel();
var mapper = new ModelMapper(inspector);
mapper.Class<MyOtherSubclass>(map =>
map.ComposedId(cm =>
{
cm.Property(x => x.Id);
cm.Property(x => x.SubId);
})
);
var hbmMapping = mapper.CompileMappingFor(new[] { typeof(MyOtherSubclass) });
var hbmClass = hbmMapping.RootClasses[0];
var hbmCompositeId = hbmClass.CompositeId;
Assert.That(hbmCompositeId.Items, Has.Length.EqualTo(2));
}
}
}