package io.ebeaninternal.server.text.json;
import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonGenerator;
import io.ebean.config.ServerConfig;
import io.ebean.config.dbplatform.DatabasePlatform;
import io.ebean.config.dbplatform.h2.H2Platform;
import io.ebeaninternal.server.core.bootup.BootupClasses;
import io.ebeaninternal.server.type.DefaultTypeManager;
import org.junit.Test;
import java.io.IOException;
import java.io.StringWriter;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import static org.assertj.core.api.Assertions.assertThat;
public class DJsonScalarTest {
private final DJsonScalar jsonScalar;
public DJsonScalarTest() {
ServerConfig serverConfig = new ServerConfig();
serverConfig.setDatabasePlatform(new H2Platform());
DefaultTypeManager typeManager = new DefaultTypeManager(serverConfig, new BootupClasses());
jsonScalar = new DJsonScalar(typeManager);
}
@Test
public void writeBasicTypes() throws IOException {
StringWriter writer = new StringWriter();
JsonGenerator generator = createGenerator(writer);
UUID uuid = UUID.randomUUID();
LocalDate today = LocalDate.now();
generator.writeRaw("[");
jsonScalar.write(generator, "hello");
generator.writeRaw(",");
jsonScalar.write(generator, uuid);
generator.writeRaw(",");
jsonScalar.write(generator, today);
generator.writeRaw("]");
generator.flush();
generator.close();
String json = writer.toString();
assertThat(json).contains("hello");
assertThat(json).contains(uuid.toString());
}
private JsonGenerator createGenerator(StringWriter writer) throws IOException {
JsonFactory factory = new JsonFactory();
return factory.createGenerator(writer);
}
@Test
public void writeDbArrayTypes() throws IOException {
StringWriter writer = new StringWriter();
JsonGenerator generator = createGenerator(writer);
List<UUID> list = new ArrayList<>();
list.add(UUID.randomUUID());
list.add(UUID.randomUUID());
jsonScalar.write(generator, list);
generator.flush();
generator.close();
String json = writer.toString();
assertThat(json).isEqualTo("[\""+list.get(0)+"\", \""+list.get(1)+"\"]");
}
}