Skip to content

Commit d5d9f91

Browse files
committed
more tests for automapping inheritance hierarchies #113
1 parent ebed4c3 commit d5d9f91

File tree

3 files changed

+104
-1
lines changed

3 files changed

+104
-1
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,5 @@ build
2525
*.swp
2626
TestResult.xml
2727
*.ncrunchsolution
28+
*.ncrunchproject
2829
packages/

src/FluentNHibernate.Testing/AutoMapping/InheritanceTests.cs

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,57 @@ public void AutoMapSimpleProperties()
1818

1919
Test<ThirdLevel>(mapping =>
2020
{
21-
mapping.Element("//id").HasAttribute("name", "Id");
2221
mapping.Element("//property[@name='Rate']/column").HasAttribute("name", "Rate");
2322
mapping.Element("//property[@name='SecondRate']/column").HasAttribute("name", "SecondRate");
2423
});
2524
}
25+
26+
[Test]
27+
public void AutoMapInheritedIdProperty()
28+
{
29+
Model<SecondLevel>();
30+
31+
Test<SecondLevel>(mapping => mapping.Element("//id").HasAttribute("name", "Id"));
32+
}
33+
34+
[Test]
35+
public void AutoMapManyToOne()
36+
{
37+
Model<FourthLevel>();
38+
39+
Test<FourthLevel>(mapping => mapping.Element("//many-to-one").HasAttribute("name", "One").
40+
Element("//many-to-one/column").HasAttribute("name", "One_id"));
41+
}
42+
43+
[Test]
44+
public void AutoMapManyToMany()
45+
{
46+
Model<FourthLevel>();
47+
48+
Test<FourthLevel>(mapping =>
49+
{
50+
mapping.Element("//many-to-many/column").HasAttribute("name", "ManyToMany_id");
51+
});
52+
}
53+
54+
[Test]
55+
public void AutoMapEnum()
56+
{
57+
Model<FourthLevel>(model => model.Override<FourthLevel>(map => map.Map(x => x.publisherType)));
58+
59+
Test<FourthLevel > (mapping => mapping.Element("//property[@name='publisherType']").Exists());
60+
}
61+
62+
[Test]
63+
public void AutoMapVersion()
64+
{
65+
Model<ThirdLevel>();
66+
67+
Test<ThirdLevel>(mapping =>
68+
{
69+
mapping.Element("//version").HasAttribute("name", "Version");
70+
mapping.Element("//version/column").HasAttribute("name", "Version");
71+
});
72+
}
2673
}
2774
}

src/FluentNHibernate.Testing/AutoMapping/TestFixtures.cs

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -470,5 +470,60 @@ public class ExampleParentClass : SuperType
470470
public virtual IList<ExampleClass> Examples {get; set;}
471471
}
472472

473+
public abstract class Base1
474+
{
475+
public virtual int Id { get; protected set; }
476+
public abstract void Foo(int x);
477+
}
478+
479+
public class Derived1 : Base1
480+
{
481+
public virtual Decimal Rate { get; set; }
482+
public override void Foo(int x)
483+
{
484+
}
485+
486+
public string GetSomething()
487+
{
488+
return Environment.NewLine;
489+
}
490+
}
491+
492+
public class SecondLevel : Derived1
493+
{
494+
public virtual Double SecondRate { get; set; }
495+
}
496+
497+
public class ThirdLevel : SecondLevel
498+
{
499+
public virtual Boolean Flag { get; set; }
500+
public virtual TimeSpan Version { get; set; }
501+
}
502+
503+
public class FourthLevel: ThirdLevel
504+
{
505+
public PublisherType publisherType { get; set; }
506+
public ToOne One { get; set; }
507+
public IList<ManyToMany> Many { get; set; }
508+
}
509+
510+
public class ToOne
511+
{
512+
public virtual int Id { get; protected set; }
513+
public virtual string Name { get; set; }
514+
}
473515

516+
public class ManyToMany
517+
{
518+
public virtual int Id { get; protected set; }
519+
public virtual Decimal Value { get; set; }
520+
public IList<FourthLevel> Levels { get; set; }
521+
}
522+
523+
public enum PublisherType
524+
{
525+
Online,
526+
Offline,
527+
Mixed
528+
}
474529
}

0 commit comments

Comments
 (0)