forked from nhibernate/nhibernate-core
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDeleteTransientEntityTest.cs
121 lines (108 loc) · 3.19 KB
/
DeleteTransientEntityTest.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
//------------------------------------------------------------------------------
// <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 NUnit.Framework;
namespace NHibernate.Test.Deletetransient
{
using System.Threading.Tasks;
[TestFixture]
public class DeleteTransientEntityTestAsync : TestCase
{
protected override string MappingsAssembly
{
get { return "NHibernate.Test"; }
}
protected override IList Mappings
{
get { return new string[] {"Deletetransient.Person.hbm.xml"}; }
}
[Test]
public async Task TransientEntityDeletionNoCascadesAsync()
{
ISession s = OpenSession();
ITransaction t = s.BeginTransaction();
await (s.DeleteAsync(new Address()));
await (t.CommitAsync());
s.Close();
}
[Test]
public async Task TransientEntityDeletionCascadingToTransientAssociationAsync()
{
ISession s = OpenSession();
ITransaction t = s.BeginTransaction();
Person p = new Person();
p.Addresses.Add(new Address());
await (s.DeleteAsync(p));
await (t.CommitAsync());
s.Close();
}
[Test]
public async Task TransientEntityDeleteCascadingToCircularityAsync()
{
ISession s = OpenSession();
ITransaction t = s.BeginTransaction();
Person p1 = new Person();
Person p2 = new Person();
p1.Friends.Add(p2);
p2.Friends.Add(p1);
await (s.DeleteAsync(p1));
await (t.CommitAsync());
s.Close();
}
[Test]
public async Task TransientEntityDeletionCascadingToDetachedAssociationAsync()
{
ISession s = OpenSession();
ITransaction t = s.BeginTransaction();
Address address = new Address();
address.Info = "123 Main St.";
await (s.SaveAsync(address));
await (t.CommitAsync());
s.Close();
s = OpenSession();
t = s.BeginTransaction();
Person p = new Person();
p.Addresses.Add(address);
await (s.DeleteAsync(p));
await (t.CommitAsync());
s.Close();
s = OpenSession();
t = s.BeginTransaction();
long count = (await (s.CreateQuery("select count(*) from Address").ListAsync<long>()))[0];
Assert.That(count, Is.EqualTo(0L), "delete not cascaded properly across transient entity");
await (t.CommitAsync());
s.Close();
}
[Test]
public async Task TransientEntityDeletionCascadingToPersistentAssociationAsync()
{
ISession s = OpenSession();
ITransaction t = s.BeginTransaction();
Address address = new Address();
address.Info = "123 Main St.";
await (s.SaveAsync(address));
await (t.CommitAsync());
s.Close();
s = OpenSession();
t = s.BeginTransaction();
address = await (s.GetAsync<Address>(address.Id));
Person p = new Person();
p.Addresses.Add(address);
await (s.DeleteAsync(p));
await (t.CommitAsync());
s.Close();
s = OpenSession();
t = s.BeginTransaction();
long count = (await (s.CreateQuery("select count(*) from Address").ListAsync<long>()))[0];
Assert.That(count, Is.EqualTo(0L), "delete not cascaded properly across transient entity");
await (t.CommitAsync());
s.Close();
}
}
}