package com.redspr.redquerybuilder.js.client;
import java.util.Date;
import java.util.List;
import org.junit.Test;
import com.google.gwt.core.client.JsArrayMixed;
import com.google.gwt.core.client.JsDate;
import com.google.gwt.core.client.JsonUtils;
public class GwtTestBasics extends AbstractTest {
// TODO __ test putting dates, numbers into the args
@Test
public void testNothing() throws Throwable {
test(null, "Config is null.");
}
@Test
public void testEmptyConfig() throws Throwable {
test("{}", "Meta is null.");
}
@Test
public void testNoTables() throws Throwable {
test("{meta:{}}", "Unable to find table FOO");
}
@Test
public void testNoFksInJson() throws Throwable {
test("{meta:{tables:[{name:'Foo'}]}}", null);
}
@Test
public void testLegacyFk() {
JsFk fk = (JsFk) JsonUtils.unsafeEval("{pkColumnNames:['sillyName'], fkTableName:'almostAsSilly', fkColumnNames:['middleSilly']}");
assertEquals("sillyName", fk.getForeignKeyNames().get(0));
assertEquals("almostAsSilly", fk.getReferencedTableName());
assertEquals("middleSilly", fk.getReferencedKeyNames().get(0));
}
@Test
public void testInAndArgs() throws Throwable {
String json = Resources.INSTANCE.synchronous().getText();
test(json, "SELECT priority FROM ticket WHERE priority IN (?)", args("foo"), null);
builder.fireDirty();
assertEquals(1, getLastArgs(conf).length());
assertEquals("foo", getLastArgs(conf).getString(0));
}
@Test
public void testArrayParameterIn() throws Throwable {
String json = Resources.INSTANCE.synchronous().getText();
test(json, "SELECT priority FROM ticket WHERE priority IN (?, ?)", args("foo", "bar"), null);
builder.fireDirty();
assertEquals(2, getLastArgs(conf).length());
assertEquals("foo", getLastArgs(conf).getString(0));
assertEquals("bar", getLastArgs(conf).getString(1));
}
@Test
public void testDateInAndOut() throws Throwable {
String json = Resources.INSTANCE.minimalDateMeta().getText();
JsDate dateIn = JsDate.create();
dateIn.setUTCFullYear(1914);
dateIn.setUTCMonth(4);
dateIn.setUTCDate(15);
dateIn.setUTCHours(22);
dateIn.setUTCMinutes(13);
test(json, "SELECT dob FROM person WHERE dob = ?", args(dateIn), null);
builder.fireDirty();
assertEquals(1, getLastArgs(conf).length());
JsDate dateOut = getLastArgs(conf).getObject(0);
assertEquals(1914, dateOut.getUTCFullYear());
assertEquals(4, dateOut.getUTCMonth());
assertEquals(15, dateOut.getUTCDate());
assertEquals(22, dateOut.getUTCHours());
assertEquals(13, dateOut.getUTCMinutes());
}
public void testNullSqlAndNullArgs() throws Throwable {
String json = Resources.INSTANCE.synchronous().getText();
test(json, null, null, null);
builder.fireDirty();
}
public void testJsList() throws Throwable {
JsDate dateIn = JsDate.create();
dateIn.setUTCFullYear(1914);
dateIn.setUTCMonth(4);
dateIn.setUTCDate(15);
dateIn.setUTCHours(22);
dateIn.setUTCMinutes(13);
JsArrayMixed mixed = (JsArrayMixed) JsArrayMixed.createArray();
mixed.push(dateIn);
mixed.push(new Double(123.12d));
mixed.push("123");
mixed.push("false");
List<Object> list = JsList.get().toList(mixed);
Date dateOut = (Date) list.get(0);
Date dateOutUtc = new Date(dateOut.getTime() + 60 * 1000 * dateOut.getTimezoneOffset());
assertEquals(14, dateOutUtc.getYear());
assertEquals(4, dateOutUtc.getMonth());
assertEquals(15, dateOutUtc.getDate());
assertEquals(22, dateOutUtc.getHours());
assertEquals(13, dateOutUtc.getMinutes());
assertEquals(new Double(123.12d), list.get(1));
assertEquals("123", list.get(2));
assertEquals("false", list.get(3));
}
}