|
17 | 17 |
|
18 | 18 | import android.content.ContentValues; |
19 | 19 | import android.database.Cursor; |
| 20 | +import android.database.SQLException; |
20 | 21 | import android.database.sqlite.SQLiteDatabase; |
21 | 22 | import android.database.sqlite.SQLiteException; |
22 | 23 | import android.support.test.InstrumentationRegistry; |
@@ -476,6 +477,86 @@ public final class BriteDatabaseTest { |
476 | 477 | .isExhausted(); |
477 | 478 | } |
478 | 479 |
|
| 480 | + @Test public void executeSqlNoTrigger() { |
| 481 | + db.createQuery(TABLE_EMPLOYEE, SELECT_EMPLOYEES) |
| 482 | + .skip(1) // Skip initial |
| 483 | + .subscribe(o); |
| 484 | + |
| 485 | + db.execute("UPDATE " + TABLE_EMPLOYEE + " SET " + TestDb.EmployeeTable.NAME + " = 'Zach'"); |
| 486 | + o.assertNoMoreEvents(); |
| 487 | + } |
| 488 | + |
| 489 | + @Test public void executeSqlWithArgsNoTrigger() { |
| 490 | + db.createQuery(TABLE_EMPLOYEE, SELECT_EMPLOYEES) |
| 491 | + .skip(1) // Skip initial |
| 492 | + .subscribe(o); |
| 493 | + |
| 494 | + db.execute("UPDATE " + TABLE_EMPLOYEE + " SET " + TestDb.EmployeeTable.NAME + " = ?", "Zach"); |
| 495 | + o.assertNoMoreEvents(); |
| 496 | + } |
| 497 | + |
| 498 | + @Test public void executeSqlAndTrigger() { |
| 499 | + db.createQuery(TABLE_EMPLOYEE, SELECT_EMPLOYEES).subscribe(o); |
| 500 | + o.assertCursor() |
| 501 | + .hasRow("alice", "Alice Allison") |
| 502 | + .hasRow("bob", "Bob Bobberson") |
| 503 | + .hasRow("eve", "Eve Evenson") |
| 504 | + .isExhausted(); |
| 505 | + |
| 506 | + db.executeAndTrigger(TABLE_EMPLOYEE, |
| 507 | + "UPDATE " + TABLE_EMPLOYEE + " SET " + TestDb.EmployeeTable.NAME + " = 'Zach'"); |
| 508 | + o.assertCursor() |
| 509 | + .hasRow("alice", "Zach") |
| 510 | + .hasRow("bob", "Zach") |
| 511 | + .hasRow("eve", "Zach") |
| 512 | + .isExhausted(); |
| 513 | + } |
| 514 | + |
| 515 | + @Test public void executeSqlThrowsAndDoesNotTrigger() { |
| 516 | + db.createQuery(TABLE_EMPLOYEE, SELECT_EMPLOYEES) |
| 517 | + .skip(1) // Skip initial |
| 518 | + .subscribe(o); |
| 519 | + |
| 520 | + try { |
| 521 | + db.executeAndTrigger(TABLE_EMPLOYEE, |
| 522 | + "UPDATE not_a_table SET " + TestDb.EmployeeTable.NAME + " = 'Zach'"); |
| 523 | + fail(); |
| 524 | + } catch (SQLException ignored) { |
| 525 | + } |
| 526 | + o.assertNoMoreEvents(); |
| 527 | + } |
| 528 | + |
| 529 | + @Test public void executeSqlWithArgsAndTrigger() { |
| 530 | + db.createQuery(TABLE_EMPLOYEE, SELECT_EMPLOYEES).subscribe(o); |
| 531 | + o.assertCursor() |
| 532 | + .hasRow("alice", "Alice Allison") |
| 533 | + .hasRow("bob", "Bob Bobberson") |
| 534 | + .hasRow("eve", "Eve Evenson") |
| 535 | + .isExhausted(); |
| 536 | + |
| 537 | + db.executeAndTrigger(TABLE_EMPLOYEE, |
| 538 | + "UPDATE " + TABLE_EMPLOYEE + " SET " + TestDb.EmployeeTable.NAME + " = ?", "Zach"); |
| 539 | + o.assertCursor() |
| 540 | + .hasRow("alice", "Zach") |
| 541 | + .hasRow("bob", "Zach") |
| 542 | + .hasRow("eve", "Zach") |
| 543 | + .isExhausted(); |
| 544 | + } |
| 545 | + |
| 546 | + @Test public void executeSqlWithArgsThrowsAndDoesNotTrigger() { |
| 547 | + db.createQuery(TABLE_EMPLOYEE, SELECT_EMPLOYEES) |
| 548 | + .skip(1) // Skip initial |
| 549 | + .subscribe(o); |
| 550 | + |
| 551 | + try { |
| 552 | + db.executeAndTrigger(TABLE_EMPLOYEE, |
| 553 | + "UPDATE not_a_table SET " + TestDb.EmployeeTable.NAME + " = ?", "Zach"); |
| 554 | + fail(); |
| 555 | + } catch (SQLException ignored) { |
| 556 | + } |
| 557 | + o.assertNoMoreEvents(); |
| 558 | + } |
| 559 | + |
479 | 560 | @Test public void transactionOnlyNotifiesOnce() { |
480 | 561 | db.createQuery(TABLE_EMPLOYEE, SELECT_EMPLOYEES).subscribe(o); |
481 | 562 | o.assertCursor() |
|
0 commit comments