1
1
package com .arangodb .springframework .transaction ;
2
2
3
- import com .arangodb .ArangoDB ;
4
3
import com .arangodb .ArangoDatabase ;
5
- import com .arangodb .DbName ;
6
4
import com .arangodb .entity .StreamTransactionEntity ;
7
5
import com .arangodb .entity .StreamTransactionStatus ;
8
6
import com .arangodb .model .StreamTransactionOptions ;
@@ -72,7 +70,7 @@ public void cleanupSync() {
72
70
73
71
@ Test
74
72
public void getTransactionReturnsNewTransactionWithoutStreamTransaction () {
75
- TransactionStatus status = underTest .getTransaction (new DefaultTransactionAttribute ( ));
73
+ TransactionStatus status = underTest .getTransaction (createTransactionAttribute ( "test" ));
76
74
assertThat (status .isNewTransaction (), is (true ));
77
75
verify (bridge ).setCurrentTransaction (any ());
78
76
ArangoTransactionHolder resource = (ArangoTransactionHolder ) TransactionSynchronizationManager .getResource (underTest );
@@ -84,12 +82,8 @@ public void getTransactionReturnsNewTransactionWithoutStreamTransaction() {
84
82
85
83
@ Test
86
84
public void innerGetTransactionIsNotNewTransactionIncludingFormerCollections () {
87
- DefaultTransactionAttribute first = new DefaultTransactionAttribute ();
88
- first .setLabels (Collections .singleton ("foo" ));
89
- TransactionStatus outer = underTest .getTransaction (first );
90
- DefaultTransactionAttribute second = new DefaultTransactionAttribute ();
91
- second .setLabels (Collections .singleton ("bar" ));
92
- TransactionStatus inner = underTest .getTransaction (second );
85
+ TransactionStatus outer = underTest .getTransaction (createTransactionAttribute ("outer" , "foo" ));
86
+ TransactionStatus inner = underTest .getTransaction (createTransactionAttribute ("inner" , "bar" ));
93
87
assertThat (inner .isNewTransaction (), is (false ));
94
88
ArangoTransactionObject transactionObject = getTransactionObject (inner );
95
89
assertThat (transactionObject .getHolder ().getCollectionNames (), hasItems ("foo" , "bar" ));
@@ -98,8 +92,8 @@ public void innerGetTransactionIsNotNewTransactionIncludingFormerCollections() {
98
92
99
93
@ Test (expected = UnexpectedRollbackException .class )
100
94
public void innerRollbackCausesUnexpectedRollbackOnOuterCommit () {
101
- TransactionStatus outer = underTest .getTransaction (new DefaultTransactionAttribute ( ));
102
- TransactionStatus inner = underTest .getTransaction (new DefaultTransactionAttribute ( ));
95
+ TransactionStatus outer = underTest .getTransaction (createTransactionAttribute ( "outer" ));
96
+ TransactionStatus inner = underTest .getTransaction (createTransactionAttribute ( "inner" ));
103
97
underTest .rollback (inner );
104
98
try {
105
99
underTest .commit (outer );
@@ -110,8 +104,7 @@ public void innerRollbackCausesUnexpectedRollbackOnOuterCommit() {
110
104
111
105
@ Test
112
106
public void getTransactionReturnsTransactionCreatesStreamTransactionWithAllCollectionsOnBridgeBeginCall () {
113
- DefaultTransactionAttribute definition = new DefaultTransactionAttribute ();
114
- definition .setLabels (Collections .singleton ("baz" ));
107
+ DefaultTransactionAttribute definition = createTransactionAttribute ("timeout" , "baz" );
115
108
definition .setTimeout (20 );
116
109
TransactionStatus status = underTest .getTransaction (definition );
117
110
beginTransaction ("123" , "foo" , "bar" );
@@ -127,17 +120,14 @@ public void getTransactionReturnsTransactionCreatesStreamTransactionWithAllColle
127
120
128
121
@ Test
129
122
public void nestedGetTransactionReturnsExistingTransactionWithFormerCollections () {
130
- DefaultTransactionAttribute first = new DefaultTransactionAttribute ();
131
- first .setLabels (Collections .singleton ("foo" ));
132
- TransactionStatus outer = underTest .getTransaction (first );
123
+ TransactionStatus outer = underTest .getTransaction (createTransactionAttribute ("outer" , "foo" ));
133
124
assertThat (outer .isNewTransaction (), is (true ));
134
125
135
126
beginTransaction ("123" , "foo" , "bar" );
136
127
when (streamTransaction .getStatus ())
137
128
.thenReturn (StreamTransactionStatus .running );
138
129
139
- DefaultTransactionAttribute second = new DefaultTransactionAttribute ();
140
- second .setLabels (Collections .singleton ("bar" ));
130
+ DefaultTransactionAttribute second = createTransactionAttribute ("inner" , "bar" );
141
131
TransactionStatus inner1 = underTest .getTransaction (second );
142
132
assertThat (inner1 .isNewTransaction (), is (false ));
143
133
ArangoTransactionObject tx1 = getTransactionObject (inner1 );
@@ -155,9 +145,8 @@ public void nestedGetTransactionReturnsExistingTransactionWithFormerCollections(
155
145
156
146
@ Test
157
147
public void getTransactionForPropagationSupportsWithoutExistingCreatesDummyTransaction () {
158
- DefaultTransactionAttribute supports = new DefaultTransactionAttribute ( );
148
+ DefaultTransactionAttribute supports = createTransactionAttribute ( "test" , "foo" );
159
149
supports .setPropagationBehavior (TransactionDefinition .PROPAGATION_SUPPORTS );
160
- supports .setLabels (Collections .singleton ("foo" ));
161
150
TransactionStatus empty = underTest .getTransaction (supports );
162
151
assertThat (empty .isNewTransaction (), is (false ));
163
152
underTest .commit (empty );
@@ -167,12 +156,9 @@ public void getTransactionForPropagationSupportsWithoutExistingCreatesDummyTrans
167
156
168
157
@ Test
169
158
public void getTransactionForPropagationSupportsWithExistingCreatesInner () {
170
- DefaultTransactionAttribute first = new DefaultTransactionAttribute ();
171
- first .setLabels (Collections .singleton ("foo" ));
172
- TransactionStatus outer = underTest .getTransaction (first );
173
- DefaultTransactionAttribute supports = new DefaultTransactionAttribute ();
159
+ TransactionStatus outer = underTest .getTransaction (createTransactionAttribute ("outer" , "foo" ));
160
+ DefaultTransactionAttribute supports = createTransactionAttribute ("supports" , "bar" );
174
161
supports .setPropagationBehavior (TransactionDefinition .PROPAGATION_SUPPORTS );
175
- supports .setLabels (Collections .singleton ("bar" ));
176
162
TransactionStatus inner = underTest .getTransaction (supports );
177
163
assertThat (inner .isNewTransaction (), is (false ));
178
164
underTest .commit (inner );
@@ -183,10 +169,7 @@ public void getTransactionForPropagationSupportsWithExistingCreatesInner() {
183
169
184
170
@ Test
185
171
public void getTransactionWithMultipleBridgeCallsWorksForKnownCollections () {
186
- DefaultTransactionAttribute definition = new DefaultTransactionAttribute ();
187
- definition .setLabels (Collections .singleton ("baz" ));
188
- definition .setTimeout (20 );
189
- underTest .getTransaction (definition );
172
+ underTest .getTransaction (createTransactionAttribute ("test" , "baz" ));
190
173
beginTransaction ("123" , "foo" );
191
174
beginPassed .getValue ().apply (Arrays .asList ("foo" , "baz" ));
192
175
verify (database ).beginStreamTransaction (optionsPassed .capture ());
@@ -196,10 +179,7 @@ public void getTransactionWithMultipleBridgeCallsWorksForKnownCollections() {
196
179
197
180
@ Test
198
181
public void getTransactionWithMultipleBridgeCallsIgnoresAdditionalCollections () {
199
- DefaultTransactionAttribute definition = new DefaultTransactionAttribute ();
200
- definition .setLabels (Collections .singleton ("bar" ));
201
- definition .setTimeout (20 );
202
- TransactionStatus state = underTest .getTransaction (definition );
182
+ TransactionStatus state = underTest .getTransaction (createTransactionAttribute ("test" , "bar" ));
203
183
beginTransaction ("123" , "foo" );
204
184
beginPassed .getValue ().apply (Collections .singletonList ("baz" ));
205
185
assertThat (getTransactionObject (state ).getHolder ().getCollectionNames (), hasItems ("foo" , "bar" ));
@@ -208,7 +188,7 @@ public void getTransactionWithMultipleBridgeCallsIgnoresAdditionalCollections()
208
188
209
189
@ Test (expected = InvalidIsolationLevelException .class )
210
190
public void getTransactionThrowsInvalidIsolationLevelExceptionForIsolationSerializable () {
211
- DefaultTransactionAttribute definition = new DefaultTransactionAttribute ( );
191
+ DefaultTransactionAttribute definition = createTransactionAttribute ( "serializable" );
212
192
definition .setIsolationLevel (TransactionDefinition .ISOLATION_SERIALIZABLE );
213
193
underTest .getTransaction (definition );
214
194
}
@@ -235,4 +215,11 @@ private ArangoTransactionObject getTransactionObject(TransactionStatus status) {
235
215
private TransactionCollectionOptions getCollections (StreamTransactionOptions options ) {
236
216
return (TransactionCollectionOptions ) forDirectFieldAccess (options ).getPropertyValue ("collections" );
237
217
}
218
+
219
+ private static DefaultTransactionAttribute createTransactionAttribute (String name , String ... collections ) {
220
+ DefaultTransactionAttribute transactionAttribute = new DefaultTransactionAttribute ();
221
+ transactionAttribute .setName (name );
222
+ transactionAttribute .setLabels (Arrays .asList (collections ));
223
+ return transactionAttribute ;
224
+ }
238
225
}
0 commit comments