/*
* 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 com.agiletec.plugins.jacms.apsadmin.content.attribute;
import java.util.List;
import com.agiletec.aps.system.common.entity.model.attribute.AttributeInterface;
import com.agiletec.aps.system.common.entity.model.attribute.ITextAttribute;
import com.agiletec.aps.system.common.entity.model.attribute.MonoListAttribute;
import com.agiletec.apsadmin.system.ApsAdminSystemConstants;
import com.agiletec.apsadmin.system.entity.attribute.action.list.IListAttributeAction;
import com.agiletec.plugins.jacms.aps.system.services.content.model.Content;
import com.agiletec.plugins.jacms.apsadmin.content.AbstractContentAction;
import com.agiletec.plugins.jacms.apsadmin.content.util.AbstractBaseTestContentAction;
import com.opensymphony.xwork2.Action;
/**
* @author E.Santoboni
*/
public class TestListAttributeAction extends AbstractBaseTestContentAction {
public void testAddListElement() throws Throwable {
String contentOnSessionMarker = this.initEditContent();
this.initContentAction("/do/jacms/Content", "addListElement", contentOnSessionMarker);
this.addParameter("attributeName", "Autori");
this.addParameter("listLangCode", "it");
String result = this.executeAction();
assertEquals(Action.SUCCESS, result);
Content currentContent = this.getContentOnEdit(contentOnSessionMarker);
MonoListAttribute monoListAttribute = (MonoListAttribute) currentContent.getAttribute("Autori");
List<AttributeInterface> attributes = monoListAttribute.getAttributes();
String[] expected = {"Pippo", "Paperino", "Pluto", ""};
this.verifyText(attributes, expected);
}
public void testMoveListElement() throws Throwable {
String contentOnSessionMarker = this.initEditContent();
this.initContentAction("/do/jacms/Content", "moveListElement", contentOnSessionMarker);
this.addParameter("attributeName", "Autori");
this.addParameter("elementIndex", "1");
this.addParameter("listLangCode", "it");
this.addParameter("movement", IListAttributeAction.MOVEMENT_UP_CODE);
String result = this.executeAction();
assertEquals(Action.SUCCESS, result);
Content currentContent = this.getContentOnEdit(contentOnSessionMarker);
MonoListAttribute monoListAttribute = (MonoListAttribute) currentContent.getAttribute("Autori");
List<AttributeInterface> attributes = monoListAttribute.getAttributes();
String[] expected = {"Paperino", "Pippo", "Pluto"};
this.verifyText(attributes, expected);
this.initContentAction("/do/jacms/Content", "moveListElement", contentOnSessionMarker);
this.addParameter("attributeName", "Autori");
this.addParameter("elementIndex", "1");
this.addParameter("listLangCode", "it");
this.addParameter("movement", IListAttributeAction.MOVEMENT_DOWN_CODE);
result = this.executeAction();
assertEquals(Action.SUCCESS, result);
currentContent = this.getContentOnEdit(contentOnSessionMarker);
monoListAttribute = (MonoListAttribute) currentContent.getAttribute("Autori");
attributes = monoListAttribute.getAttributes();
String[] expected2 = {"Paperino", "Pluto", "Pippo"};
this.verifyText(attributes, expected2);
}
public void testRemoveListElement() throws Throwable {
String contentOnSessionMarker = this.initEditContent();
this.initContentAction("/do/jacms/Content", "removeListElement", contentOnSessionMarker);
this.addParameter("attributeName", "Autori");
this.addParameter("elementIndex", "1");
this.addParameter("listLangCode", "it");
String result = this.executeAction();
assertEquals(Action.SUCCESS, result);
Content currentContent = this.getContentOnEdit(contentOnSessionMarker);
MonoListAttribute monoListAttribute = (MonoListAttribute) currentContent.getAttribute("Autori");
List<AttributeInterface> attributes = monoListAttribute.getAttributes();
String[] expected = {"Pippo", "Pluto"};
this.verifyText(attributes, expected);
}
private String initEditContent() throws Throwable {
String contentId = "ART1";
Content content = this.getContentManager().loadContent(contentId, false);
this.executeEdit(contentId, "admin");
String contentOnSessionMarker = AbstractContentAction.buildContentOnSessionMarker(content, ApsAdminSystemConstants.EDIT);
Content currentContent = this.getContentOnEdit(contentOnSessionMarker);
MonoListAttribute monoListAttribute = (MonoListAttribute) currentContent.getAttribute("Autori");
List<AttributeInterface> attributes = monoListAttribute.getAttributes();
String[] expected = {"Pippo", "Paperino", "Pluto"};
this.verifyText(attributes, expected);
return contentOnSessionMarker;
}
private void verifyText(List<AttributeInterface> attributes, String[] expected) {
assertEquals(expected.length, attributes.size());
for (int i=0; i<attributes.size(); i++) {
ITextAttribute textAttribute = (ITextAttribute) attributes.get(i);
assertEquals(expected[i], textAttribute.getText());
}
}
//TODO FARE IL RESTO
}