package org.dcache.webadmin.view.pages.poollist; import org.apache.wicket.util.tester.FormTester; import org.apache.wicket.util.tester.WicketTester; import org.junit.Before; import org.junit.Test; import java.util.List; import org.dcache.webadmin.controller.exceptions.PoolSpaceServiceException; import org.dcache.webadmin.controller.impl.StandardPoolSpaceService; import org.dcache.webadmin.model.dataaccess.DAOFactory; import org.dcache.webadmin.model.dataaccess.impl.DAOFactoryImplHelper; import org.dcache.webadmin.view.WebAdminInterface; import org.dcache.webadmin.view.beans.PoolSpaceBean; import org.dcache.webadmin.view.pages.ApplicationFactoryHelper; import static org.junit.Assert.*; /** * Unittest to test the whole page. * @author jans */ public class PoolListTest { public static final int DISABLED_RDONLY_CHOICE = 2; public static final int ENABLED_CHOICE = 0; public static final String DROPDOWN_ID = "mode"; public static final String POOLUSAGE_FORM_ID = "poolUsageForm"; public static final String HOMELINK_ID = "navigationPanel:linkList:0:link"; public static final String LISTVIEW_ID = "poolListPanel:poolPanelListview"; public static final String LISTVIEW_ROW_CHECKBOX_ID = "PoolPanel.checkboxRow:PoolPanel.selected"; private StandardPoolSpaceService _poolSpaceService; private WicketTester _tester; @Before public void setUp() { WebAdminInterface authenticatedWebApp = ApplicationFactoryHelper.createSignedInAsAdminApplication(); DAOFactory daoFactory = new DAOFactoryImplHelper(); _poolSpaceService = new StandardPoolSpaceService(daoFactory); authenticatedWebApp.setPoolSpaceService(_poolSpaceService); _tester = new WicketTester(authenticatedWebApp); _tester.startPage(PoolList.class); } @Test public void testBasicRender() { _tester.assertRenderedPage(PoolList.class); } @Test public void testPoolModeChangeDisableAll() throws PoolSpaceServiceException { FormTester formTester = _tester.newFormTester(POOLUSAGE_FORM_ID); formTester.select(DROPDOWN_ID, DISABLED_RDONLY_CHOICE); selectAll(formTester); formTester.submit(); List<PoolSpaceBean> poolsAfterChange = _poolSpaceService.getPoolBeans(); for (PoolSpaceBean pool : poolsAfterChange) { assertFalse(pool.isEnabled()); } } @Test public void testPoolModeChangeEnableAll() throws PoolSpaceServiceException { FormTester formTester = _tester.newFormTester(POOLUSAGE_FORM_ID); formTester.select(DROPDOWN_ID, ENABLED_CHOICE); selectAll(formTester); formTester.submit(); List<PoolSpaceBean> poolsAfterChange = _poolSpaceService.getPoolBeans(); for (PoolSpaceBean pool : poolsAfterChange) { assertTrue(pool.isEnabled()); } } @Test public void testPoolModeChangeSingle() throws PoolSpaceServiceException { int rowToChange = 1; List<PoolSpaceBean> poolsBeforeChange = _poolSpaceService.getPoolBeans(); FormTester formTester = _tester.newFormTester(POOLUSAGE_FORM_ID); formTester.select(DROPDOWN_ID, ENABLED_CHOICE); formTester.setValue(LISTVIEW_ID + ":" + rowToChange + ":" + LISTVIEW_ROW_CHECKBOX_ID, true); formTester.submit(); List<PoolSpaceBean> poolsAfterChange = _poolSpaceService.getPoolBeans(); assertEquals(poolsBeforeChange.get(0).isEnabled(), poolsAfterChange.get(0).isEnabled()); assertNotSame(poolsBeforeChange.get(rowToChange).isEnabled(), poolsAfterChange.get(rowToChange).isEnabled()); } @Test public void testHomeLink() { _tester.clickLink(HOMELINK_ID); _tester.assertRenderedPage(_tester.getApplication().getHomePage()); } private void selectAll(FormTester formTester) { formTester.setValue(LISTVIEW_ID + ":0:" + LISTVIEW_ROW_CHECKBOX_ID, true); formTester.setValue(LISTVIEW_ID + ":1:" + LISTVIEW_ROW_CHECKBOX_ID, true); } @Test public void testNoRedirect() { WebAdminInterface notAuthenticatedWebApp = ApplicationFactoryHelper.createNotSignedInApplication(); notAuthenticatedWebApp.setPoolSpaceService(_poolSpaceService); WicketTester redirectTester = new WicketTester(notAuthenticatedWebApp); redirectTester.startPage(PoolList.class); redirectTester.assertRenderedPage(PoolList.class); } }