package org.crazycake.formSqlBuilder.model; import static org.junit.Assert.*; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import org.crazycake.formSqlBuilder.model.enums.Operator; import org.crazycake.formSqlBuilder.model.enums.Relation; import org.crazycake.formSqlBuilder.testvo.Person; import static org.hamcrest.CoreMatchers.*; import org.junit.Test; public class QueryNodeFactoryTest { @Test public void testCreateQueryNode() throws IllegalArgumentException, SecurityException, IllegalAccessException, InvocationTargetException, NoSuchMethodException { Person p = new Person("rose", 23, "xiamen", 1); Rule r = new Rule("String:name", Operator.EQUAL, Relation.AND); QueryNode node = QueryNodeFactory.createQueryNode("name", r, p); assertThat(node.getField(), is("name")); assertThat(node.getOp(),is("=")); assertThat(node.getRel(),is("AND")); assertThat((String)node.getValue(),is("rose")); } @Test public void testCreateQueryNodeWithWildcard() throws IllegalArgumentException, SecurityException, IllegalAccessException, InvocationTargetException, NoSuchMethodException { Person p = new Person("rose", 23, "xiamen", 1); p.setBirthdayFrom("1980-01-01"); Rule r = new Rule("String:*From", Operator.GREAT_THAN, Relation.AND); r.setWildcardTargetField(true); QueryNode node = QueryNodeFactory.createQueryNode("birthdayFrom", r, p); assertThat(node.getField(), is("birthday")); assertThat(node.getOp(),is(">")); assertThat(node.getRel(),is("AND")); assertThat((String)node.getValue(),is("1980-01-01")); } @Test public void testCreateQueryNodeWithIn() throws IllegalArgumentException, SecurityException, IllegalAccessException, InvocationTargetException, NoSuchMethodException { Person p = new Person("rose", 23, "xiamen", 1); p.setSelectedRoles("admin,normaluser"); Rule r = new Rule("String:selected*", Operator.IN, Relation.AND); r.setWildcardTargetField(true); QueryNode node = QueryNodeFactory.createQueryNode("selectedRoles", r, p); assertThat(node.getField(), is("roles")); assertThat(node.getOp(),is("in")); assertThat(node.getRel(),is("AND")); ArrayList expect = new ArrayList(); expect.add("admin"); expect.add("normaluser"); assertThat((ArrayList)node.getValue(),is(expect)); } }