/* * codjo.net * * Common Apache License 2.0 */ package net.codjo.segmentation.gui.settings; import net.codjo.mad.client.request.Field; import net.codjo.mad.client.request.Result; import net.codjo.mad.client.request.Row; import net.codjo.mad.gui.framework.DefaultGuiContext; import net.codjo.mad.gui.request.DetailDataSource; import net.codjo.mad.gui.request.ListDataSource; import net.codjo.security.common.api.UserMock; import net.codjo.test.common.LogString; import java.util.ArrayList; import java.util.List; import org.uispec4j.Button; import org.uispec4j.Tree; import org.uispec4j.UISpecTestCase; /** * Classe de test de {@link AxisTreeToolBarLogic}. */ public class AxisTreeToolBarLogicTest extends UISpecTestCase { private LogString log = new LogString(); AxisTreeToolBarLogic axisTreeToolBarLogic; private Button addFolderButton; private Button deleteNodeButton; private Button addSleeveButton; private Tree tree; public void test_sleeveButtonAction() throws Exception { tree.selectRoot(); addSleeveButton.click(); log.assertContent("AxisTreeLogicMock.addSleeve()"); tree.select("Node 1"); addSleeveButton.click(); log.assertContent("AxisTreeLogicMock.addSleeve(), AxisTreeLogicMock.addSleeve()"); } public void test_folderButtonAction() throws Exception { tree.selectRoot(); addFolderButton.click(); log.assertContent("AxisTreeLogicMock.addFolder()"); tree.select("Node 1|Node 2"); addFolderButton.click(); log.assertContent("AxisTreeLogicMock.addFolder(), AxisTreeLogicMock.addFolder()"); } public void test_deleteButtonAction() throws Exception { tree.select("Node 1|Node 2"); deleteNodeButton.click(); log.assertContent("AxisTreeLogicMock.delete()"); tree.select("Node 1|Node 2|Sleeve 2"); deleteNodeButton.click(); log.assertContent("AxisTreeLogicMock.delete(), AxisTreeLogicMock.delete()"); } public void test_multipleLevelsSelection() throws Exception { tree.select("Node 1"); assertButtons(true, true, true); tree.select("Node 1|Sleeve 1"); assertButtons(false, false, true); tree.select("Node 1|Node 2"); assertButtons(true, true, true); tree.select("Node 1|Node 2|Sleeve 2"); assertButtons(false, false, true); tree.select("Node 1|Node 2|Node 3"); assertButtons(true, true, true); tree.select("Node 1|Node 2|Node 3|Sleeve 3a"); assertButtons(false, false, true); tree.select("Node 1|Node 2|Node 3|Node 4"); assertButtons(true, false, true); tree.select("Node 1|Node 2|Node 3|Sleeve 3b"); assertButtons(false, false, true); tree.select("Node 1|Node 2|Node 3|Node 4|Sleeve 4"); assertButtons(false, false, true); } private void assertButtons(boolean isAddSleeveEnabled, boolean isAddFolderEnabled, boolean isDeleteNodeEnabled) { assertEquals(isDeleteNodeEnabled, deleteNodeButton.isEnabled()); assertEquals(isAddFolderEnabled, addFolderButton.isEnabled()); assertEquals(isAddSleeveEnabled, addSleeveButton.isEnabled()); } @Override protected void setUp() throws Exception { axisTreeToolBarLogic = new AxisTreeToolBarLogic(new AxisTreeToolBar()); ListDataSource childDataSource = createChildDataSource(); DefaultGuiContext defaultGuiContext = new DefaultGuiContext(); defaultGuiContext.setUser(new UserMock()); DetailDataSource fatherDataSource = new DetailDataSource(defaultGuiContext); fatherDataSource.declare("classificationName"); fatherDataSource.setFieldValue("classificationName", "root"); ClassificationStructureGui structureGui = new ClassificationStructureGui("test"); structureGui.setMaximumNodeDepth(4); AxisTree axisTree = new AxisTree(); axisTree.setClassificationStructureGui(structureGui); AxisTreeLogic axisTreeLogic = new AxisTreeLogicMock(fatherDataSource, childDataSource, axisTree, log); axisTreeToolBarLogic.init(axisTreeLogic); addFolderButton = new Button(axisTreeToolBarLogic.getGui().getAddFolderButton()); addSleeveButton = new Button(axisTreeToolBarLogic.getGui().getAddSleeveButton()); deleteNodeButton = new Button(axisTreeToolBarLogic.getGui().getDeleteButton()); tree = new Tree(axisTree); tree.setSeparator("|"); } private ListDataSource createChildDataSource() { ListDataSource sonDataSource = new ListDataSource(); sonDataSource.setColumns(new String[]{ "sleeveId", "sleeveRowId", "sleeveCode", "sleeveName", "formula", "terminalElement", "sleeveDustbin" }); Result result = new Result(); result.addRow(buildRow("01-1", "Node 1", "false")); result.addRow(buildRow("02-1.1", "Sleeve 1", "true")); result.addRow(buildRow("02-1.2", "Node 2", "false")); result.addRow(buildRow("03-1.2.1", "Sleeve 2", "true")); result.addRow(buildRow("03-1.2.2", "Node 3", "false")); result.addRow(buildRow("04-1.2.2.1", "Sleeve 3a", "true")); result.addRow(buildRow("04-1.2.2.2", "Sleeve 3b", "true")); result.addRow(buildRow("04-1.2.2.3", "Node 4", "false")); result.addRow(buildRow("05-1.2.2.3.1", "Sleeve 4", "true")); result.addRow(buildRow("05-1.2.2.3.2", "Node 5", "false")); sonDataSource.setLoadResult(result); return sonDataSource; } private Row buildRow(String code, String name, String terminalElement) { Row row = new Row(); List<Field> fields = new ArrayList<Field>(); fields.add(new Field("sleeveId", name)); fields.add(new Field("sleeveRowId", name)); fields.add(new Field("sleeveCode", code)); fields.add(new Field("sleeveName", name)); fields.add(new Field("formula", name)); fields.add(new Field("terminalElement", terminalElement)); fields.add(new Field("sleeveDustbin", name)); row.setFields(fields); return row; } class AxisTreeLogicMock extends AxisTreeLogic { private LogString mockLog; /** * Construit l'arbre des poches � partir des donn�es de l'axe et des poches contenues dans les * DataSources. * * @param fatherDataSource * @param sonDataSource * @param gui * @param log * * @throws Exception */ AxisTreeLogicMock(DetailDataSource fatherDataSource, ListDataSource sonDataSource, AxisTree gui, LogString log) throws Exception { super(fatherDataSource, sonDataSource, gui); mockLog = new LogString("AxisTreeLogicMock", log); } @Override public void addSleeve() { mockLog.call("addSleeve"); } @Override public void addFolder() { mockLog.call("addFolder"); } @Override public void delete() { mockLog.call("delete"); } } }