/*
This file belongs to the Servoy development and deployment environment, Copyright (C) 1997-2015 Servoy BV
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU Affero General Public License as published by the Free
Software Foundation; either version 3 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 Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along
with this program; if not, see http://www.gnu.org/licenses or write to the Free
Software Foundation,Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
*/
package com.servoy.j2db.server.ngclient.property;
import java.awt.Dimension;
import java.io.IOException;
import org.junit.Assert;
import org.junit.Test;
import org.sablo.InMemPackageReader;
import com.servoy.j2db.persistence.Form;
import com.servoy.j2db.persistence.RepositoryException;
import com.servoy.j2db.persistence.TabPanel;
import com.servoy.j2db.server.ngclient.IDataAdapterList;
import com.servoy.j2db.server.ngclient.IWebFormController;
import com.servoy.j2db.util.ServoyException;
/**
* @author gboros
*
*/
public class RelatedFormsTest extends AbstractSolutionTest
{
/*
* @see com.servoy.j2db.server.ngclient.property.AbstractSolutionTest#setupData()
*/
@Override
protected void setupData() throws ServoyException
{
// TODO Auto-generated method stub
}
/*
* @see com.servoy.j2db.server.ngclient.property.AbstractSolutionTest#fillTestSolution()
*/
@Override
protected void fillTestSolution() throws ServoyException
{
// TODO Auto-generated method stub
}
/*
* @see com.servoy.j2db.server.ngclient.property.AbstractSolutionTest#getTestComponents()
*/
@Override
protected InMemPackageReader getTestComponents() throws IOException
{
// TODO Auto-generated method stub
return null;
}
@Test
public void testRelatedFormsInTabPanels() throws RepositoryException
{
// f1 is the main
//
// 3 forms on that main
//
// f2 "relation2"
// f3 "relation2.relation3"
// f4 "relation2.relation3.relation4"
Form f1 = solution.createNewForm(validator, null, "f1", null, false, new Dimension(600, 400));
IWebFormController f1Controller = new TestFormController(f1, client);
IDataAdapterList dataAdapterListF1 = f1Controller.getFormUI().getDataAdapterList();
Form f2 = solution.createNewForm(validator, null, "f2", null, false, new Dimension(600, 400));
IWebFormController f2Controller = new TestFormController(f2, client);
IDataAdapterList dataAdapterListF2 = f2Controller.getFormUI().getDataAdapterList();
Form f3 = solution.createNewForm(validator, null, "f3", null, false, new Dimension(600, 400));
IWebFormController f3Controller = new TestFormController(f3, client);
IDataAdapterList dataAdapterListF3 = f3Controller.getFormUI().getDataAdapterList();
Form f4 = solution.createNewForm(validator, null, "f4", null, false, new Dimension(600, 400));
IWebFormController f4Controller = new TestFormController(f4, client);
IDataAdapterList dataAdapterListF4 = f4Controller.getFormUI().getDataAdapterList();
TabPanel tabpanelF2 = f1.createNewTabPanel("tabpanelF2");
tabpanelF2.createNewTab("tab1", "relation2", f2);
TabPanel tabpanelF3 = f1.createNewTabPanel("tabpanelF3");
tabpanelF3.createNewTab("tab1", "relation2.relation3", f3);
TabPanel tabpanelF4 = f1.createNewTabPanel("tabpanelF4");
tabpanelF4.createNewTab("tab1", "relation2.relation3.relation4", f4);
dataAdapterListF1.addVisibleChildForm(f2Controller, "relation2", true);
// relatedForms of f1 has now f2
Assert.assertEquals(1, dataAdapterListF1.getRelatedForms().size());
Assert.assertEquals("relation2", dataAdapterListF1.getRelatedForms().get(f2Controller));
dataAdapterListF1.addVisibleChildForm(f3Controller, "relation2.relation3", true);
// relatedForms of f1 has now f2 and f3
Assert.assertEquals(2, dataAdapterListF1.getRelatedForms().size());
Assert.assertEquals("relation2.relation3", dataAdapterListF1.getRelatedForms().get(f3Controller));
// also f2 relatedForms has f3
Assert.assertEquals(1, dataAdapterListF2.getRelatedForms().size());
Assert.assertEquals("relation3", dataAdapterListF2.getRelatedForms().get(f3Controller));
// and f3 relatedParentsForms has f2
Assert.assertEquals(1, dataAdapterListF3.getParentRelatedForms().size());
Assert.assertEquals(dataAdapterListF3.getParentRelatedForms().toString() + " should have:" + f2Controller, 0,
dataAdapterListF3.getParentRelatedForms().indexOf(f2Controller));
Assert.assertNotEquals(dataAdapterListF3.getParentRelatedForms().toString() + " should have:" + f2Controller, -1,
dataAdapterListF3.getParentRelatedForms().indexOf(f2Controller));
dataAdapterListF1.addVisibleChildForm(f4Controller, "relation2.relation3.relation4", true);
// relatedForms of f1 has now f2 and f3 and f4
Assert.assertEquals(3, dataAdapterListF1.getRelatedForms().size());
Assert.assertEquals("relation2.relation3.relation4", dataAdapterListF1.getRelatedForms().get(f4Controller));
// relatedForms of f2 has now f3 and f4
Assert.assertEquals(2, dataAdapterListF2.getRelatedForms().size());
Assert.assertEquals("relation3", dataAdapterListF2.getRelatedForms().get(f3Controller));
Assert.assertEquals("relation3.relation4", dataAdapterListF2.getRelatedForms().get(f4Controller));
// and f4 relatedParentsForms has f2 and f3
Assert.assertEquals(2, dataAdapterListF4.getParentRelatedForms().size());
Assert.assertTrue(dataAdapterListF4.getParentRelatedForms() + " should have " + f2Controller,
dataAdapterListF4.getParentRelatedForms().indexOf(f2Controller) >= 0);
Assert.assertTrue(dataAdapterListF4.getParentRelatedForms() + " should have " + f3Controller,
dataAdapterListF4.getParentRelatedForms().indexOf(f3Controller) >= 0);
dataAdapterListF1.removeVisibleChildForm(f4Controller, true);
// relatedForms of f1 has now f2 and f3
Assert.assertEquals(2, dataAdapterListF1.getRelatedForms().size());
Assert.assertEquals("relation2", dataAdapterListF1.getRelatedForms().get(f2Controller));
Assert.assertEquals("relation2.relation3", dataAdapterListF1.getRelatedForms().get(f3Controller));
// relatedForms of f2 has now f3
Assert.assertEquals(1, dataAdapterListF2.getRelatedForms().size());
Assert.assertEquals("relation3", dataAdapterListF2.getRelatedForms().get(f3Controller));
dataAdapterListF2.removeVisibleChildForm(f3Controller, true);
// relatedForms of f1 has now f2 and f3
Assert.assertEquals(2, dataAdapterListF1.getRelatedForms().size());
Assert.assertEquals("relation2", dataAdapterListF1.getRelatedForms().get(f2Controller));
Assert.assertEquals("relation2.relation3", dataAdapterListF1.getRelatedForms().get(f3Controller));
// relatedForms of f2 has no related forms
Assert.assertEquals(0, dataAdapterListF2.getRelatedForms().size());
}
}