package org.gbif.checklistbank.service.mybatis.postgres;
import org.gbif.api.vocabulary.NameUsageIssue;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Set;
import org.junit.Rule;
import org.junit.Test;
import org.mockito.Mock;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
public class ArraySetIssueTypeHandlerTest {
@Mock
ResultSet rs;
@Rule
public ClbDbTestRule dbSetup = ClbDbTestRule.empty();
@Test
public void testConvert() throws Exception {
try (Connection con = dbSetup.getConnection()) {
try (Statement st = con.createStatement()){
st.execute("drop table if exists tt");
st.execute("create table tt (annes text[])");
st.execute("insert into tt values ('{RANK_INVALID,RANK_INVALID,CHAINED_SYNOYM}')");
st.execute("insert into tt values ('{\"RANK_INVALID\",\"RANK_INVALID\",\"CHAINED_SYNOYM\"}')");
st.execute("select annes from tt");
ArraySetIssueTypeHandler th = new ArraySetIssueTypeHandler();
ResultSet rs = st.getResultSet();
while (rs.next()) {
Set<NameUsageIssue> res = th.getNullableResult(rs, 1);
assertEquals(2, res.size());
assertTrue(res.contains(NameUsageIssue.RANK_INVALID));
assertTrue(res.contains(NameUsageIssue.CHAINED_SYNOYM));
}
}
}
}
}