@@ -80,6 +80,54 @@ def test_transaction_execute_with_result(db, col, docs):
80
80
assert job3 .result ()['_key' ] == docs [1 ]['_key' ]
81
81
82
82
83
+ def test_transaction_execute_aql (db , col , docs ):
84
+ with db .begin_transaction (
85
+ return_result = True , read = [col .name ], write = [col .name ]) as txn_db :
86
+ job1 = txn_db .aql .execute (
87
+ 'INSERT @data IN @@collection' ,
88
+ bind_vars = {'data' : docs [0 ], '@collection' : col .name })
89
+ job2 = txn_db .aql .execute (
90
+ 'INSERT @data IN @@collection' ,
91
+ bind_vars = {'data' : docs [1 ], '@collection' : col .name })
92
+ job3 = txn_db .aql .execute (
93
+ 'RETURN DOCUMENT(@@collection, @key)' ,
94
+ bind_vars = {'key' : docs [1 ]['_key' ], '@collection' : col .name })
95
+ jobs = txn_db .queued_jobs ()
96
+ assert jobs == [job1 , job2 , job3 ]
97
+ assert all (job .status () == 'pending' for job in jobs )
98
+
99
+ assert txn_db .queued_jobs () == [job1 , job2 , job3 ]
100
+ assert all (job .status () == 'done' for job in txn_db .queued_jobs ())
101
+ assert extract ('_key' , col .all ()) == extract ('_key' , docs [:2 ])
102
+
103
+ # Test successful results
104
+ assert extract ('_key' , job3 .result ()) == [docs [1 ]['_key' ]]
105
+
106
+
107
+ def test_transaction_execute_aql_string_form (db , col , docs ):
108
+ with db .begin_transaction (
109
+ return_result = True , read = col .name , write = col .name ) as txn_db :
110
+ job1 = txn_db .aql .execute (
111
+ 'INSERT @data IN @@collection' ,
112
+ bind_vars = {'data' : docs [0 ], '@collection' : col .name })
113
+ job2 = txn_db .aql .execute (
114
+ 'INSERT @data IN @@collection' ,
115
+ bind_vars = {'data' : docs [1 ], '@collection' : col .name })
116
+ job3 = txn_db .aql .execute (
117
+ 'RETURN DOCUMENT(@@collection, @key)' ,
118
+ bind_vars = {'key' : docs [1 ]['_key' ], '@collection' : col .name })
119
+ jobs = txn_db .queued_jobs ()
120
+ assert jobs == [job1 , job2 , job3 ]
121
+ assert all (job .status () == 'pending' for job in jobs )
122
+
123
+ assert txn_db .queued_jobs () == [job1 , job2 , job3 ]
124
+ assert all (job .status () == 'done' for job in txn_db .queued_jobs ())
125
+ assert extract ('_key' , col .all ()) == extract ('_key' , docs [:2 ])
126
+
127
+ # Test successful results
128
+ assert extract ('_key' , job3 .result ()) == [docs [1 ]['_key' ]]
129
+
130
+
83
131
def test_transaction_execute_error_in_result (db , col , docs ):
84
132
txn_db = db .begin_transaction (timeout = 100 , sync = True )
85
133
txn_col = txn_db .collection (col .name )
0 commit comments