forked from nhibernate/nhibernate-core
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathStatelessSessionQueryFixture.cs
130 lines (110 loc) · 3.33 KB
/
StatelessSessionQueryFixture.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
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by AsyncGenerator.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System.Collections;
using NHibernate.Cfg;
using NUnit.Framework;
namespace NHibernate.Test.Stateless
{
using System.Threading.Tasks;
using System.Threading;
[TestFixture]
public class StatelessSessionQueryFixtureAsync : TestCase
{
protected override string MappingsAssembly
{
get { return "NHibernate.Test"; }
}
protected override IList Mappings
{
get { return new[] {"Stateless.Contact.hbm.xml"}; }
}
protected override void Configure(Configuration configuration)
{
base.Configure(configuration);
cfg.SetProperty(Environment.MaxFetchDepth, 1.ToString());
}
private class TestData
{
internal readonly IList list = new ArrayList();
private readonly ISessionFactory sessions;
public TestData(ISessionFactory sessions)
{
this.sessions = sessions;
}
public virtual async Task createDataAsync(CancellationToken cancellationToken = default(CancellationToken))
{
using (ISession session = sessions.OpenSession())
{
using (ITransaction tx = session.BeginTransaction())
{
var usa = new Country();
await (session.SaveAsync(usa, cancellationToken));
list.Add(usa);
var disney = new Org();
disney.Country = usa;
await (session.SaveAsync(disney, cancellationToken));
list.Add(disney);
var waltDisney = new Contact();
waltDisney.Org = disney;
await (session.SaveAsync(waltDisney, cancellationToken));
list.Add(waltDisney);
await (tx.CommitAsync(cancellationToken));
}
}
}
public virtual async Task cleanDataAsync(CancellationToken cancellationToken = default(CancellationToken))
{
using (ISession session = sessions.OpenSession())
{
using (ITransaction tx = session.BeginTransaction())
{
foreach (object obj in list)
{
await (session.DeleteAsync(obj, cancellationToken));
}
await (tx.CommitAsync(cancellationToken));
}
}
}
}
[Test]
public async Task CriteriaAsync()
{
var testData = new TestData(Sfi);
await (testData.createDataAsync());
using (IStatelessSession s = Sfi.OpenStatelessSession())
{
Assert.AreEqual(1, (await (s.CreateCriteria<Contact>().ListAsync())).Count);
}
await (testData.cleanDataAsync());
}
[Test]
public async Task CriteriaWithSelectFetchModeAsync()
{
var testData = new TestData(Sfi);
await (testData.createDataAsync());
using (IStatelessSession s = Sfi.OpenStatelessSession())
{
Assert.AreEqual(1, (await (s.CreateCriteria<Contact>().SetFetchMode("Org", FetchMode.Select).ListAsync())).Count);
}
await (testData.cleanDataAsync());
}
[Test]
public async Task HqlAsync()
{
var testData = new TestData(Sfi);
await (testData.createDataAsync());
using (IStatelessSession s = Sfi.OpenStatelessSession())
{
Assert.AreEqual(1, (await (s.CreateQuery("from Contact c join fetch c.Org join fetch c.Org.Country").ListAsync<Contact>())).Count);
}
await (testData.cleanDataAsync());
}
}
}