private String parseString(final String src) { return parser.parse(src, mock(StatementContext.class)).getSql(); }
@Test public void testOddCharacters() { ParsedSql parsed = parser.parse("~* #boo '#nope' _%&^& *@ #id", ctx); assertThat(parsed.getSql()).isEqualTo("~* ? '#nope' _%&^& *@ ?"); }
@Test public void testOddCharacters() { ParsedSql parsed = parser.parse("~* :boo ':nope' _%&^& *@ :id", ctx); assertThat(parsed.getSql()).isEqualTo("~* ? ':nope' _%&^& *@ ?"); }
@Test public void testNumbers() { ParsedSql parsed = parser.parse(":bo0 ':nope' _%&^& *@ :id", ctx); assertThat(parsed.getSql()).isEqualTo("? ':nope' _%&^& *@ ?"); }
@Test public void testBailsOutOnInvalidInput() { assertThatThrownBy(() -> parser.parse("select * from something\n where id = :\u0087\u008e\u0092\u0097\u009c", ctx).getSql()) .isInstanceOf(UnableToCreateStatementException.class); }
@Test public void testDollarSignOkay() { ParsedSql parsed = parser.parse("select * from v$session", ctx); assertThat(parsed.getSql()).isEqualTo("select * from v$session"); }
@Test public void testColonIsLiteral() { ParsedSql parsed = parser.parse("select * from foo where id = :id", ctx); assertThat(parsed.getSql()).isEqualTo("select * from foo where id = :id"); }
@Test public void testCommentQuote() { String sql = "select 1 /* ' \" <foo> */"; assertThat(parser.parse(sql, ctx).getSql()).isEqualTo(sql); }
@Test public void testSubstitutesDefinedAttributes() { String sql = "select foo from bar where foo = #someValue"; ParsedSql parsed = parser.parse(sql, ctx); assertThat(parsed.getSql()).isEqualTo("select foo from bar where foo = ?"); }
@Test public void testNewlinesOkay() { ParsedSql parsed = parser.parse("select * from something\n where id = :id", ctx); assertThat(parsed.getSql()).isEqualTo("select * from something\n where id = ?"); }
@Test public void testBacktickOkay() { ParsedSql parsed = parser.parse("select * from `v$session", ctx); assertThat(parsed.getSql()).isEqualTo("select * from `v$session"); }
@Test public void testNewlinesOkay() { ParsedSql parsed = parser.parse("select * from something\n where id = #id", ctx); assertThat(parsed.getSql()).isEqualTo("select * from something\n where id = ?"); }
@Test public void testBacktickOkay() { ParsedSql parsed = parser.parse("select * from `v$session", ctx); assertThat(parsed.getSql()).isEqualTo("select * from `v$session"); }
@Test public void testDollarSignOkay() { ParsedSql parsed = parser.parse("select * from v$session", ctx); assertThat(parsed.getSql()).isEqualTo("select * from v$session"); }
@Test public void testSubstitutesDefinedAttributes() { String sql = "select foo from bar where foo = :someValue"; ParsedSql parsed = parser.parse(sql, ctx); assertThat(parsed.getSql()).isEqualTo("select foo from bar where foo = ?"); }
@Test public void testNumbers() { ParsedSql parsed = parser.parse("#bo0 '#nope' _%&^& *@ #id", ctx); assertThat(parsed.getSql()).isEqualTo("? '#nope' _%&^& *@ ?"); }
@Test public void testHashInColumnNameOkay() { ParsedSql parsed = parser.parse("select column# from thetable where id = :id", ctx); assertThat(parsed.getSql()).isEqualTo("select column# from thetable where id = ?"); }
@Test public void testDoubleColon() { final String doubleColon = "select 1::int"; ParsedSql parsed = parser.parse(doubleColon, ctx); assertThat(parsed.getSql()).isEqualTo(doubleColon); }
@Test public void testFactoryNamedParameters() { final List<String> names = Arrays.asList("a", "b", "c"); final String sql = "insert into test (a, b, c) values (?, ?, ?)"; final ParsedParameters parameters = ParsedParameters.named(names); final ParsedSql parsedSql = ParsedSql.of(sql, parameters); assertThat(parsedSql).isNotNull(); assertThat(parsedSql.getSql()).isEqualTo(sql); assertThat(parsedSql.getParameters().isPositional()).isFalse(); assertThat(parsedSql.getParameters().getParameterNames()).containsExactly("a", "b", "c"); }
@Test public void testFactoryPositionalParameters() { final String sql = "insert into test (a, b, c) values (?, ?, ?)"; final ParsedParameters parameters = ParsedParameters.positional(3); final ParsedSql parsedSql = ParsedSql.of(sql, parameters); assertThat(parsedSql).isNotNull(); assertThat(parsedSql.getSql()).isEqualTo(sql); assertThat(parsedSql.getParameters().isPositional()).isTrue(); assertThat(parsedSql.getParameters().getParameterNames()).containsOnly("?"); }