@Test public void duplicateColumnsWithoutCaseChangeCauseException() { jdbi.useHandle(h -> { h.getConfig(MapMappers.class).setCaseChange(CaseStrategy.NOP); ResultIterable<Map<String, BigDecimal>> query = h.createQuery(QUERY.replace("two", "one")).mapToMap(BigDecimal.class); assertThatThrownBy(query::findOnly) .hasMessageContaining("map key \"one\" (from column \"one\") appears twice"); }); }
@Test public void duplicateKeysAfterCaseChangeCauseException() { jdbi.useHandle(h -> { h.getConfig(MapMappers.class).setCaseChange(CaseStrategy.LOWER); // one and ONE ResultIterable<Map<String, BigDecimal>> query = h.createQuery(QUERY.replace("two", "ONE")).mapToMap(BigDecimal.class); assertThatThrownBy(query::findOnly) .hasMessageContaining("map key \"one\" (from column \"ONE\") appears twice"); }); }
@Test public void testCaseLower() { h.getConfig(MapMappers.class).setCaseChange(CaseStrategy.LOCALE_LOWER); Map<String, Object> noOne = h.createQuery("select * from Foo").mapToMap().findOnly(); assertThat(noOne).containsOnlyKeys("id", "firstname"); }
@Test public void testCaseDefaultNop() { h.getConfig(MapMappers.class).setCaseChange(CaseStrategy.NOP); Map<String, Object> noOne = h.createQuery("select * from Foo").mapToMap().findOnly(); assertThat(noOne).containsOnlyKeys("Id", "FirstName"); }
@Test public void testCaseUpper() { h.getConfig(MapMappers.class).setCaseChange(CaseStrategy.LOCALE_UPPER); Map<String, Object> noOne = h.createQuery("select * from Foo").mapToMap().findOnly(); assertThat(noOne).containsOnlyKeys("ID", "FIRSTNAME"); } }
@Test public void duplicateKeysAfterCaseChangeCauseException() { jdbi.useHandle(h -> { h.getConfig(MapMappers.class).setCaseChange(CaseStrategy.LOWER); // one and ONE ResultIterable<Map<String, BigDecimal>> query = h.createQuery(QUERY.replace("two", "ONE")).mapToMap(BigDecimal.class); assertThatThrownBy(query::findOnly) .hasMessageContaining("map key \"one\" (from column \"ONE\") appears twice"); }); }
@Test public void duplicateColumnsWithoutCaseChangeCauseException() { jdbi.useHandle(h -> { h.getConfig(MapMappers.class).setCaseChange(CaseStrategy.NOP); ResultIterable<Map<String, BigDecimal>> query = h.createQuery(QUERY.replace("two", "one")).mapToMap(BigDecimal.class); assertThatThrownBy(query::findOnly) .hasMessageContaining("map key \"one\" (from column \"one\") appears twice"); }); }