// BlogBridge -- RSS feed reader, manager, and web based service
// Copyright (C) 2002-2006 by R. Pito Salas
//
// This program is free software; you can redistribute it and/or modify it under
// the terms of the GNU General Public License as published by the Free Software Foundation;
// either version 2 of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
// without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License along with this program;
// if not, write to the Free Software Foundation, Inc., 59 Temple Place,
// Suite 330, Boston, MA 02111-1307 USA
//
// Contact: R. Pito Salas
// mailto:pitosalas@users.sourceforge.net
// More information: about BlogBridge
// http://www.blogbridge.com
// http://sourceforge.net/projects/blogbridge
//
// $Id: TestCriteriaBuilder.java,v 1.3 2006/01/08 05:28:35 kyank Exp $
//
package com.salas.bb.views.querybuilder;
import junit.framework.TestCase;
import com.salas.bb.domain.query.*;
import java.util.Collection;
/**
* This suite contains tests for <code>CriteriaBuilder</code> unit.
* It covers:
* <ul>
* <li>TODO: put here</li>
* </ul>
*/
public class TestCriteriaBuilder extends TestCase
{
private IQuery dummyQuery;
protected void setUp()
throws Exception
{
super.setUp();
dummyQuery = new DummyStringQuery();
}
/**
* Tests assigning of fresh (just created) criteria, which isn't initialized yet.
* The component should select the first property from its list, first available
* comparison operation and initialize the value with property default.
*/
public void testAssignNewCriteria()
{
ICriteria newCriteria = createNewCriteria();
Collection properties = dummyQuery.getAvailableProperties();
CriteriaBuilder criteriaBuilder = new CriteriaBuilder(properties, newCriteria);
IProperty reqProperty = (IProperty)properties.toArray()[0];
IComparisonOperation reqOperation =
(IComparisonOperation)reqProperty.getComparsonOperations().toArray()[0];
String reqValue = reqProperty.getDefaultValue();
checkInitOfBuilder(criteriaBuilder, reqProperty, reqOperation, reqValue);
}
/**
* Tests assigning of some existing criteria. The component should load the values
* from criteria into its controls.
*/
public void testAssignExistingCriteria()
{
ICriteria existingCriteria = createExistingCriteria();
IProperty reqProperty = existingCriteria.getProperty();
IComparisonOperation reqOperation = existingCriteria.getComparisonOperation();
String reqValue = existingCriteria.getValue();
Collection properties = dummyQuery.getAvailableProperties();
CriteriaBuilder criteriaBuilder = new CriteriaBuilder(properties, existingCriteria);
checkInitOfBuilder(criteriaBuilder, reqProperty, reqOperation, reqValue);
}
private static void checkInitOfBuilder(CriteriaBuilder aCriteriaBuilder, IProperty aReqProperty,
IComparisonOperation aReqOperation, String aReqValue)
{
IProperty selProperty = aCriteriaBuilder.getSelectedProperty();
assertEquals("Wrong property selected: ", aReqProperty, selProperty);
IComparisonOperation selOperation =
aCriteriaBuilder.getSelectedComparisonOperation();
assertEquals("Wrong operation selected.", aReqOperation, selOperation);
String entValue = aCriteriaBuilder.getEnteredValue();
assertEquals("Wrong value entered.", aReqValue, entValue);
}
// ---------------------------------------------------------------------------------------------
private ICriteria createExistingCriteria()
{
ICriteria criteria = createNewCriteria();
configureCriteria(criteria);
return criteria;
}
private void configureCriteria(ICriteria aCriteria)
{
IProperty someProperty = new DummyObjectHashProperty();
IComparisonOperation someOperation = (IComparisonOperation)
someProperty.getComparsonOperations().toArray()[1];
String someValue = "2";
aCriteria.setProperty(someProperty);
aCriteria.setComparisonOperation(someOperation);
aCriteria.setValue(someValue);
}
private ICriteria createNewCriteria()
{
return dummyQuery.addCriteria();
}
/**
* Dummy query, encorporating text and hash properties.
*/
private static class DummyStringQuery extends BasicQuery
{
/**
* Creates basic query.
*/
public DummyStringQuery()
{
// The order of properties is intentional to test second property selection
super(new IProperty[] { new DummyObjectTextProperty(), new DummyObjectHashProperty() });
}
}
}