package com.github.dynamicextensionsalfresco.actions;
import static org.junit.Assert.*;
import java.util.List;
import java.util.Set;
import org.alfresco.repo.action.executer.ActionExecuter;
import org.alfresco.service.cmr.action.ActionDefinition;
import org.alfresco.service.cmr.action.ParameterDefinition;
import org.alfresco.service.namespace.QName;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class ActionExecuterRegistryTest {
private ActionExecuterRegistry actionExecuterRegistry;
@Autowired
public void setActionExecuterRegistry(final ActionExecuterRegistry actionExecuterRegistry) {
this.actionExecuterRegistry = actionExecuterRegistry;
}
@Test
public void testAnnotatedActions() {
validateMetadata(actionExecuterRegistry.getActionExecuter("exampleActionWithoutConstraint"), false);
validateMetadata(actionExecuterRegistry.getActionExecuter("exampleActionWithConstraint"), true);
}
private void validateMetadata(final ActionExecuter exampleAction, final boolean withConstraint) {
assertNotNull(exampleAction);
final ActionDefinition actionDefinition = exampleAction.getActionDefinition();
final Set<QName> applicableTypes = actionDefinition.getApplicableTypes();
assertEquals(2, applicableTypes.size());
assertEquals(true, actionDefinition.getAdhocPropertiesAllowed());
final List<ParameterDefinition> parameterDefinitions = actionDefinition.getParameterDefinitions();
assertEquals(1, parameterDefinitions.size());
final ParameterDefinition nameParameter = parameterDefinitions.get(0);
assertEquals("name", nameParameter.getName());
if (withConstraint) {
assertEquals("required", nameParameter.getParameterConstraintName());
} else {
assertEquals("constraint should be either null or a non-empty value", null,
nameParameter.getParameterConstraintName());
}
}
}