fixing builder design pattern + adding dependencies null check
enhancing test utilities - rollback can be called more than once on transaction object, the same applies to transaction commit
additional test scenarios - ommiting transaction.prepare method call
adding empty transaction tests
introducing utility methods for test setup & tearDown
eliminating good-for-nothing PREPARE_UNDOING transaction state
make intermediary transaction states naming convention consistent - PREPARING, COMMITTING, ROLLING_BACK
refactoring abstract test class to util package
All transaction prepare(), commit() & rollback() can be called only once - improving exception messages and tests