@@ -353,3 +353,59 @@ class CustomError(Exception):
353353 )
354354 raise Exception ('error' )
355355 second_mocked_client .rollback_transaction .assert_not_called ()
356+
357+
358+ def test_execute_select_w_auto_transaction (mocked_client , mocker ) -> None :
359+ mocked_client .begin_transaction .return_value = {'transactionId' : 'abc' }
360+ mocked_client .execute_statement .return_value = {
361+ 'numberOfRecordsUpdated' : 0 ,
362+ 'records' : [[{'longValue' : 1 }, {'stringValue' : 'cat' }]],
363+ }
364+ data_api = connect (
365+ resource_arn = 'arn:aws:rds:dummy' ,
366+ secret_arn = 'dummy' ,
367+ database = 'test' ,
368+ client = mocked_client ,
369+ )
370+ result = data_api .execute ("select * from pets" )
371+ assert result .rowcount == 1
372+ assert result .fetchone () == [1 , 'cat' ]
373+ assert result .fetchone () is None
374+ assert mocked_client .execute_statement .call_args == mocker .call (
375+ continueAfterTimeout = True ,
376+ includeResultMetadata = True ,
377+ resourceArn = 'arn:aws:rds:dummy' ,
378+ secretArn = 'dummy' ,
379+ sql = "select * from pets" ,
380+ database = 'test' ,
381+ transactionId = 'abc' ,
382+ )
383+ mocked_client .begin_transaction .assert_called_once ()
384+
385+
386+ def test_execute_select_wo_auto_transaction (mocked_client , mocker ) -> None :
387+ mocked_client .begin_transaction .return_value = {'transactionId' : 'abc' }
388+ mocked_client .execute_statement .return_value = {
389+ 'numberOfRecordsUpdated' : 0 ,
390+ 'records' : [[{'longValue' : 1 }, {'stringValue' : 'cat' }]],
391+ }
392+ data_api = connect (
393+ resource_arn = 'arn:aws:rds:dummy' ,
394+ secret_arn = 'dummy' ,
395+ database = 'test' ,
396+ client = mocked_client ,
397+ auto_transaction = False ,
398+ )
399+ result = data_api .execute ("select * from pets" )
400+ assert result .rowcount == 1
401+ assert result .fetchone () == [1 , 'cat' ]
402+ assert result .fetchone () is None
403+ assert mocked_client .execute_statement .call_args == mocker .call (
404+ continueAfterTimeout = True ,
405+ database = 'test' ,
406+ includeResultMetadata = True ,
407+ resourceArn = 'arn:aws:rds:dummy' ,
408+ secretArn = 'dummy' ,
409+ sql = 'select * from pets' ,
410+ )
411+ mocked_client .begin_transaction .assert_not_called ()
0 commit comments