Datei: IntegrationTests/IntegrationTests/AuditTests.cs
Last Commit (9d1552b)
1 | using System; |
2 | using System.Collections.Generic; |
3 | using System.Linq; |
4 | using System.Text; |
5 | using System.Threading.Tasks; |
6 | using NUnit.Framework; |
7 | using PureBusinessClasses; |
8 | using NDO; |
9 | using NDO.ShortId; |
10 | using Reisekosten.Personal; |
11 | using Reisekosten; |
12 | using Newtonsoft.Json; |
13 | |
14 | namespace NdoUnitTests |
15 | { |
16 | ····[TestFixture] |
17 | public class AuditTests |
18 | ····{ |
19 | ········Mitarbeiter m; |
20 | ········Reise r; |
21 | |
22 | ········[SetUp] |
23 | ········public void Setup() |
24 | ········{ |
25 | ············var pm = PmFactory.NewPersistenceManager(); |
26 | ············m = CreateMitarbeiter( "Mirko", "Matytschak" ); |
27 | ············pm.MakePersistent( m ); |
28 | ············m.ErzeugeReise().Zweck = "ADC"; |
29 | ············pm.Save(); |
30 | ············pm.UnloadCache(); |
31 | ········} |
32 | |
33 | ········[TearDown] |
34 | ········public void TearDown() |
35 | ········{ |
36 | ············var pm = PmFactory.NewPersistenceManager(); |
37 | ············pm.TransactionMode = TransactionMode.None; |
38 | ············var mitarbeiterListe = pm.GetClassExtent( typeof( Mitarbeiter ), true ); |
39 | ············pm.Delete( mitarbeiterListe ); |
40 | ············pm.Save(); |
41 | ············pm.UnloadCache(); |
42 | ············using (var handler = pm.GetSqlPassThroughHandler()) |
43 | ············{ |
44 | ················handler.Execute( $"DELETE FROM {pm.NDOMapping.FindClass( typeof( Reise ) ).TableName}" ); |
45 | ················handler.Execute( $"DELETE FROM {pm.NDOMapping.FindClass( typeof( Adresse ) ).TableName}" ); |
46 | ············} |
47 | ········} |
48 | |
49 | ········private Mitarbeiter CreateMitarbeiter( string vorname, string nachname ) |
50 | ········{ |
51 | ············Mitarbeiter m = new Mitarbeiter(); |
52 | ············m.Vorname = vorname; |
53 | ············m.Nachname = nachname; |
54 | ············return m; |
55 | ········} |
56 | |
57 | ········[Test] |
58 | ········public void ChangeSetDetectsSimpleChange() |
59 | ········{ |
60 | ············var pm = PmFactory.NewPersistenceManager(); |
61 | ············m = pm.Objects<Mitarbeiter>().Single(); |
62 | ············m.Vorname = "Hans"; |
63 | ············var changeObject = pm.GetChangeSet( m ); |
64 | ············Assert.That(1 ==··changeObject.original.Count ); |
65 | ············Assert.That(1 ==··changeObject.current.Count ); |
66 | ············Assert.That("Mirko", Is.EqualTo( changeObject.original["vorname"] ) ); |
67 | ············Assert.That("Hans", Is.EqualTo( changeObject.current["vorname"] ) ); |
68 | ········} |
69 | |
70 | ········[Test] |
71 | ········public void ChangeSetDetectsObjectAddition1_to_n() |
72 | ········{ |
73 | ············var pm = PmFactory.NewPersistenceManager(); |
74 | ············m = pm.Objects<Mitarbeiter>().Single(); |
75 | ············var r = m.ErzeugeReise(); |
76 | ············r.Zweck = "Test"; |
77 | ············var changeObject = pm.GetChangeSet( m ); |
78 | ············var original = changeObject.original; |
79 | ············var current = changeObject.current; |
80 | ············Assert.That(1 ==··original.Count ); |
81 | ············Assert.That(1 ==··current.Count ); |
82 | ············Assert.That( original.ContainsKey("dieReisen") ); |
83 | ············Assert.That( current.ContainsKey( "dieReisen" ) ); |
84 | ············Assert.That(1 ==··((List<ObjectId>)original["dieReisen"]).Count ); |
85 | ············Assert.That(2 ==··((List<ObjectId>)current["dieReisen"]).Count ); |
86 | ············Assert.That(r.NDOObjectId ==··((List<ObjectId>)current["dieReisen"])[1] ); |
87 | ············// At this point it doesn't make any sense to serialize the changeObject, |
88 | ············// since the id of r is not yet determined. |
89 | ············Assert.That( (int)r.NDOObjectId.Id[0] < 0 ); |
90 | ············pm.Save(); |
91 | ············// Now the id of r is determined. Let's assert, that the list in current reflects the change. |
92 | ············Assert.That( (int)r.NDOObjectId.Id[0] > 0 ); |
93 | ············Assert.That(r.NDOObjectId ==··((List<ObjectId>)current["dieReisen"])[1] ); |
94 | |
95 | ············changeObject = changeObject.SerializableClone(); |
96 | ············original = changeObject.original; |
97 | ············current = changeObject.current; |
98 | ············Assert.That(1 ==··original.Count ); |
99 | ············Assert.That(1 ==··current.Count ); |
100 | ············Assert.That( original.ContainsKey( "dieReisen" ) ); |
101 | ············Assert.That( current.ContainsKey( "dieReisen" ) ); |
102 | ············Assert.That(1 ==··( (List<string>) original["dieReisen"] ).Count ); |
103 | ············Assert.That(2 ==··( (List<string>) current["dieReisen"] ).Count ); |
104 | ············Assert.That(r.NDOObjectId.ToShortId() ==··( (List<string>) current["dieReisen"] )[1] ); |
105 | ············string json = JsonConvert.SerializeObject(changeObject); |
106 | ········} |
107 | |
108 | ········[Test] |
109 | ········public void ChangeSetDetectsObjectDeletion1_to_n() |
110 | ········{ |
111 | ············var pm = PmFactory.NewPersistenceManager(); |
112 | ············m = pm.Objects<Mitarbeiter>().Single(); |
113 | ············m.Löschen( m.Reisen[0] ); |
114 | ············var changeObject = pm.GetChangeSet( m ); |
115 | ············var original = changeObject.original; |
116 | ············var current = changeObject.current; |
117 | ············Assert.That(1 ==··original.Count ); |
118 | ············Assert.That(1 ==··current.Count ); |
119 | ············Assert.That( original.ContainsKey( "dieReisen" ) ); |
120 | ············Assert.That( current.ContainsKey( "dieReisen" ) ); |
121 | ············Assert.That(1 ==··((List<ObjectId>)original["dieReisen"]).Count ); |
122 | ············Assert.That(0 ==··((List<ObjectId>)current["dieReisen"]).Count ); |
123 | ········} |
124 | |
125 | ········[Test] |
126 | ········public void ChangeSetDetectsObjectAddition1_to_1() |
127 | ········{ |
128 | ············var pm = PmFactory.NewPersistenceManager(); |
129 | ············m = pm.Objects<Mitarbeiter>().Single(); |
130 | ············Adresse a = new Adresse() { Ort = "München", Straße = "Teststr", Plz = "80133" }; |
131 | ············m.Adresse = a; |
132 | ············var changeObject = pm.GetChangeSet( m ); |
133 | ············var original = changeObject.original; |
134 | ············var current = changeObject.current; |
135 | ············Assert.That(1 ==··original.Count ); |
136 | ············Assert.That(1 ==··current.Count ); |
137 | ············Assert.That( original.ContainsKey( "adresse" ) ); |
138 | ············Assert.That( current.ContainsKey( "adresse" ) ); |
139 | ············Assert.That(a.NDOObjectId ==··((List<ObjectId>) current["adresse"])[0] ); |
140 | ············// At this point it doesn't make any sense to serialize the changeObject, |
141 | ············// since the id of a is not yet determined. |
142 | ············Assert.That( (int)a.NDOObjectId.Id[0] < 0 ); |
143 | ············pm.Save(); |
144 | ············var newChangeObject = changeObject.SerializableClone(); |
145 | ············// Now the id of r is determined. Let's assert, that the list in current reflects the change. |
146 | ············Assert.That( (int)a.NDOObjectId.Id[0] > 0 ); |
147 | ············Assert.That(a.NDOObjectId.ToShortId() ==··((List<string>)newChangeObject.current["adresse"])[0] ); |
148 | ········} |
149 | |
150 | ········[Test] |
151 | ········public void ChangeSetDetectsObjectDeletion1_to_1() |
152 | ········{ |
153 | ············var pm = PmFactory.NewPersistenceManager(); |
154 | ············m = pm.Objects<Mitarbeiter>().Single(); |
155 | ············Adresse a = new Adresse() { Ort = "München", Straße = "Teststr", Plz = "80133" }; |
156 | ············m.Adresse = a; |
157 | ············pm.Save(); |
158 | ············pm.UnloadCache(); |
159 | ············m = pm.Objects<Mitarbeiter>().Single(); |
160 | ············m.Adresse = null; |
161 | ············var changeObject = pm.GetChangeSet( m ); |
162 | ············var original = changeObject.original; |
163 | ············var current = changeObject.current; |
164 | ············Assert.That(1 ==··original.Count ); |
165 | ············Assert.That(1 ==··current.Count ); |
166 | ············Assert.That( original.ContainsKey( "adresse" ) ); |
167 | ············Assert.That( current.ContainsKey( "adresse" ) ); |
168 | ············Assert.That(1 ==··((List<ObjectId>)original["adresse"]).Count ); |
169 | ············Assert.That(0 ==··((List<ObjectId>)current["adresse"]).Count ); |
170 | ········} |
171 | ····} |
172 | } |
173 |
New Commit (60cb179)
1 | using System; |
2 | using System.Collections.Generic; |
3 | using System.Linq; |
4 | using System.Text; |
5 | using System.Threading.Tasks; |
6 | using NUnit.Framework; |
7 | using PureBusinessClasses; |
8 | using NDO; |
9 | using NDO.ShortId; |
10 | using Reisekosten.Personal; |
11 | using Reisekosten; |
12 | using Newtonsoft.Json; |
13 | |
14 | namespace NdoUnitTests |
15 | { |
16 | ····[TestFixture] |
17 | public class AuditTests : NDOTest |
18 | ····{ |
19 | ········Mitarbeiter m; |
20 | ········Reise r; |
21 | |
22 | ········[SetUp] |
23 | ········public void Setup() |
24 | ········{ |
25 | ············var pm = PmFactory.NewPersistenceManager(); |
26 | ············m = CreateMitarbeiter( "Mirko", "Matytschak" ); |
27 | ············pm.MakePersistent( m ); |
28 | ············m.ErzeugeReise().Zweck = "ADC"; |
29 | ············pm.Save(); |
30 | ············pm.UnloadCache(); |
31 | ········} |
32 | |
33 | ········[TearDown] |
34 | ········public void TearDown() |
35 | ········{ |
36 | ············var pm = PmFactory.NewPersistenceManager(); |
37 | ············pm.TransactionMode = TransactionMode.None; |
38 | ············var mitarbeiterListe = pm.GetClassExtent( typeof( Mitarbeiter ), true ); |
39 | ············pm.Delete( mitarbeiterListe ); |
40 | ············pm.Save(); |
41 | ············pm.UnloadCache(); |
42 | ············using (var handler = pm.GetSqlPassThroughHandler()) |
43 | ············{ |
44 | ················handler.Execute( $"DELETE FROM {pm.NDOMapping.FindClass( typeof( Reise ) ).TableName}" ); |
45 | ················handler.Execute( $"DELETE FROM {pm.NDOMapping.FindClass( typeof( Adresse ) ).TableName}" ); |
46 | ············} |
47 | ········} |
48 | |
49 | ········private Mitarbeiter CreateMitarbeiter( string vorname, string nachname ) |
50 | ········{ |
51 | ············Mitarbeiter m = new Mitarbeiter(); |
52 | ············m.Vorname = vorname; |
53 | ············m.Nachname = nachname; |
54 | ············return m; |
55 | ········} |
56 | |
57 | ········[Test] |
58 | ········public void ChangeSetDetectsSimpleChange() |
59 | ········{ |
60 | ············var pm = PmFactory.NewPersistenceManager(); |
61 | ············m = pm.Objects<Mitarbeiter>().Single(); |
62 | ············m.Vorname = "Hans"; |
63 | ············var changeObject = pm.GetChangeSet( m ); |
64 | ············Assert.That(1 ==··changeObject.original.Count ); |
65 | ············Assert.That(1 ==··changeObject.current.Count ); |
66 | ············Assert.That("Mirko", Is.EqualTo( changeObject.original["vorname"] ) ); |
67 | ············Assert.That("Hans", Is.EqualTo( changeObject.current["vorname"] ) ); |
68 | ········} |
69 | |
70 | ········[Test] |
71 | ········public void ChangeSetDetectsObjectAddition1_to_n() |
72 | ········{ |
73 | ············var pm = PmFactory.NewPersistenceManager(); |
74 | ············m = pm.Objects<Mitarbeiter>().Single(); |
75 | ············var r = m.ErzeugeReise(); |
76 | ············r.Zweck = "Test"; |
77 | ············var changeObject = pm.GetChangeSet( m ); |
78 | ············var original = changeObject.original; |
79 | ············var current = changeObject.current; |
80 | ············Assert.That(1 ==··original.Count ); |
81 | ············Assert.That(1 ==··current.Count ); |
82 | ············Assert.That( original.ContainsKey("dieReisen") ); |
83 | ············Assert.That( current.ContainsKey( "dieReisen" ) ); |
84 | ············Assert.That(1 ==··((List<ObjectId>)original["dieReisen"]).Count ); |
85 | ············Assert.That(2 ==··((List<ObjectId>)current["dieReisen"]).Count ); |
86 | ············Assert.That(r.NDOObjectId ==··((List<ObjectId>)current["dieReisen"])[1] ); |
87 | ············// At this point it doesn't make any sense to serialize the changeObject, |
88 | ············// since the id of r is not yet determined. |
89 | ············Assert.That( (int)r.NDOObjectId.Id[0] < 0 ); |
90 | ············pm.Save(); |
91 | ············// Now the id of r is determined. Let's assert, that the list in current reflects the change. |
92 | ············Assert.That( (int)r.NDOObjectId.Id[0] > 0 ); |
93 | ············Assert.That(r.NDOObjectId ==··((List<ObjectId>)current["dieReisen"])[1] ); |
94 | |
95 | ············changeObject = changeObject.SerializableClone(); |
96 | ············original = changeObject.original; |
97 | ············current = changeObject.current; |
98 | ············Assert.That(1 ==··original.Count ); |
99 | ············Assert.That(1 ==··current.Count ); |
100 | ············Assert.That( original.ContainsKey( "dieReisen" ) ); |
101 | ············Assert.That( current.ContainsKey( "dieReisen" ) ); |
102 | ············Assert.That(1 ==··( (List<string>) original["dieReisen"] ).Count ); |
103 | ············Assert.That(2 ==··( (List<string>) current["dieReisen"] ).Count ); |
104 | ············Assert.That(r.NDOObjectId.ToShortId() ==··( (List<string>) current["dieReisen"] )[1] ); |
105 | ············string json = JsonConvert.SerializeObject(changeObject); |
106 | ········} |
107 | |
108 | ········[Test] |
109 | ········public void ChangeSetDetectsObjectDeletion1_to_n() |
110 | ········{ |
111 | ············var pm = PmFactory.NewPersistenceManager(); |
112 | ············m = pm.Objects<Mitarbeiter>().Single(); |
113 | ············m.Löschen( m.Reisen[0] ); |
114 | ············var changeObject = pm.GetChangeSet( m ); |
115 | ············var original = changeObject.original; |
116 | ············var current = changeObject.current; |
117 | ············Assert.That(1 ==··original.Count ); |
118 | ············Assert.That(1 ==··current.Count ); |
119 | ············Assert.That( original.ContainsKey( "dieReisen" ) ); |
120 | ············Assert.That( current.ContainsKey( "dieReisen" ) ); |
121 | ············Assert.That(1 ==··((List<ObjectId>)original["dieReisen"]).Count ); |
122 | ············Assert.That(0 ==··((List<ObjectId>)current["dieReisen"]).Count ); |
123 | ········} |
124 | |
125 | ········[Test] |
126 | ········public void ChangeSetDetectsObjectAddition1_to_1() |
127 | ········{ |
128 | ············var pm = PmFactory.NewPersistenceManager(); |
129 | ············m = pm.Objects<Mitarbeiter>().Single(); |
130 | ············Adresse a = new Adresse() { Ort = "München", Straße = "Teststr", Plz = "80133" }; |
131 | ············m.Adresse = a; |
132 | ············var changeObject = pm.GetChangeSet( m ); |
133 | ············var original = changeObject.original; |
134 | ············var current = changeObject.current; |
135 | ············Assert.That(1 ==··original.Count ); |
136 | ············Assert.That(1 ==··current.Count ); |
137 | ············Assert.That( original.ContainsKey( "adresse" ) ); |
138 | ············Assert.That( current.ContainsKey( "adresse" ) ); |
139 | ············Assert.That(a.NDOObjectId ==··((List<ObjectId>) current["adresse"])[0] ); |
140 | ············// At this point it doesn't make any sense to serialize the changeObject, |
141 | ············// since the id of a is not yet determined. |
142 | ············Assert.That( (int)a.NDOObjectId.Id[0] < 0 ); |
143 | ············pm.Save(); |
144 | ············var newChangeObject = changeObject.SerializableClone(); |
145 | ············// Now the id of r is determined. Let's assert, that the list in current reflects the change. |
146 | ············Assert.That( (int)a.NDOObjectId.Id[0] > 0 ); |
147 | ············Assert.That(a.NDOObjectId.ToShortId() ==··((List<string>)newChangeObject.current["adresse"])[0] ); |
148 | ········} |
149 | |
150 | ········[Test] |
151 | ········public void ChangeSetDetectsObjectDeletion1_to_1() |
152 | ········{ |
153 | ············var pm = PmFactory.NewPersistenceManager(); |
154 | ············m = pm.Objects<Mitarbeiter>().Single(); |
155 | ············Adresse a = new Adresse() { Ort = "München", Straße = "Teststr", Plz = "80133" }; |
156 | ············m.Adresse = a; |
157 | ············pm.Save(); |
158 | ············pm.UnloadCache(); |
159 | ············m = pm.Objects<Mitarbeiter>().Single(); |
160 | ············m.Adresse = null; |
161 | ············var changeObject = pm.GetChangeSet( m ); |
162 | ············var original = changeObject.original; |
163 | ············var current = changeObject.current; |
164 | ············Assert.That(1 ==··original.Count ); |
165 | ············Assert.That(1 ==··current.Count ); |
166 | ············Assert.That( original.ContainsKey( "adresse" ) ); |
167 | ············Assert.That( current.ContainsKey( "adresse" ) ); |
168 | ············Assert.That(1 ==··((List<ObjectId>)original["adresse"]).Count ); |
169 | ············Assert.That(0 ==··((List<ObjectId>)current["adresse"]).Count ); |
170 | ········} |
171 | ····} |
172 | } |
173 |