@Test public void testAtMostOnceUpdatePositive() throws Exception { try (Spy ignored = Sniffer.expectAtMostOnce(UPDATE)) { executeStatement(UPDATE); } try (Spy ignored = Sniffer.expectAtMostOnce(UPDATE)) { executeStatement(DELETE); executeStatement(UPDATE); } }
@Test(expected = WrongNumberOfQueriesError.class) public void testAtMostOnceUpdateOtherThreadNegative() throws Exception { try (Spy ignored = Sniffer.expectAtMostOnce(UPDATE, Threads.OTHERS)) { executeStatementsInOtherThread(2, UPDATE); } }
@Test(expected = WrongNumberOfQueriesError.class) public void testAtMostOnceUpdateNegative() throws Exception { try (Spy ignored = Sniffer.expectAtMostOnce(UPDATE)) { executeStatements(2, UPDATE); } }
@Test public void testExpectNotMoreThanOne() { // positive try (Spy ignored = Sniffer.expectAtMostOnce()) { executeStatement(); } // negative try { try (Spy ignored = Sniffer.expectAtMostOnce()) { executeStatements(2); } } catch (WrongNumberOfQueriesError e) { assertNotNull(e); } // positive thread local try (Spy ignored = Sniffer.expectAtMostOnce(Threads.CURRENT)) { executeStatement(); executeStatementInOtherThread(); } }
@Test public void testAtMostOnceUpdateOtherThreadPositive() throws Exception { try (Spy ignored = Sniffer.expectAtMostOnce(Threads.OTHERS, UPDATE)) { executeStatementInOtherThread(SELECT); executeStatementInOtherThread(UPDATE); executeStatements(5, UPDATE); } }
@Test public void testQueryType() throws Exception { try (Connection connection = DriverManager.getConnection("sniffer:jdbc:h2:mem:", "sa", "sa")) { connection.createStatement().execute("CREATE TEMPORARY TABLE TEMPORARY_TABLE (BAZ VARCHAR(255))"); try (@SuppressWarnings("unused") Spy spy = Sniffer.expectAtMostOnce(Query.INSERT)) { connection.createStatement().execute("INSERT INTO TEMPORARY_TABLE (BAZ) VALUES ('foo')"); connection.createStatement().execute("INSERT INTO TEMPORARY_TABLE (BAZ) VALUES (LOWER('bar'))"); connection.createStatement().execute("UPDATE TEMPORARY_TABLE SET BAZ = UPPER(BAZ)"); } } catch (WrongNumberOfQueriesError e) { assertNotNull(e); assertEquals(0, e.getMinimumQueries()); assertEquals(1, e.getMaximumQueries()); assertEquals(2, e.getNumQueries()); assertEquals(3, e.getExecutedStatements().size()); assertEquals(3, e.getExecutedSqls().size()); assertEquals(Threads.CURRENT, e.getThreadMatcher()); assertEquals(SqlStatement.INSERT, e.getQuery()); assertTrue(e.getMessage().contains("INSERT INTO TEMPORARY_TABLE (BAZ) VALUES ('foo')")); assertTrue(e.getMessage().contains("INSERT INTO TEMPORARY_TABLE (BAZ) VALUES (LOWER('bar'))")); assertFalse(e.getMessage().contains("UPDATE TEMPORARY_TABLE SET BAZ = UPPER(BAZ)")); } }