* Assert no changes are committed if we throw * Use `assert_called_with()` to ensure the expected statements are issued at each stage