@Test
  public void testSuccessTransaction() throws Exception {
    assertThat(shDatabase.isTransactionSuccess()).isFalse();
    database.beginTransaction();
    assertThat(shDatabase.isTransactionSuccess()).isFalse();
    database.execSQL("INSERT INTO table_name (id, name) VALUES(1234, 'Chuck');");
    assertThat(shDatabase.isTransactionSuccess()).isFalse();
    database.setTransactionSuccessful();
    assertThat(shDatabase.isTransactionSuccess()).isTrue();
    database.endTransaction();
    assertThat(shDatabase.isTransactionSuccess()).isFalse();

    Cursor cursor = database.rawQuery("SELECT COUNT(*) FROM table_name", null);
    assertThat(cursor.moveToNext()).isTrue();
    assertThat(cursor.getInt(0)).isEqualTo(1);
  }
  @Test
  public void testFailureTransaction() throws Exception {
    assertThat(shDatabase.isTransactionSuccess()).isFalse();
    database.beginTransaction();
    assertThat(shDatabase.isTransactionSuccess()).isFalse();

    database.execSQL("INSERT INTO table_name (id, name) VALUES(1234, 'Chuck');");

    final String select = "SELECT COUNT(*) FROM table_name";

    Cursor cursor = database.rawQuery(select, null);
    assertThat(cursor.moveToNext()).isTrue();
    assertThat(cursor.getInt(0)).isEqualTo(1);
    cursor.close();

    assertThat(shDatabase.isTransactionSuccess()).isFalse();
    database.endTransaction();

    cursor = database.rawQuery(select, null);
    assertThat(cursor.moveToNext()).isTrue();
    assertThat(cursor.getInt(0)).isEqualTo(0);

    assertThat(shDatabase.isTransactionSuccess()).isFalse();
  }