package com.w11k.lsql.tests;
import com.beust.jcommander.internal.Lists;
import com.beust.jcommander.internal.Maps;
import com.fasterxml.jackson.core.type.TypeReference;
import com.w11k.lsql.Row;
import com.w11k.lsql.Table;
import com.w11k.lsql.converter.predefined.ObjectToJsonStringConverter;
import com.w11k.lsql.tests.testdata.Person;
import org.testng.annotations.Test;
import java.util.List;
import java.util.Map;
import static org.testng.Assert.assertEquals;
public class ObjectToJsonStringConverterTest extends AbstractLSqlTest {
@Test
public void pojo() {
createTable("CREATE TABLE table1 (id INT PRIMARY KEY, person TEXT)");
Table t1 = this.lSql.table("table1");
t1.column("person").setConverter(new ObjectToJsonStringConverter(Person.class, new TypeReference<Person>(){}));
Person p = new Person(1, "Adam", 30);
t1.insert(Row.fromKeyVals("id", 1, "person", p));
Row row = t1.load(1).get();
assertEquals(row.get("person"), p);
}
@Test
public void listOfString() {
createTable("CREATE TABLE table1 (id INT PRIMARY KEY, data TEXT)");
Table t1 = lSql.table("table1");
t1.column("data").setConverter(new ObjectToJsonStringConverter(List.class, new TypeReference<List<String>>() {
}));
List<String> list = Lists.newLinkedList();
list.add("first");
list.add("second");
t1.insert(Row.fromKeyVals("id", 1, "data", list));
Row row = t1.load(1).get();
assertEquals(row.get("data"), list);
}
@Test
public void listOfMapStringString() {
createTable("CREATE TABLE table1 (id INT PRIMARY KEY, data TEXT)");
Table t1 = lSql.table("table1");
t1.column("data").setConverter(new ObjectToJsonStringConverter(List.class, new TypeReference<List<Map<String, String>>>() {
}));
List<Map<String, String>> list = Lists.newLinkedList();
Map<String, String> e = Maps.newHashMap();
e.put("a", "1");
e.put("b", "2");
list.add(e);
list.add(e);
t1.insert(Row.fromKeyVals("id", 1, "data", list));
Row row = t1.load(1).get();
assertEquals(row.get("data"), list);
}
@Test
public void listOfMapStringStringInALinkedRow() {
createTable("CREATE TABLE table1 (id SERIAL PRIMARY KEY, data TEXT)");
Table t1 = lSql.table("table1");
t1.column("data").setConverter(new ObjectToJsonStringConverter(List.class,
new TypeReference<List<Map<String, String>>>() {
}));
List<Map<String, String>> list = Lists.newLinkedList();
Map<String, String> e = Maps.newHashMap();
e.put("a", "1");
e.put("b", "2");
list.add(e);
list.add(e);
t1.newLinkedRow("id", 1, "data", list).save();
Row row = t1.load(1).get();
assertEquals(row.get("data"), list);
}
}