55
66import java .sql .ResultSetMetaData ;
77
8- import static org .junit .Assert .assertEquals ;
9- import static org .junit .Assert .assertNotNull ;
108import static org .junit .Assert .assertEquals ;
119import static org .mockito .ArgumentMatchers .any ;
12- import static org .mockito .ArgumentMatchers .anyInt ;
13- import static org .mockito .ArgumentMatchers .anyString ;
1410import static org .mockito .ArgumentMatchers .eq ;
1511import static org .mockito .Mockito .mock ;
1612import static org .mockito .Mockito .times ;
@@ -24,8 +20,15 @@ public void getParsedDatabaseStatement_cachesSqlStatement() {
2420 DatabaseStatementParser mockParser = mock (DatabaseStatementParser .class );
2521 CachingDatabaseStatementParser cache = new CachingDatabaseStatementParser (mockParser );
2622
23+ when (mockParser .getParsedDatabaseStatement (any (), eq ("sql" ), any ())).thenReturn (new ParsedDatabaseStatement ("tablename" , "select" , true ));
24+
25+ // Initial call will cache the result
2726 ParsedDatabaseStatement statement = cache .getParsedDatabaseStatement (mock (DatabaseVendor .class ), "sql" , mock (ResultSetMetaData .class ));
2827 verify (mockParser , times (1 )).getParsedDatabaseStatement (any (), eq ("sql" ), any ());
28+
29+ // Subsequent calls will retrieve the value from the cache and not call the databaseStatementParser again
30+ assertEquals (statement , cache .getParsedDatabaseStatement (mock (DatabaseVendor .class ), "sql" , mock (ResultSetMetaData .class )));
31+ verify (mockParser , times (1 )).getParsedDatabaseStatement (any (), eq ("sql" ), any ());
2932 }
3033
3134 @ Test
@@ -34,4 +37,4 @@ public void getParsedDatabaseStatement_withNullStatement_returnsUnparseableState
3437 CachingDatabaseStatementParser cache = new CachingDatabaseStatementParser (mockParser );
3538 assertEquals (DatabaseStatementParser .UNPARSEABLE_STATEMENT , cache .getParsedDatabaseStatement (mock (DatabaseVendor .class ), null , null ));
3639 }
37- }
40+ }
0 commit comments