@@ -220,6 +220,42 @@ describe "pgmoon with server", ->
220220 assert . falsy status, " connection should fail if it could not establish ssl"
221221 assert . same [[ the server does not support SSL connections]] , err
222222
223+ describe " transaction_status" , ->
224+ it " is idle after connect" , ->
225+ assert . same " I" , pg. transaction_status
226+
227+ it " is in transaction after BEGIN" , ->
228+ assert pg\ query " BEGIN"
229+ assert . same " T" , pg. transaction_status
230+ assert pg\ query " ROLLBACK"
231+ assert . same " I" , pg. transaction_status
232+
233+ it " is in error state after failed query in transaction" , ->
234+ assert pg\ query " BEGIN"
235+ assert . same " T" , pg. transaction_status
236+
237+ -- query a non-existent table to trigger an error
238+ res, err = pg\ query " SELECT * FROM nonexistent_table_12345"
239+ assert . falsy res
240+ assert . same " E" , pg. transaction_status
241+
242+ -- further queries should fail until rollback
243+ res, err = pg\ query " SELECT 1"
244+ assert . falsy res
245+ assert . same " E" , pg. transaction_status
246+
247+ -- rollback should restore to idle
248+ assert pg\ query " ROLLBACK"
249+ assert . same " I" , pg. transaction_status
250+
251+ it " returns to idle after COMMIT" , ->
252+ assert pg\ query " BEGIN"
253+ assert . same " T" , pg. transaction_status
254+ assert pg\ query " SELECT 1"
255+ assert . same " T" , pg. transaction_status
256+ assert pg\ query " COMMIT"
257+ assert . same " I" , pg. transaction_status
258+
223259 describe " extended_query" , ->
224260 it " query with no params" , ->
225261 res = assert pg\ extended_query " select 1 as one"
0 commit comments