// $HeadURL$
// $Id$
//
// Copyright © 2006, 2010, 2011, 2012 by the President and Fellows of Harvard College.
//
// Screensaver is an open-source project developed by the ICCB-L and NSRB labs
// at Harvard Medical School. This software is distributed under the terms of
// the GNU General Public License.
package edu.harvard.med.screensaver.ui.searchresults;
import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import edu.harvard.med.screensaver.db.Criterion;
import edu.harvard.med.screensaver.db.SortDirection;
import edu.harvard.med.screensaver.db.Criterion.Operator;
import edu.harvard.med.screensaver.model.users.ScreeningRoomUser;
import edu.harvard.med.screensaver.test.MakeDummyEntities;
import edu.harvard.med.screensaver.ui.arch.datatable.column.TableColumnManager;
import edu.harvard.med.screensaver.ui.arch.datatable.column.entity.UserNameColumn;
import edu.harvard.med.screensaver.ui.arch.datatable.model.DataTableModel;
import edu.harvard.med.screensaver.ui.arch.view.AbstractBackingBeanTest;
import edu.harvard.med.screensaver.ui.users.ScreenerSearchResults;
public class UserSearchResultsTest extends AbstractBackingBeanTest
{
private static Logger log = Logger.getLogger(UserSearchResultsTest.class);
@Autowired
protected ScreenerSearchResults screenersBrowser;
private ScreeningRoomUser _admin1;
private ScreeningRoomUser _admin2;
private ScreeningRoomUser _admin3;
@Override
protected void setUp() throws Exception
{
super.setUp();
screenersBrowser.searchAll();
TableColumnManager<ScreeningRoomUser> columnManager = screenersBrowser.getColumnManager();
screenersBrowser.getColumnManager().addCompoundSortColumns(columnManager.getColumn("User"),
columnManager.getColumn("Date Recorded"));
screenersBrowser.getColumnManager().setSortColumnName("Name");
screenersBrowser.getColumnManager().setSortDirection(SortDirection.DESCENDING);
_admin1 = MakeDummyEntities.makeDummyUser("1", "Al", "Capone");
_admin2 = MakeDummyEntities.makeDummyUser("1", "Bugsy", "Malone");
_admin3 = MakeDummyEntities.makeDummyUser("1", "Jesse", "James");
genericEntityDao.persistEntity(_admin1);
genericEntityDao.persistEntity(_admin2);
genericEntityDao.persistEntity(_admin3);
}
public void testContents()
{
List<ScreeningRoomUser> _expectedUsers = new ArrayList<ScreeningRoomUser>();
_expectedUsers.add(_admin2);
_expectedUsers.add(_admin3);
_expectedUsers.add(_admin1);
//screenersBrowser.searchUsers();
DataTableModel<ScreeningRoomUser> dataTableModel = screenersBrowser.getDataTableModel();
for (int rowIndex = 0; rowIndex < _expectedUsers.size(); rowIndex++) {
ScreeningRoomUser user = _expectedUsers.get(rowIndex);
dataTableModel.setRowIndex(rowIndex);
screenersBrowser.getColumnManager().getVisibleColumnModel().setRowIndex(1);
assertEquals("row " + rowIndex + ", col 0", user.getFullNameLastFirst(), screenersBrowser.getCellValue());
}
}
@SuppressWarnings("unchecked")
public void testFilter()
{
//screenersBrowser.searchUsers();
Criterion<String> criterion = new Criterion<String>(Operator.TEXT_STARTS_WITH, "Mal");
((UserNameColumn<ScreeningRoomUser,ScreeningRoomUser>) screenersBrowser.getColumnManager().getColumn("Name"))
.clearCriteria().addCriterion(criterion);
DataTableModel<ScreeningRoomUser> dataTableModel = screenersBrowser.getDataTableModel();
assertEquals("filtered result size", 1, dataTableModel.getRowCount());
screenersBrowser.getColumnManager().getVisibleColumnModel().setRowIndex(1);
assertEquals("filtered data", _admin2.getFullNameLastFirst(), screenersBrowser.getCellValue());
screenersBrowser.resetFilter();
assertEquals("full result size, after filter reset", 3, dataTableModel.getRowCount());
}
}