@Override public String toString() { return toString(new StringBuilder()).toString(); }
@Test public void basic() { String sql = "SELECT 1"; Statement stmt = Statement.of(sql); assertThat(stmt.getSql()).isEqualTo(sql); assertThat(stmt.getParameters()).isEmpty(); assertThat(stmt.toString()).isEqualTo(sql); reserializeAndAssert(stmt); }
@Test public void append() { Statement stmt = Statement.newBuilder("SELECT Name FROM Users") .append(" WHERE Id = @id") .bind("id") .to(1234) .append(" AND Status = @status") .bind("status") .to("ACTIVE") .build(); String expectedSql = "SELECT Name FROM Users WHERE Id = @id AND Status = @status"; assertThat(stmt.getSql()).isEqualTo(expectedSql); assertThat(stmt.hasBinding("id")).isTrue(); assertThat(stmt.hasBinding("status")).isTrue(); assertThat(stmt.getParameters()) .containsExactlyEntriesIn( ImmutableMap.of("id", Value.int64(1234), "status", Value.string("ACTIVE"))); assertThat(stmt.toString()).startsWith(expectedSql); assertThat(stmt.toString()).contains("id: 1234"); assertThat(stmt.toString()).contains("status: ACTIVE"); }
@Test public void bindReplacement() { String sql = "SELECT Name FROM Users WHERE Id = @id"; Statement stmt = Statement.newBuilder(sql).bind("id").to(1).bind("id").to(2).build(); assertThat(stmt.hasBinding("id")).isTrue(); assertThat(stmt.getSql()).isEqualTo(sql); assertThat(stmt.getParameters()).isEqualTo(ImmutableMap.of("id", Value.int64(2))); assertThat(stmt.toString()).isEqualTo(sql + " {id: 2}"); }
@Override public String toString() { return toString(new StringBuilder()).toString(); }