Package net.sf.redmine_mylyn.api.query

Source Code of net.sf.redmine_mylyn.api.query.QueryFilterTest

package net.sf.redmine_mylyn.api.query;

import static net.sf.redmine_mylyn.api.query.CompareOperator.CLOSED;
import static net.sf.redmine_mylyn.api.query.CompareOperator.DAY_AGO_MORE_THEN;
import static net.sf.redmine_mylyn.api.query.CompareOperator.GTE;
import static net.sf.redmine_mylyn.api.query.CompareOperator.IS;
import static net.sf.redmine_mylyn.api.query.CompareOperator.IS_NOT;
import static net.sf.redmine_mylyn.api.query.CompareOperator.OPEN;
import static net.sf.redmine_mylyn.api.query.CompareOperator.TODAY;
import static net.sf.redmine_mylyn.api.query.QueryField.BOOLEAN_TYPE;
import static net.sf.redmine_mylyn.api.query.QueryField.DATE_CREATED;
import static net.sf.redmine_mylyn.api.query.QueryField.DATE_START;
import static net.sf.redmine_mylyn.api.query.QueryField.DONE_RATIO;
import static net.sf.redmine_mylyn.api.query.QueryField.STATUS;
import static net.sf.redmine_mylyn.api.query.QueryField.TRACKER;
import static net.sf.redmine_mylyn.api.query.QueryField.PROJECT;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.*;

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;

import net.sf.redmine_mylyn.api.TestData;
import net.sf.redmine_mylyn.api.model.Configuration;
import net.sf.redmine_mylyn.api.model.CustomField;
import net.sf.redmine_mylyn.api.model.CustomField.Format;
import net.sf.redmine_mylyn.api.model.CustomField.Type;

import org.apache.commons.httpclient.NameValuePair;
import org.junit.Before;
import org.junit.Test;

public class QueryFilterTest {

  QueryFilter testee;
 
  List<NameValuePair> params;
 
  @Before
  public void setup() {
    params = new ArrayList<NameValuePair>();
  }
 
  @Test
  public void testQueryFilter() throws Exception {
    Field field = QueryFilter.class.getDeclaredField("operator");
    field.setAccessible(true);

    testee = new QueryFilter(STATUS);

    //Standard Operator
    assertEquals(IS, field.get(testee));
  }

  @Test
  public void testAddValue() throws Exception {
    Field field = QueryFilter.class.getDeclaredField("values");
    field.setAccessible(true);
   
    //ValueBased
    testee = new QueryFilter(STATUS);
    testee.setOperator(IS);
    testee.addValue("1");
    testee.addValue("3");
    List<?> values = (List<?>)field.get(testee);
   
    assertEquals(2, values.size());
    assertEquals("1", values.get(0));
    assertEquals("3", values.get(1));

    //NonValueBased
    testee = new QueryFilter(STATUS);
    testee.setOperator(OPEN);
    testee.addValue("1");
    testee.addValue("3");
    values = (List<?>)field.get(testee);
   
    assertEquals(0, values.size());
   
    //MissingOperator
    testee = new QueryFilter(STATUS);
    testee.setOperator(TODAY); //illegal Operator => null
    testee.addValue("1");
    testee.addValue("3");
    values = (List<?>)field.get(testee);
   
    assertEquals(0, values.size());
  }

  @Test
  public void testSetOperator() throws Exception {
    Field field = QueryFilter.class.getDeclaredField("operator");
    field.setAccessible(true);

    //correct Operator
    testee = new QueryFilter(STATUS);
    testee.setOperator(OPEN);
    assertEquals(OPEN, field.get(testee));

    //illegal Operator
    testee = new QueryFilter(STATUS);
    testee.setOperator(TODAY);
    assertNull(field.get(testee));
  }

  @Test
  public void testAppendParamsNonValueBasedStatus() throws Exception {
    testee = new QueryFilter(STATUS);
   
    testee.setOperator(OPEN);
    testee.appendParams(params);
    assertEquals("fields[]", params.get(0).getName());
    assertEquals("status_id", params.get(0).getValue());
    assertEquals("operators[status_id]", params.get(1).getName());
    assertEquals("o", params.get(1).getValue());
    assertEquals("values[status_id][]", params.get(2).getName());
    assertEquals("", params.get(2).getValue());
   
    params.clear();
    testee.setOperator(CLOSED);
    testee.appendParams(params);
    assertEquals("fields[]", params.get(0).getName());
    assertEquals("status_id", params.get(0).getValue());
    assertEquals("operators[status_id]", params.get(1).getName());
    assertEquals("c", params.get(1).getValue());
    assertEquals("values[status_id][]", params.get(2).getName());
    assertEquals("", params.get(2).getValue());
  }

  @Test
  public void testAppendParamsNonValueBasedStartDate() throws Exception {
    testee = new QueryFilter(DATE_START);
   
    testee.setOperator(TODAY);
    testee.appendParams(params);
    assertEquals("fields[]", params.get(0).getName());
    assertEquals("start_date", params.get(0).getValue());
    assertEquals("operators[start_date]", params.get(1).getName());
    assertEquals("t", params.get(1).getValue());
    assertEquals("values[start_date][]", params.get(2).getName());
    assertEquals("", params.get(2).getValue());
  }
 
  @Test
  public void testAppendParamsProject() throws Exception {
    testee = new QueryFilter(PROJECT);

    testee.setOperator(IS);
    testee.appendParams(params);
    assertEquals(0, params.size());
   
    //ProjectBased
    testee.addValue("3");
    testee.appendParams(params);
    assertEquals(1, params.size());
    assertEquals("project_id", params.get(0).getName());
    assertEquals("3", params.get(0).getValue());
   
    //MultipleProjects
    testee.setOperator(IS);
    params.clear();
    testee.addValue("1");
    testee.addValue("3");
    testee.appendParams(params);
    assertEquals(4, params.size());
    assertEquals("fields[]", params.get(0).getName());
    assertEquals("project_id", params.get(0).getValue());
    assertEquals("operators[project_id]", params.get(1).getName());
    assertEquals("=", params.get(1).getValue());
    assertEquals("values[project_id][]", params.get(2).getName());
    assertEquals("1", params.get(2).getValue());
    assertEquals("values[project_id][]", params.get(3).getName());
    assertEquals("3", params.get(3).getValue());

    //MultipleProjects - Single - Negate
    testee.setOperator(IS_NOT);
    params.clear();
    testee.addValue("3");
    testee.appendParams(params);
    assertEquals(3, params.size());
    assertEquals("fields[]", params.get(0).getName());
    assertEquals("project_id", params.get(0).getValue());
    assertEquals("operators[project_id]", params.get(1).getName());
    assertEquals("!", params.get(1).getValue());
    assertEquals("values[project_id][]", params.get(2).getName());
    assertEquals("3", params.get(2).getValue());
   
  }
 
  @Test
  public void testAppendParamsListBasedTracker() throws Exception {
    testee = new QueryFilter(TRACKER);
   
    testee.setOperator(IS_NOT);
    testee.appendParams(params);
    assertEquals(0, params.size());
   
    testee.addValue("1");
    testee.addValue("3");
    testee.appendParams(params);

    assertEquals(4, params.size());
    assertEquals("fields[]", params.get(0).getName());
    assertEquals("tracker_id", params.get(0).getValue());
    assertEquals("operators[tracker_id]", params.get(1).getName());
    assertEquals("!", params.get(1).getValue());
    assertEquals("values[tracker_id][]", params.get(2).getName());
    assertEquals("1", params.get(2).getValue());
    assertEquals("values[tracker_id][]", params.get(3).getName());
    assertEquals("3", params.get(3).getValue());
  }

  @Test
  public void testAppendParamsDateBasedCreateDate() throws Exception {
    testee = new QueryFilter(DATE_CREATED);
   
    testee.setOperator(DAY_AGO_MORE_THEN);
    testee.appendParams(params);
    assertEquals(0, params.size());
   
    testee.addValue("1");
    testee.appendParams(params);
    assertEquals(3, params.size());
    assertEquals("fields[]", params.get(0).getName());
    assertEquals("created_on", params.get(0).getValue());
    assertEquals("operators[created_on]", params.get(1).getName());
    assertEquals("<t-", params.get(1).getValue());
    assertEquals("values[created_on][]", params.get(2).getName());
    assertEquals("1", params.get(2).getValue());
   
    params.clear();
    testee.addValue("3");
    testee.appendParams(params);
    assertEquals(0, params.size());
  }
 
  @Test
  public void testAppendParamsBooleanBased() throws Exception {
    CustomField cf = TestData.buildCustomField(2, "boolValue", Type.IssueCustomField, Format.BOOL, 0, 0, null, null, false, true, true);
    testee = new QueryFilter(cf, BOOLEAN_TYPE);
   
    testee.setOperator(IS);
    testee.appendParams(params);
    assertEquals(0, params.size());
   
    testee.addValue("2");
    testee.appendParams(params);
    assertEquals(0, params.size());
   
    testee = new QueryFilter(cf, BOOLEAN_TYPE);
    testee.setOperator(IS);
    testee.addValue("1");
    testee.appendParams(params);
   
    assertEquals(3, params.size());
    assertEquals("fields[]", params.get(0).getName());
    assertEquals("cf_2", params.get(0).getValue());
    assertEquals("operators[cf_2]", params.get(1).getName());
    assertEquals("=", params.get(1).getValue());
    assertEquals("values[cf_2][]", params.get(2).getName());
    assertEquals("1", params.get(2).getValue());
  }
 
  @Test
  public void testAppendParamsDoneRatio() throws Exception {
    testee = new QueryFilter(DONE_RATIO);
   
    testee.setOperator(GTE);
    testee.appendParams(params);
    assertEquals(0, params.size());
   
    testee.addValue("101");
    testee.appendParams(params);
    assertEquals(0, params.size());
   
    testee = new QueryFilter(DONE_RATIO);
    testee.setOperator(GTE);
    testee.addValue("50");
    testee.appendParams(params);
   
    assertEquals(3, params.size());
    assertEquals("fields[]", params.get(0).getName());
    assertEquals("done_ratio", params.get(0).getValue());
    assertEquals("operators[done_ratio]", params.get(1).getName());
    assertEquals(">=", params.get(1).getValue());
    assertEquals("values[done_ratio][]", params.get(2).getName());
    assertEquals("50", params.get(2).getValue());
  }

  @Test
  public void testFromNameValuePair() throws Exception {
    Configuration cfg = TestData.cfg;
    Field queryF = QueryFilter.class.getDeclaredField("queryField"); //IQueryField
    queryF.setAccessible(true);
    Field definitionF = QueryFilter.class.getDeclaredField("definition"); //QueryField
    definitionF.setAccessible(true);
    assert(queryF!=null);
    assert(definitionF!=null);
   
    QueryFilter filter;

    assertNull(QueryFilter.fromNameValuePair(new NameValuePair("fields[]", "cf_5"), cfg));
   
    filter = QueryFilter.fromNameValuePair(new NameValuePair("fields[]", "cf_1"), cfg);
    assertSame(cfg.getCustomFields().getById(1), queryF.get(filter));
    assertSame(QueryField.LIST_TYPE, definitionF.get(filter));
   
    filter = QueryFilter.fromNameValuePair(new NameValuePair("fields[]", "cf_9"), cfg);
    assertSame(cfg.getCustomFields().getById(9), queryF.get(filter));
    assertSame(QueryField.DATE_TYPE, definitionF.get(filter));
   
    assertNull(QueryFilter.fromNameValuePair(new NameValuePair("fields[]", "fake"), cfg));

    filter = QueryFilter.fromNameValuePair(new NameValuePair("fields[]", "created_on"), cfg);
    assertSame(QueryField.DATE_CREATED, queryF.get(filter));
    assertSame(QueryField.DATE_CREATED, definitionF.get(filter));
  }

  @Test
  public void testFindOperatorFromNameValuePair() throws Exception {
    assertNull(QueryFilter.findOperatorFromNameValuePair(new NameValuePair("operators[subject]", "fake")));
    assertNull(QueryFilter.findOperatorFromNameValuePair(new NameValuePair("operators[subject][]", "~")));
    assertNull(QueryFilter.findOperatorFromNameValuePair(new NameValuePair("foo[bar]", "~")));
    assertSame(CompareOperator.CONTAINS, QueryFilter.findOperatorFromNameValuePair(new NameValuePair("operators[subject]", "~")));
  }
 
  @Test
  public void testFindValueFromNameValuePair() throws Exception {
    assertNull(QueryFilter.findValueFromNameValuePair(new NameValuePair("foo[bar]", "short description")));
    assertNull("short description", QueryFilter.findValueFromNameValuePair(new NameValuePair("values[subject]", "short description")));
    assertSame("short description", QueryFilter.findValueFromNameValuePair(new NameValuePair("values[subject][]", "short description")));
  }
 
  @Test
  public void testFindNamefromNameValue() throws Exception {
    assertNull(QueryFilter.findNamefromNameValuePair(new NameValuePair("something", "")));
    assertNull(QueryFilter.findNamefromNameValuePair(new NameValuePair("operators[]", "")));
    assertNull(QueryFilter.findNamefromNameValuePair(new NameValuePair("values[]", "")));
    assertNull(QueryFilter.findNamefromNameValuePair(new NameValuePair("values[cf_1]", "")));
    assertNull(QueryFilter.findNamefromNameValuePair(new NameValuePair("operators[cf_1][]", "")));
    assertEquals("cf_1", QueryFilter.findNamefromNameValuePair(new NameValuePair("values[cf_1][]", "")));
    assertEquals("cf_1", QueryFilter.findNamefromNameValuePair(new NameValuePair("operators[cf_1]", "")));
  }
}
TOP

Related Classes of net.sf.redmine_mylyn.api.query.QueryFilterTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.