/*
* Copyright 2015-Present Entando Inc. (http://www.entando.com) All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library 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 Lesser General Public License for more
* details.
*/
package org.entando.entando.aps.system.services.guifragment;
import com.agiletec.aps.BaseTestCase;
import com.agiletec.aps.system.SystemConstants;
import java.util.List;
import static junit.framework.Assert.assertEquals;
/**
* @author S.Puddu - E.Santoboni
*/
public class TestGuiFragmentManager extends BaseTestCase {
@Override
protected void setUp() throws Exception {
super.setUp();
this.init();
}
public void testCrud() throws Exception {
String code = "mockCrud_1";
try {
assertNull(this._guiFragmentManager.getGuiFragment(code));
//add
GuiFragment fragment = this.createMockFragment(code, "lorem ipsum", null);
this._guiFragmentManager.addGuiFragment(fragment);
GuiFragment fragment2 = this._guiFragmentManager.getGuiFragment(code);
assertNotNull(fragment2);
assertEquals(fragment.getGui(), fragment2.getGui());
//update
fragment2.setGui("dolor sit");
this._guiFragmentManager.updateGuiFragment(fragment2);
GuiFragment fragment3 = this._guiFragmentManager.getGuiFragment(code);
assertEquals(fragment2.getGui(), fragment3.getGui());
//delete
this._guiFragmentManager.deleteGuiFragment(code);
assertNull(this._guiFragmentManager.getGuiFragment(code));
} catch (Exception e) {
this._guiFragmentManager.deleteGuiFragment(code);
throw e;
}
}
public void testReferences() throws Exception {
List<String> codes = this._guiFragmentManager.searchGuiFragments(null);
assertEquals(1, codes.size());
String codeMaster = codes.get(0);
String codeSlave = "mockCrud_2";
try {
GuiFragment fragment = this.createMockFragment(codeSlave, "lorem ipsum", null);
this._guiFragmentManager.addGuiFragment(fragment);
String[] utilizersNames = super.getApplicationContext().getBeanNamesForType(GuiFragmentUtilizer.class);
for (int i = 0; i < utilizersNames.length; i++) {
String beanNames = utilizersNames[i];
GuiFragmentUtilizer beanUtilizer = (GuiFragmentUtilizer) this.getApplicationContext().getBean(beanNames);
List utilizers = beanUtilizer.getGuiFragmentUtilizers(codeSlave);
if (null != utilizers && !utilizers.isEmpty()) {
fail();
}
}
GuiFragment guiFragment = this._guiFragmentManager.getGuiFragment(codeMaster);
assertNull(guiFragment.getGui());
assertNotNull(guiFragment.getDefaultGui());
String newGui = "<@wp.fragment code=\"" + codeSlave + "\" escapeXml=false /> " + guiFragment.getDefaultGui();
guiFragment.setGui(newGui);
this._guiFragmentManager.updateGuiFragment(guiFragment);
for (int i = 0; i < utilizersNames.length; i++) {
String beanNames = utilizersNames[i];
GuiFragmentUtilizer beanUtilizer = (GuiFragmentUtilizer) this.getApplicationContext().getBean(beanNames);
List utilizers = beanUtilizer.getGuiFragmentUtilizers(codeSlave);
if (beanNames.equals(SystemConstants.GUI_FRAGMENT_MANAGER)) {
assertEquals(1, utilizers.size());
GuiFragment fragmentUtilizer = (GuiFragment) utilizers.get(0);
assertEquals(codeMaster, fragmentUtilizer.getCode());
} else if (null != utilizers && !utilizers.isEmpty()) {
fail();
}
}
} catch (Exception e) {
throw e;
} finally {
this._guiFragmentManager.deleteGuiFragment(codeSlave);
GuiFragment guiFragment = this._guiFragmentManager.getGuiFragment(codeMaster);
guiFragment.setGui(null);
this._guiFragmentManager.updateGuiFragment(guiFragment);
codes = this._guiFragmentManager.searchGuiFragments(null);
assertEquals(1, codes.size());
}
}
protected GuiFragment createMockFragment(String code, String gui, String widgetTypeCode) {
GuiFragment fragment = new GuiFragment();
fragment.setCode(code);
fragment.setGui(gui);
fragment.setWidgetTypeCode(widgetTypeCode);
return fragment;
}
private void init() throws Exception {
try {
this._guiFragmentManager = (IGuiFragmentManager) this.getApplicationContext().getBean(SystemConstants.GUI_FRAGMENT_MANAGER);
} catch (Throwable t) {
throw new Exception(t);
}
}
private IGuiFragmentManager _guiFragmentManager;
}