/******************************************************************************* | |
* Copyright (c) 2010 SAP AG. | |
* All rights reserved. This program and the accompanying materials | |
* are made available under the terms of the Eclipse Public License v1.0 | |
* which accompanies this distribution, and is available at | |
* http://www.eclipse.org/legal/epl-v10.html | |
* | |
* Contributors: | |
* Emil Simeonov - initial API and implementation. | |
* Dimitar Donchev - initial API and implementation. | |
* Dimitar Tenev - initial API and implementation. | |
* Nevena Manova - initial API and implementation. | |
* Georgi Konstantinov - initial API and implementation. | |
*******************************************************************************/ | |
package org.eclipse.wst.sse.sieditor.test.ui.v2.dt; | |
import static org.easymock.EasyMock.createMock; | |
import static org.easymock.EasyMock.createNiceMock; | |
import static org.easymock.EasyMock.expect; | |
import static org.easymock.EasyMock.isA; | |
import static org.easymock.EasyMock.replay; | |
import static org.easymock.EasyMock.reset; | |
import static org.easymock.EasyMock.verify; | |
import static org.junit.Assert.assertEquals; | |
import static org.junit.Assert.assertFalse; | |
import static org.junit.Assert.assertNotNull; | |
import static org.junit.Assert.assertNull; | |
import static org.junit.Assert.assertSame; | |
import static org.junit.Assert.assertTrue; | |
import static org.junit.Assert.fail; | |
import static org.mockito.Matchers.any; | |
import static org.mockito.Mockito.mock; | |
import static org.mockito.Mockito.only; | |
import static org.mockito.Mockito.times; | |
import java.security.InvalidParameterException; | |
import java.util.ArrayList; | |
import java.util.Arrays; | |
import java.util.HashSet; | |
import java.util.List; | |
import java.util.Set; | |
import org.eclipse.core.commands.ExecutionException; | |
import org.eclipse.core.runtime.IStatus; | |
import org.eclipse.core.runtime.Status; | |
import org.eclipse.jface.wizard.WizardDialog; | |
import org.eclipse.wst.sse.sieditor.command.common.AbstractNotificationOperation; | |
import org.eclipse.wst.sse.sieditor.command.common.DeleteSetCommand; | |
import org.eclipse.wst.sse.sieditor.command.emf.wsdl.InlineNamespaceCompositeCommand; | |
import org.eclipse.wst.sse.sieditor.command.emf.xsd.AddSimpleTypeCommand; | |
import org.eclipse.wst.sse.sieditor.command.emf.xsd.AddStructureTypeCommand; | |
import org.eclipse.wst.sse.sieditor.command.emf.xsd.InlineStructureTypeContentsCommand; | |
import org.eclipse.wst.sse.sieditor.command.emf.xsd.MakeAnonymousTypeGlobalCommand; | |
import org.eclipse.wst.sse.sieditor.command.emf.xsd.MakeGlobalTypeAnonymousCommand; | |
import org.eclipse.wst.sse.sieditor.core.common.IEnvironment; | |
import org.eclipse.wst.sse.sieditor.model.api.IModelObject; | |
import org.eclipse.wst.sse.sieditor.model.api.IModelRoot; | |
import org.eclipse.wst.sse.sieditor.model.api.INamedObject; | |
import org.eclipse.wst.sse.sieditor.model.api.INamespacedObject; | |
import org.eclipse.wst.sse.sieditor.model.api.IWsdlModelRoot; | |
import org.eclipse.wst.sse.sieditor.model.api.IXSDModelRoot; | |
import org.eclipse.wst.sse.sieditor.model.wsdl.api.IDescription; | |
import org.eclipse.wst.sse.sieditor.model.xsd.api.IElement; | |
import org.eclipse.wst.sse.sieditor.model.xsd.api.ISchema; | |
import org.eclipse.wst.sse.sieditor.model.xsd.api.ISimpleType; | |
import org.eclipse.wst.sse.sieditor.model.xsd.api.IStructureType; | |
import org.eclipse.wst.sse.sieditor.model.xsd.api.IType; | |
import org.eclipse.wst.sse.sieditor.model.xsd.impl.Schema; | |
import org.eclipse.wst.sse.sieditor.test.util.EasymockModelUtils; | |
import org.eclipse.wst.sse.sieditor.ui.DialogManager; | |
import org.eclipse.wst.sse.sieditor.ui.v2.dt.DataTypesFormPageController; | |
import org.eclipse.wst.sse.sieditor.ui.v2.dt.extractwizard.ExtractNamespaceWizard; | |
import org.eclipse.wst.sse.sieditor.ui.v2.dt.nodes.IDataTypesTreeNode; | |
import org.eclipse.wst.sse.sieditor.ui.v2.dt.nodes.IElementNode; | |
import org.eclipse.wst.sse.sieditor.ui.v2.dt.nodes.INamespaceNode; | |
import org.eclipse.wst.sse.sieditor.ui.v2.dt.nodes.ISimpleTypeNode; | |
import org.eclipse.wst.sse.sieditor.ui.v2.dt.nodes.IStructureTypeNode; | |
import org.eclipse.wst.sse.sieditor.ui.v2.dt.nodes.impl.ElementNode; | |
import org.eclipse.wst.sse.sieditor.ui.v2.nodes.ITreeNode; | |
import org.eclipse.xsd.XSDTypeDefinition; | |
import org.eclipse.xsd.impl.XSDComplexTypeDefinitionImpl; | |
import org.eclipse.xsd.impl.XSDSimpleTypeDefinitionImpl; | |
import org.junit.After; | |
import org.junit.Before; | |
import org.junit.Test; | |
import org.mockito.Mockito; | |
/** | |
* | |
* | |
*/ | |
public class DataTypesFormPageControllerJUnitTest { | |
/** | |
* @throws java.lang.Exception | |
*/ | |
@Before | |
public void setUp() throws Exception { | |
} | |
/** | |
* @throws java.lang.Exception | |
*/ | |
@After | |
public void tearDown() throws Exception { | |
} | |
private static class TestDataTypesFormPageController extends DataTypesFormPageController { | |
private boolean editAllowed; // flag determining the isEditAllowed | |
// method return value | |
private Object editedMatch; // used to confirm the object for which the | |
// isEditAllowed check is called | |
private IXSDModelRoot xsdModelRoot; // returned by the | |
// getXSDModelRoot(ISchema) method | |
private Object selectObjectMatch; // used to confirm the object fired | |
// for selection | |
private int fireNodeSelectionCounter; // counts the calls to | |
// fireNodeSelectionEvent(IModelObject) | |
private ISchema retrievedSchema; // the returned result of | |
// getSchema(IModelObject) | |
private int fireErrorMsgCounter; // counts the calls to | |
private boolean isDeleteAllowed; | |
private Object deleteMatch; | |
private ITreeNode nextTreeNode; | |
private ITreeNode nextTreeNodeMatch; | |
private Object removeNodeMatch; | |
private int editCounter; | |
private IModelObject partOfDocumentMatch; | |
private Boolean isPartOfEdittedDocument; | |
private int partOfEditedDocCounter; | |
private int isDeleteCounter; | |
private int resourceReadOnlyCounter; | |
private DialogManager dialogManagerMock; | |
// fireErrorMsgEvent(String) | |
public TestDataTypesFormPageController(final IModelRoot model, final boolean readOnly) { | |
super(model, readOnly); | |
editAllowed = true; | |
isDeleteAllowed = true; | |
dialogManagerMock = null; | |
} | |
public TestDataTypesFormPageController(final IModelRoot model, final boolean readOnly, DialogManager dialogManagerMock) { | |
this(model, readOnly); | |
this.dialogManagerMock = dialogManagerMock; | |
} | |
// the folowing 3 methods override manage the mocking of the | |
// isEditAllowed method | |
@Override | |
protected boolean isEditAllowed(final Object editedObject) { | |
assertEquals(editedMatch, editedObject); | |
editCounter++; | |
return editAllowed; | |
} | |
public void setEditAllowed(final boolean editAllowed) { | |
this.editAllowed = editAllowed; | |
} | |
public void setEditedMatch(final Object editedMatch) { | |
this.editedMatch = editedMatch; | |
} | |
@Override | |
protected IXSDModelRoot getXSDModelRoot(final ISchema schema) { | |
assertEquals(editedMatch, schema); | |
return xsdModelRoot; | |
} | |
public void setRetrievedXsdModelRoot(final IXSDModelRoot xsdModelRoot) { | |
this.xsdModelRoot = xsdModelRoot; | |
} | |
@Override | |
public void fireTreeNodeSelectionEvent(final IModelObject modelObject) { | |
assertEquals(selectObjectMatch, modelObject); | |
fireNodeSelectionCounter++; | |
} | |
/** | |
* //used to confirm the object fired for selection <br> | |
* -set this object to assert that the same will be givven to the <br> | |
* fireTreeNodeSelectionEvent(IModelObject) method | |
* | |
* @param selectObjectMatch | |
*/ | |
public void setSelectObjectMatch(final Object selectObjectMatch) { | |
this.selectObjectMatch = selectObjectMatch; | |
} | |
/** | |
* used to set value of the field counting | |
* "fireTreeNodeSelectionEvent(IModelObject) calls | |
* | |
* @param fireNodeSelectionCounter | |
*/ | |
public void setFireNodeSelectionCounter(final int fireNodeSelectionCounter) { | |
this.fireNodeSelectionCounter = fireNodeSelectionCounter; | |
} | |
/** | |
* used to get value of the field counting | |
* "fireTreeNodeSelectionEvent(IModelObject) calls | |
* | |
* @param fireNodeSelectionCounter | |
*/ | |
public int getFireNodeSelectionCounter() { | |
return fireNodeSelectionCounter; | |
} | |
@Override | |
protected ISchema getSchema(final ITreeNode node) { | |
if (retrievedSchema == null) { | |
return super.getSchema(node); | |
} | |
return retrievedSchema; | |
} | |
public void setRetrievedSchema(final ISchema retrievedSchema) { | |
this.retrievedSchema = retrievedSchema; | |
} | |
@Override | |
public void fireShowErrorMsgEvent(final String message) { | |
fireErrorMsgCounter++; | |
} | |
public void setFireErrorMsgCounter(final int i) { | |
fireErrorMsgCounter = i; | |
} | |
@Override | |
protected boolean isDeleteAllowed(final Object editedObject) { | |
assertEquals(deleteMatch, editedObject); | |
isDeleteCounter++; | |
return isDeleteAllowed; | |
} | |
public void setDeleteMatch(final Object deleteMatch) { | |
this.deleteMatch = deleteMatch; | |
} | |
public void setDeleteAllowed(final boolean isDeleteAllowed) { | |
this.isDeleteAllowed = isDeleteAllowed; | |
} | |
@Override | |
protected ITreeNode getNextTreeNode(final ITreeNode selectedTreeNode) { | |
assertEquals(nextTreeNodeMatch, selectedTreeNode); | |
return nextTreeNode; | |
} | |
public void setNextTreeNode(final ITreeNode nextTreeNode) { | |
this.nextTreeNode = nextTreeNode; | |
} | |
public void setNextTreeNodeMatch(final ITreeNode nextTreeNodeMatch) { | |
this.nextTreeNodeMatch = nextTreeNodeMatch; | |
} | |
@Override | |
public void removeNodeAndItsChildrenFromMap(final ITreeNode treeNode) { | |
assertEquals(removeNodeMatch, treeNode); | |
} | |
public void setRemoveNodeMatch(final Object removeNodeMatch) { | |
this.removeNodeMatch = removeNodeMatch; | |
} | |
@Override | |
public boolean isPartOfEdittedDocument(final IModelObject modelObject) { | |
if (isPartOfEdittedDocument != null) { | |
assertEquals(partOfDocumentMatch, modelObject); | |
partOfEditedDocCounter++; | |
return isPartOfEdittedDocument.booleanValue(); | |
} | |
return super.isPartOfEdittedDocument(modelObject); | |
} | |
public int getPartOfEditedDocCounter() { | |
return partOfEditedDocCounter; | |
} | |
public void setPartOfEditedDocCounter(final int partOfEditedDocCounter) { | |
this.partOfEditedDocCounter = partOfEditedDocCounter; | |
} | |
public void setPartOfDocumentMatch(final IModelObject partOfDocumentMatch) { | |
this.partOfDocumentMatch = partOfDocumentMatch; | |
} | |
public void setPartOfEdittedDocument(final Boolean isPartOfEdittedDocument) { | |
this.isPartOfEdittedDocument = isPartOfEdittedDocument; | |
} | |
// for testing purpouses | |
@Override | |
public boolean isAddTypeEnabled(final IDataTypesTreeNode selectedNode) { | |
return super.isAddTypeEnabled(selectedNode); | |
} | |
@Override | |
public IModelObject getModelObject() { | |
return super.getModelObject(); | |
} | |
@Override | |
public boolean isResourceReadOnly() { | |
resourceReadOnlyCounter++; | |
return readOnly; | |
} | |
public int getResourceReadOnlyCounter() { | |
return resourceReadOnlyCounter; | |
} | |
public void setResourceReadOnlyCounter(final int resourceReadOnlyCounter) { | |
this.resourceReadOnlyCounter = resourceReadOnlyCounter; | |
} | |
public void setReadOnly(final boolean readOnly) { | |
this.readOnly = readOnly; | |
} | |
@Override | |
protected DialogManager getDialogManager() { | |
return dialogManagerMock; | |
} | |
} | |
@Test | |
public final void testGetSchema() { | |
final TestDataTypesFormPageController controller = new TestDataTypesFormPageController(createMock(IModelRoot.class), | |
false); | |
final INamespaceNode namespaceMock = createMock(INamespaceNode.class); | |
final ISchema schemaMock = createMock(ISchema.class); | |
expect(namespaceMock.getModelObject()).andReturn(schemaMock); | |
replay(namespaceMock); | |
assertEquals(schemaMock, controller.getSchema(namespaceMock)); | |
verify(namespaceMock); | |
reset(namespaceMock); | |
final ISimpleTypeNode simpleTypeNodeMock = createMock(ISimpleTypeNode.class); | |
expect(simpleTypeNodeMock.getParent()).andReturn(namespaceMock); | |
expect(namespaceMock.getModelObject()).andReturn(schemaMock); | |
replay(simpleTypeNodeMock, namespaceMock); | |
assertEquals(schemaMock, controller.getSchema(simpleTypeNodeMock)); | |
verify(simpleTypeNodeMock, namespaceMock); | |
reset(namespaceMock); | |
final IStructureTypeNode structureTypeNodeMock = createMock(IStructureTypeNode.class); | |
expect(structureTypeNodeMock.getParent()).andReturn(namespaceMock); | |
expect(namespaceMock.getModelObject()).andReturn(schemaMock); | |
replay(structureTypeNodeMock, namespaceMock); | |
assertEquals(schemaMock, controller.getSchema(structureTypeNodeMock)); | |
verify(structureTypeNodeMock, namespaceMock); | |
reset(namespaceMock); | |
final IElementNode elementNodeMock = createMock(IElementNode.class); | |
final IDataTypesTreeNode parentMock = createMock(IDataTypesTreeNode.class); | |
expect(elementNodeMock.getParent()).andReturn(parentMock); | |
expect(parentMock.getParent()).andReturn(namespaceMock); | |
expect(namespaceMock.getModelObject()).andReturn(schemaMock); | |
replay(elementNodeMock, namespaceMock, parentMock); | |
assertEquals(schemaMock, controller.getSchema(elementNodeMock)); | |
verify(elementNodeMock, namespaceMock, parentMock); | |
assertEquals(null, controller.getSchema(createMock(ITreeNode.class))); | |
} | |
/** | |
* Test method for | |
* {@link org.eclipse.wst.sse.sieditor.ui.v2.dt.DataTypesFormPageController#getModelObject()} | |
* . | |
*/ | |
@Test | |
public final void testGetModelObject() { | |
final IModelRoot modelRoot = createNiceMock(IModelRoot.class); | |
TestDataTypesFormPageController controller = new TestDataTypesFormPageController(modelRoot, false); | |
assertNull(controller.getModelObject()); | |
// if the model root is an IWisdlModelRoot | |
final IWsdlModelRoot wsdlModelRootMock = createMock(IWsdlModelRoot.class); | |
final IDescription descriptionMock = createMock(IDescription.class); | |
expect(wsdlModelRootMock.getModelObject()).andReturn(descriptionMock); | |
replay(wsdlModelRootMock); | |
controller = new TestDataTypesFormPageController(wsdlModelRootMock, false); | |
assertEquals(descriptionMock, controller.getModelObject()); | |
verify(wsdlModelRootMock); | |
// if the model root is an IXSDModelRoot | |
final IXSDModelRoot xsdModelRootMock = createMock(IXSDModelRoot.class); | |
final ISchema schemaMock = createMock(ISchema.class); | |
expect(xsdModelRootMock.getModelObject()).andReturn(schemaMock); | |
replay(xsdModelRootMock); | |
controller = new TestDataTypesFormPageController(xsdModelRootMock, false); | |
assertEquals(schemaMock, controller.getModelObject()); | |
verify(xsdModelRootMock); | |
} | |
/** | |
* Test method for | |
* {@link org.eclipse.wst.sse.sieditor.ui.v2.dt.DataTypesFormPageController#getNextTreeNode(org.eclipse.wst.sse.sieditor.ui.v2.nodes.ITreeNode)} | |
* . | |
*/ | |
@Test | |
public final void testGetNextTreeNode() { | |
final ITreeNode selectedNodeMock = createNiceMock(ITreeNode.class); | |
final ITreeNode resultTreeNode = createNiceMock(ITreeNode.class); | |
final Object[] siblingsMocks = new Object[] { createNiceMock(ITreeNode.class), selectedNodeMock, | |
createNiceMock(ITreeNode.class) }; | |
class DataTypesFormPageControllerExt extends DataTypesFormPageController { | |
private Object selectedNodeMatch; | |
public DataTypesFormPageControllerExt(final IModelRoot model) { | |
super(model, false); | |
} | |
@Override | |
public ITreeNode getNextTreeNode(final ITreeNode selectedTreeNode) { | |
return super.getNextTreeNode(selectedTreeNode); | |
} | |
@Override | |
protected ITreeNode getNextSiblingTreeNode(final ITreeNode selectedTreeNode, final Object[] siblings) { | |
assertEquals(selectedNodeMatch, selectedTreeNode); | |
for (int i = 0; i < siblingsMocks.length; i++) { | |
assertEquals(siblingsMocks[i], siblings[i]); | |
} | |
return resultTreeNode; | |
} | |
public void setSelectedNodeMatch(final Object selectedNodeMatch) { | |
this.selectedNodeMatch = selectedNodeMatch; | |
} | |
} | |
; | |
DataTypesFormPageControllerExt controller = new DataTypesFormPageControllerExt(createMock(IXSDModelRoot.class)); | |
controller.setSelectedNodeMatch(selectedNodeMock); | |
assertNull(controller.getNextTreeNode(null)); | |
// if the selected node has no parents but it is not a Namespace node | |
expect(selectedNodeMock.getParent()).andReturn(null); | |
replay(selectedNodeMock); | |
boolean caughtFlag = false; | |
try { | |
controller.getNextTreeNode(selectedNodeMock); | |
} catch (final InvalidParameterException e) { | |
caughtFlag = true; | |
} | |
assertTrue(caughtFlag); | |
verify(selectedNodeMock); | |
// if the selected node hasn't got a parent but it is a namespace node | |
final ITreeNode namespaceNodeMock = createMock(INamespaceNode.class); | |
expect(namespaceNodeMock.getParent()).andReturn(null); | |
replay(namespaceNodeMock); | |
assertNull(controller.getNextTreeNode(namespaceNodeMock)); | |
// if the node has a parent | |
reset(selectedNodeMock); | |
final ITreeNode parentNodeMock = createMock(ITreeNode.class); | |
expect(selectedNodeMock.getParent()).andReturn(parentNodeMock).times(2); | |
expect(parentNodeMock.getChildren()).andReturn(siblingsMocks); | |
replay(selectedNodeMock, parentNodeMock); | |
assertEquals(resultTreeNode, controller.getNextTreeNode(selectedNodeMock)); | |
verify(selectedNodeMock, parentNodeMock); | |
reset(namespaceNodeMock); | |
final IWsdlModelRoot wsdlRootMock = createMock(IWsdlModelRoot.class); | |
controller = new DataTypesFormPageControllerExt(wsdlRootMock); | |
controller.setSelectedNodeMatch(namespaceNodeMock); | |
final IDescription descriptionMock = createMock(IDescription.class); | |
expect(wsdlRootMock.getDescription()).andReturn(descriptionMock); | |
final List<ISchema> schemaList = new ArrayList<ISchema>(); | |
schemaList.add(createMock(ISchema.class)); | |
schemaList.add(createMock(ISchema.class)); | |
schemaList.add(createMock(ISchema.class)); | |
expect(descriptionMock.getContainedSchemas()).andReturn(schemaList); | |
controller.getTreeNodeMapper().addToNodeMap(schemaList.get(0), (ITreeNode) siblingsMocks[0]); | |
controller.getTreeNodeMapper().addToNodeMap(schemaList.get(1), (ITreeNode) siblingsMocks[1]); | |
controller.getTreeNodeMapper().addToNodeMap(schemaList.get(2), (ITreeNode) siblingsMocks[2]); | |
expect(namespaceNodeMock.getParent()).andReturn(null); | |
expect(namespaceNodeMock.getCategories()).andReturn(ITreeNode.CATEGORY_MAIN).anyTimes(); | |
replay(namespaceNodeMock, wsdlRootMock, descriptionMock); | |
assertEquals(resultTreeNode, controller.getNextTreeNode(namespaceNodeMock)); | |
verify(namespaceNodeMock, wsdlRootMock, descriptionMock); | |
} | |
/** | |
* Test method for | |
* {@link org.eclipse.wst.sse.sieditor.ui.v2.dt.DataTypesFormPageController#removeNodeAndItsChildrenFromMap(org.eclipse.wst.sse.sieditor.ui.v2.nodes.ITreeNode)} | |
* . | |
*/ | |
@SuppressWarnings("boxing") | |
@Test | |
public final void testRemoveNodeNItsChildrenFromMap() { | |
final DataTypesFormPageController controller = new DataTypesFormPageController(null, false); | |
final ITreeNode rootTreeNodeMock = createNiceMock(ITreeNode.class); | |
final IModelObject rootModelObjectMock = createNiceMock(IModelObject.class); | |
final ITreeNode child1TreeNodeMock = createNiceMock(ITreeNode.class); | |
final IModelObject child1ModelObjectMock = createNiceMock(IModelObject.class); | |
final ITreeNode child2TreeNodeMock = createNiceMock(ITreeNode.class); | |
final IModelObject child2ModelObjectMock = createNiceMock(IModelObject.class); | |
final ITreeNode child1ChildTreeNodeMock = createNiceMock(ITreeNode.class); | |
final IModelObject child1ChildModelObjectMock = createNiceMock(IModelObject.class); | |
controller.getTreeNodeMapper().addToNodeMap(rootModelObjectMock, rootTreeNodeMock); | |
controller.getTreeNodeMapper().addToNodeMap(child1ModelObjectMock, child1TreeNodeMock); | |
controller.getTreeNodeMapper().addToNodeMap(child2ModelObjectMock, child2TreeNodeMock); | |
controller.getTreeNodeMapper().addToNodeMap(child1ChildModelObjectMock, child1ChildTreeNodeMock); | |
expect(rootTreeNodeMock.hasChildren()).andReturn(Boolean.valueOf(false)); | |
expect(rootTreeNodeMock.getModelObject()).andReturn(rootModelObjectMock).atLeastOnce(); | |
expect(rootTreeNodeMock.hasChildren()).andReturn(Boolean.valueOf(true)); | |
expect(rootTreeNodeMock.getChildren()).andReturn(new Object[] { child1TreeNodeMock, child2TreeNodeMock }); | |
expect(child1TreeNodeMock.hasChildren()).andReturn(Boolean.valueOf(true)); | |
expect(child1TreeNodeMock.getChildren()).andReturn(new Object[] { child1ChildTreeNodeMock }); | |
expect(child1ChildTreeNodeMock.hasChildren()).andReturn(Boolean.valueOf(false)); | |
expect(child1ChildTreeNodeMock.getModelObject()).andReturn(child1ChildModelObjectMock).atLeastOnce(); | |
expect(child1TreeNodeMock.getModelObject()).andReturn(child1ModelObjectMock).atLeastOnce(); | |
expect(child2TreeNodeMock.hasChildren()).andReturn(Boolean.valueOf(false)); | |
expect(child2TreeNodeMock.getModelObject()).andReturn(child2ModelObjectMock).atLeastOnce(); | |
replay(rootTreeNodeMock, child1TreeNodeMock, child2TreeNodeMock, child1ChildTreeNodeMock); | |
assertNotNull(controller.getTreeNodeMapper().getTreeNode(rootModelObjectMock)); | |
controller.removeNodeAndItsChildrenFromMap(rootTreeNodeMock); | |
assertNull(controller.getTreeNodeMapper().getTreeNode(rootModelObjectMock)); | |
controller.getTreeNodeMapper().addToNodeMap(rootModelObjectMock, rootTreeNodeMock); | |
assertNotNull(controller.getTreeNodeMapper().getTreeNode(rootModelObjectMock)); | |
assertNotNull(controller.getTreeNodeMapper().getTreeNode(child1ModelObjectMock)); | |
assertNotNull(controller.getTreeNodeMapper().getTreeNode(child2ModelObjectMock)); | |
controller.removeNodeAndItsChildrenFromMap(rootTreeNodeMock); | |
assertNull(controller.getTreeNodeMapper().getTreeNode(rootModelObjectMock)); | |
assertNull(controller.getTreeNodeMapper().getTreeNode(child1ModelObjectMock)); | |
assertNull(controller.getTreeNodeMapper().getTreeNode(child2ModelObjectMock)); | |
assertNull(controller.getTreeNodeMapper().getTreeNode(child1ChildModelObjectMock)); | |
verify(rootTreeNodeMock); | |
verify(child1TreeNodeMock); | |
verify(child2TreeNodeMock); | |
verify(child1ChildTreeNodeMock); | |
} | |
@Test | |
public final void testRemoveLocalElementRefGlobalFromMap() { | |
final IElement elementMock = EasymockModelUtils.createIElementMockFromSameModel(); | |
final IStructureType typeMock = createMock(IStructureType.class); | |
expect(elementMock.getType()).andReturn(typeMock).atLeastOnce(); | |
expect(typeMock.isElement()).andReturn(Boolean.valueOf(true)); | |
final DataTypesFormPageController controller = new DataTypesFormPageController(null, false); | |
replay(elementMock, typeMock); | |
// mock the behaviour of a Global Element | |
final ITreeNode parentNode = createNiceMock(ITreeNode.class); | |
replay(parentNode); | |
final ElementNode node = new ElementNode(elementMock, parentNode, controller.getTreeNodeMapper()) { | |
@Override | |
public boolean hasChildren() { | |
return false; | |
} | |
@Override | |
public int getCategories() { | |
return super.getCategories() | ITreeNode.CATEGORY_REFERENCE; | |
} | |
}; | |
controller.getTreeNodeMapper().addToNodeMap(elementMock, node); | |
assertEquals(node, controller.getTreeNodeMapper().getTreeNode(elementMock)); | |
controller.removeNodeAndItsChildrenFromMap(node); | |
assertNull(controller.getTreeNodeMapper().getTreeNode(elementMock)); | |
// mock the behaviour of a ComplexType | |
reset(typeMock); | |
expect(typeMock.isElement()).andReturn(Boolean.valueOf(false)); | |
replay(typeMock); | |
controller.getTreeNodeMapper().removeNodeFromMap(elementMock); | |
assertNull(controller.getTreeNodeMapper().getTreeNode(elementMock)); | |
} | |
@Test | |
public final void testRemoveLocalElementOfSimpleTypeFromMap() { | |
final IElement elementMock = createNiceMock(IElement.class); | |
expect(elementMock.getType()).andReturn(createMock(ISimpleType.class)).atLeastOnce(); | |
replay(elementMock); | |
final DataTypesFormPageController controller = new DataTypesFormPageController(null, false); | |
// mock the behaviour of a SimpleType | |
final ITreeNode parentNode = createNiceMock(ITreeNode.class); | |
replay(parentNode); | |
final ElementNode node = new ElementNode(elementMock, parentNode, controller.getTreeNodeMapper()); | |
controller.getTreeNodeMapper().addToNodeMap(elementMock, node); | |
assertEquals(node, controller.getTreeNodeMapper().getTreeNode(elementMock)); | |
controller.removeNodeAndItsChildrenFromMap(node); | |
assertNull(controller.getTreeNodeMapper().getTreeNode(elementMock)); | |
verify(elementMock); | |
} | |
@Test | |
public void isAddElementEnabledForStructureType_SimpleContent() { | |
final IDataTypesTreeNode node = createMock(IDataTypesTreeNode.class); | |
expect(node.getCategories()).andReturn(0); | |
expect(node.isReadOnly()).andReturn(false); | |
final IStructureType structureType = createMock(IStructureType.class); | |
expect(node.getModelObject()).andReturn(structureType); | |
expect(structureType.isComplexTypeSimpleContent()).andReturn(true); | |
replay(node, structureType); | |
final DataTypesFormPageController controller = new DataTypesFormPageController(null, false); | |
assertFalse(controller.isAddElementEnabled(node)); | |
} | |
@Test | |
public void isAddElementEnabledForStructureType_ComplexContent() { | |
final IDataTypesTreeNode node = createMock(IDataTypesTreeNode.class); | |
expect(node.getCategories()).andReturn(0); | |
expect(node.isReadOnly()).andReturn(false); | |
final IStructureType structureType = createMock(IStructureType.class); | |
expect(node.getModelObject()).andReturn(structureType); | |
expect(structureType.isComplexTypeSimpleContent()).andReturn(false); | |
expect(structureType.getComponent()).andReturn(null); | |
expect(structureType.isElement()).andReturn(false); | |
replay(node, structureType); | |
final DataTypesFormPageController controller = new DataTypesFormPageController(null, false); | |
assertTrue(controller.isAddElementEnabled(node)); | |
} | |
/** | |
* Test method for the handleAddElementActionInvalidAndGlobalElement() - | |
* tests the logic verifying the parameters<br> | |
* And if the method constructs a command adding an element for an ISchema | |
* and calls selection of the new tree node. Does not verify if the command | |
* is properly setup and executed. Does not verify if the newly created | |
* element is the one to be selected. To do so, probably a plugin test | |
* should be written. | |
* | |
* {@link org.eclipse.wst.sse.sieditor.ui.v2.dt.DataTypesFormPageController#handleAddElementAction(org.eclipse.wst.sse.sieditor.ui.v2.nodes.ITreeNode)} | |
* . | |
* | |
* @throws ExecutionException | |
*/ | |
@Test | |
public final void testHandleAddElementActionInvalidAndGlobalElement() throws ExecutionException { | |
final IModelRoot modelRootMock = createMock(IWsdlModelRoot.class); | |
final IEnvironment envMock = createMock(IEnvironment.class); | |
expect(modelRootMock.getEnv()).andReturn(envMock).atLeastOnce(); | |
expect(envMock.getEditingDomain()).andReturn(null).atLeastOnce(); | |
try { | |
expect(envMock.execute(isA(AddStructureTypeCommand.class))).andReturn(Status.OK_STATUS); | |
} catch (final ExecutionException e) { | |
fail();// this should never fail | |
} | |
final ITreeNode selectedNodeMock = createNiceMock(ITreeNode.class); | |
expect(selectedNodeMock.getModelObject()).andReturn(null); | |
replay(modelRootMock, selectedNodeMock, envMock); | |
final TestDataTypesFormPageController dataTypesFormPageController = new TestDataTypesFormPageController(modelRootMock, | |
false, mock(DialogManager.class)); | |
// checks the case when the selectedNode's model object is null | |
boolean caught = false; | |
try { | |
dataTypesFormPageController.handleAddElementAction(selectedNodeMock); | |
} catch (final IllegalArgumentException e) { | |
caught = true; | |
} | |
assertTrue(caught); | |
verify(selectedNodeMock); | |
// when the model object of the selected node is read only or not | |
// applicable of type ISchema | |
reset(selectedNodeMock); | |
// returns just a mock to test cases when isEditAllowed returns false, | |
// or the model object is | |
// not an applicable for the action | |
final IModelObject modelObjectMock = createMock(IModelObject.class); | |
expect(selectedNodeMock.getModelObject()).andReturn(modelObjectMock).atLeastOnce(); | |
replay(selectedNodeMock); | |
dataTypesFormPageController.getTreeNodeMapper().addToNodeMap(modelObjectMock, selectedNodeMock); | |
// when the node is read only | |
dataTypesFormPageController.setEditedMatch(modelObjectMock); | |
dataTypesFormPageController.setEditAllowed(false); | |
dataTypesFormPageController.handleAddElementAction(selectedNodeMock); | |
dataTypesFormPageController.setEditAllowed(true); | |
// ... | |
// test the case when the model object of the selected node is not an | |
// acceptable parameter(for element addition) | |
caught = false; | |
try { | |
dataTypesFormPageController.handleAddElementAction(selectedNodeMock); | |
} catch (final IllegalStateException e) { | |
caught = true; | |
} | |
assertTrue(caught); | |
verify(selectedNodeMock); | |
reset(selectedNodeMock); | |
// returns ISchema mock to test the case when an element is added to a | |
// schema | |
final ISchema schemaMock = createNiceMock(ISchema.class); | |
expect(schemaMock.getAllTypes("Element1")).andReturn(new IType[0]); | |
expect(selectedNodeMock.getModelObject()).andReturn(schemaMock); | |
final IXSDModelRoot xsdRootMock = createMock(IXSDModelRoot.class); | |
expect(schemaMock.getModelRoot()).andReturn(xsdRootMock); | |
expect(xsdRootMock.getEnv()).andReturn(envMock).atLeastOnce(); | |
replay(selectedNodeMock, xsdRootMock, schemaMock); | |
// test with a wsdl model root | |
dataTypesFormPageController.setEditedMatch(schemaMock); | |
dataTypesFormPageController.setFireNodeSelectionCounter(0); | |
dataTypesFormPageController.setSelectObjectMatch(null); | |
dataTypesFormPageController.setRetrievedXsdModelRoot(xsdRootMock); | |
dataTypesFormPageController.getTreeNodeMapper().addToNodeMap(schemaMock, selectedNodeMock); | |
dataTypesFormPageController.handleAddElementAction(selectedNodeMock); | |
// place here any code verifying command execution | |
// case when the model object to which elements are added is an ISchema | |
verify(modelRootMock); | |
verify(selectedNodeMock); | |
verify(xsdRootMock); | |
} | |
/* | |
* Test method for the handleAddElementActionInvalidAndGlobalElement() | |
* -tests creation of commands and attempt for execution for adding elements | |
* to StructureTypes and anonymous type elements and calls selection of the | |
* new tree node. Does not verify if the command is properly setup and | |
* executed. Does not verify if the newly created element is the one to be | |
* selected. To do so, probably a plugin test should be written. {@link | |
* org.eclipse.wst.sse.sieditor.ui.v2.dt.DataTypesFormPageController# | |
* handleAddSimpleTypeAction | |
* (org.eclipse.wst.sse.sieditor.ui.v2.nodes.ITreeNode)} | |
* | |
* TEST COVERED BY ActionsSelectionTest | |
* | |
* @SuppressWarnings("boxing") | |
* | |
* @Test public final void | |
* testHandleAddElementActionToStructureTypeAndElement() { IXSDModelRoot | |
* modelRootMock = createMock(IXSDModelRoot.class); IEnvironment envMock = | |
* createMock(IEnvironment.class); ITreeNode selectedNodeMock = | |
* createMock(ITreeNode.class); // when the model object of the slecdted | |
* node is of type IStructyreType | |
* | |
* expect(modelRootMock.getEnv()).andReturn(envMock).times(2); | |
* expect(envMock.getEditingDomain()).andReturn(null); try { | |
* expect(envMock.execute | |
* (isA(AddElementCommand.class))).andReturn(Status.OK_STATUS); } catch | |
* (ExecutionException e) { fail();// this should never fail } | |
* | |
* IStructureType structureTypeMock = createMock(IStructureType.class); | |
* expect(structureTypeMock.getModelRoot()).andReturn(modelRootMock); | |
* expect( | |
* structureTypeMock.getElements(isA(String.class))).andStubReturn(Collections | |
* .emptyList()); | |
* expect(selectedNodeMock.getModelObject()).andReturn(structureTypeMock); | |
* replay(selectedNodeMock, modelRootMock, envMock, structureTypeMock); | |
* | |
* TestDataTypesFormPageController dataTypesFormPageController = new | |
* TestDataTypesFormPageController(modelRootMock, false); | |
* | |
* dataTypesFormPageController.setEditedMatch(structureTypeMock); | |
* dataTypesFormPageController.handleAddElementAction(selectedNodeMock); | |
* | |
* verify(selectedNodeMock, modelRootMock, envMock, structureTypeMock); // | |
* when the model object of the slecdted node is of type IStructyreType | |
* reset(selectedNodeMock, modelRootMock, envMock, structureTypeMock); | |
* | |
* expect(modelRootMock.getEnv()).andReturn(envMock).times(2); | |
* expect(envMock.getEditingDomain()).andReturn(null); try { | |
* expect(envMock.execute | |
* (isA(AddElementCommand.class))).andReturn(Status.OK_STATUS); } catch | |
* (ExecutionException e) { fail();// this should never fail } | |
* | |
* IElement elementMock = createMock(IElement.class); | |
* | |
* expect(elementMock.getType()).andReturn(structureTypeMock); | |
* expect(structureTypeMock.isAnonymous()).andReturn(Boolean.valueOf(true)); | |
* expect(elementMock.getModelRoot()).andReturn(modelRootMock); | |
* expect(structureTypeMock | |
* .getElements(isA(String.class))).andStubReturn(Collections.emptyList()); | |
* expect(selectedNodeMock.getModelObject()).andReturn(elementMock); | |
* replay(selectedNodeMock, modelRootMock, envMock, elementMock, | |
* structureTypeMock); | |
* | |
* dataTypesFormPageController.setEditedMatch(elementMock); | |
* dataTypesFormPageController.handleAddElementAction(selectedNodeMock); | |
* | |
* verify(modelRootMock, selectedNodeMock, envMock, structureTypeMock); } | |
*/ | |
/** | |
* Test Method tests the gandleAddSimpleTypeAction(ITreeNode) method - the | |
* test verifies exceptional<br> | |
* cases and creation of addSimpleTypeCommand. The test does not verify the | |
* command execution, effect<br> | |
* and command state. There is no check if the node intended to be selected | |
* via fireTreeNodeSelectionEvent() | |
*/ | |
@Test | |
public final void testHandleAddSimpleTypeAction() { | |
final IModelRoot modelRootMock = createMock(IModelRoot.class); | |
final ITreeNode selectedNodeMock = createNiceMock(ITreeNode.class); | |
// when the model root is not an XSDModelRoot | |
// when when isEditAllowed returns false | |
final DialogManager dialogManagerMock = mock(DialogManager.class); | |
TestDataTypesFormPageController controller = new TestDataTypesFormPageController(modelRootMock, false, dialogManagerMock); | |
final ISchema schemaMock = createNiceMock(ISchema.class); | |
replay(schemaMock, selectedNodeMock); | |
controller.setRetrievedSchema(schemaMock); | |
controller.setEditedMatch(schemaMock); | |
controller.setEditAllowed(false); | |
controller.setFireErrorMsgCounter(0); | |
controller.getTreeNodeMapper().addToNodeMap(schemaMock, selectedNodeMock); | |
// do test | |
controller.handleAddSimpleTypeAction(selectedNodeMock); | |
Mockito.verify(dialogManagerMock, times(1)).showStatusDialog(any(String.class), any(IStatus.class)); | |
// when the isEditAllowed returns true | |
controller.setEditAllowed(true); | |
controller.setRetrievedXsdModelRoot(null); | |
controller.handleAddSimpleTypeAction(selectedNodeMock); | |
Mockito.verify(dialogManagerMock, times(2)).showStatusDialog(any(String.class), any(IStatus.class)); | |
final IXSDModelRoot xsdModelRootMock = createNiceMock(IXSDModelRoot.class); | |
// if the model root is an IXSDModelRoot and returns a null schema | |
expect(xsdModelRootMock.getSchema()).andReturn(null); | |
replay(xsdModelRootMock); | |
controller = new TestDataTypesFormPageController(xsdModelRootMock, false); | |
boolean caughtFlag = false; | |
try { | |
controller.handleAddSimpleTypeAction(selectedNodeMock); | |
} catch (final IllegalArgumentException e) { | |
caughtFlag = true; | |
} | |
assertTrue(caughtFlag); | |
verify(xsdModelRootMock); | |
// when isEditAllowed() returns true and a command is constructed and | |
// executed | |
reset(xsdModelRootMock); | |
final IWsdlModelRoot wsdlModelRootMock = createNiceMock(IWsdlModelRoot.class); | |
final ISchema schemaMock2 = createNiceMock(ISchema.class); | |
expect(schemaMock2.getModelRoot()).andReturn(xsdModelRootMock); | |
final IEnvironment envMock = createMock(IEnvironment.class); | |
expect(xsdModelRootMock.getEnv()).andReturn(envMock).times(2); | |
expect(envMock.getEditingDomain()).andReturn(null); | |
try { | |
expect(envMock.execute(isA(AddSimpleTypeCommand.class))).andReturn(Status.OK_STATUS); | |
} catch (final ExecutionException e) { | |
fail();// this line should never be called | |
} | |
final ITreeNode treeNodeMock = createNiceMock(ITreeNode.class); | |
replay(xsdModelRootMock, envMock, schemaMock2, treeNodeMock); | |
controller = new TestDataTypesFormPageController(wsdlModelRootMock, false); | |
controller.setRetrievedSchema(schemaMock2); | |
controller.setEditAllowed(true); | |
controller.setEditedMatch(schemaMock2); | |
controller.setRetrievedXsdModelRoot(xsdModelRootMock); | |
controller.getTreeNodeMapper().addToNodeMap(schemaMock2, treeNodeMock); | |
controller.handleAddSimpleTypeAction(selectedNodeMock); | |
verify(xsdModelRootMock); | |
verify(envMock); | |
} | |
/** | |
* Test method for | |
* {@link org.eclipse.wst.sse.sieditor.ui.v2.dt.DataTypesFormPageController#handleAddStructureTypeAction(org.eclipse.wst.sse.sieditor.ui.v2.nodes.ITreeNode)} | |
* . | |
*/ | |
@Test | |
public final void testHandleAddStructureTypeAction() { | |
final IModelRoot modelRootMock = createMock(IModelRoot.class); | |
final ITreeNode selectedNodeMock = createNiceMock(ITreeNode.class); | |
replay(selectedNodeMock); | |
DialogManager dialogManagerMock = mock(DialogManager.class); | |
// when the model root is not an XSDModelRoot | |
// when when isEditAllowed returns false | |
TestDataTypesFormPageController controller = new TestDataTypesFormPageController(modelRootMock, false, dialogManagerMock); | |
final ISchema schemaMock = createNiceMock(ISchema.class); | |
replay(schemaMock); | |
controller.setRetrievedSchema(schemaMock); | |
controller.setEditedMatch(schemaMock); | |
controller.setEditAllowed(false); | |
controller.setFireErrorMsgCounter(0); | |
controller.getTreeNodeMapper().addToNodeMap(schemaMock, selectedNodeMock); | |
controller.handleAddStructureTypeAction(selectedNodeMock); | |
Mockito.verify(dialogManagerMock, only()).showStatusDialog(any(String.class), any(IStatus.class)); | |
// when the isEditAllowed returns true | |
controller.setEditAllowed(true); | |
controller.setRetrievedXsdModelRoot(null); | |
controller.handleAddStructureTypeAction(selectedNodeMock); | |
Mockito.verify(dialogManagerMock, times(2)).showStatusDialog(any(String.class), any(IStatus.class)); | |
final IXSDModelRoot xsdModelRootMock = createNiceMock(IXSDModelRoot.class); | |
// if the model root is an IXSDModelRoot and returns a null schema | |
expect(xsdModelRootMock.getSchema()).andReturn(null); | |
replay(xsdModelRootMock); | |
controller = new TestDataTypesFormPageController(xsdModelRootMock, false); | |
boolean caughtFlag = false; | |
try { | |
controller.handleAddStructureTypeAction(selectedNodeMock); | |
} catch (final IllegalArgumentException e) { | |
caughtFlag = true; | |
} | |
assertTrue(caughtFlag); | |
verify(xsdModelRootMock); | |
// when isEditAllowed() returns true and a command is constructed and | |
// executed | |
reset(xsdModelRootMock); | |
final IEnvironment envMock = createMock(IEnvironment.class); | |
expect(xsdModelRootMock.getEnv()).andReturn(envMock); | |
try { | |
expect(envMock.execute(isA(AddStructureTypeCommand.class))).andReturn(Status.OK_STATUS); | |
} catch (final ExecutionException e) { | |
fail();// this line should never be called | |
} | |
replay(xsdModelRootMock, envMock); | |
} | |
/** | |
* Test method for | |
* {@link org.eclipse.wst.sse.sieditor.ui.v2.dt.DataTypesFormPageController#handleRemoveAction(org.eclipse.wst.sse.sieditor.ui.v2.nodes.ITreeNode)} | |
* . | |
*/ | |
@Test | |
public final void testHandleRemoveAction() { | |
final ITreeNode treeNodeMock = createMock(ITreeNode.class); | |
final IModelObject modelObjectMock = createMock(IModelObject.class); | |
final IEnvironment envMock = createMock(IEnvironment.class); | |
IModelObject xsdComponentMock = createMock(ISchema.class); | |
IModelRoot modelRootMock = createMock(IWsdlModelRoot.class); | |
expect(modelRootMock.getEnv()).andReturn(envMock).times(2); | |
expect(treeNodeMock.getModelObject()).andReturn(modelObjectMock).times(2); | |
expect(modelObjectMock.getParent()).andReturn(null).anyTimes(); | |
expect(envMock.getEditingDomain()).andReturn(null).anyTimes(); | |
replay(treeNodeMock, modelRootMock, modelObjectMock, envMock); | |
DialogManager dialogManagerMock = mock(DialogManager.class); | |
TestDataTypesFormPageController controller = new TestDataTypesFormPageController(modelRootMock, false, dialogManagerMock); | |
controller.setEditAllowed(false); | |
controller.setEditedMatch(modelObjectMock); | |
controller.handleRemoveAction(Arrays.asList(treeNodeMock)); | |
controller.setEditAllowed(true); | |
controller.setFireErrorMsgCounter(0); | |
controller.setNextTreeNodeMatch(treeNodeMock); | |
controller.handleRemoveAction(Arrays.asList(treeNodeMock)); | |
Mockito.verify(dialogManagerMock, only()).showStatusDialog(any(String.class), any(IStatus.class)); | |
verify(treeNodeMock); | |
// when a ISchema is to be removed | |
reset(treeNodeMock); | |
controller.setNextTreeNodeMatch(treeNodeMock); | |
controller.setNextTreeNode(createMock(ITreeNode.class)); | |
controller.setRemoveNodeMatch(treeNodeMock); | |
// case when a simple or complex type is to be removed | |
reset(treeNodeMock, modelRootMock, envMock, modelObjectMock); | |
xsdComponentMock = createMock(IType.class); | |
prepairHandleRemoveCommandMocks(treeNodeMock, modelRootMock, envMock, xsdComponentMock, DeleteSetCommand.class, | |
Status.OK_STATUS); | |
expect(xsdComponentMock.getParent()).andReturn(createMock(ISchema.class)).anyTimes(); | |
replay(treeNodeMock, modelRootMock, envMock, modelObjectMock, xsdComponentMock); | |
controller.setEditedMatch(xsdComponentMock); | |
controller.handleRemoveAction((Arrays.asList(treeNodeMock))); | |
verify(treeNodeMock, modelRootMock, envMock); | |
// case when an element is to be removed | |
reset(treeNodeMock, modelRootMock, envMock); | |
xsdComponentMock = createMock(IElement.class); | |
prepairHandleRemoveCommandMocks(treeNodeMock, modelRootMock, envMock, xsdComponentMock, DeleteSetCommand.class, | |
Status.OK_STATUS); | |
final IStructureType type = createMock(IStructureType.class); | |
expect(xsdComponentMock.getParent()).andReturn(type).times(4); | |
expect(type.getAllElements()).andReturn(Arrays.asList((IElement) xsdComponentMock)).anyTimes(); | |
expect(type.getParent()).andReturn(null).anyTimes(); | |
replay(treeNodeMock, modelRootMock, envMock, xsdComponentMock, type); | |
controller.setEditedMatch(xsdComponentMock); | |
controller.handleRemoveAction((Arrays.asList(treeNodeMock))); | |
verify(treeNodeMock, modelRootMock, envMock, xsdComponentMock); | |
// simulate command execution failure | |
reset(treeNodeMock, modelRootMock, envMock, xsdComponentMock); | |
prepairHandleRemoveCommandMocks(treeNodeMock, modelRootMock, envMock, xsdComponentMock, DeleteSetCommand.class, | |
Status.CANCEL_STATUS); | |
final IStructureType typeMock = createMock(IStructureType.class); | |
expect(xsdComponentMock.getParent()).andReturn(typeMock).times(4); | |
expect(typeMock.getAllElements()).andReturn(Arrays.asList((IElement) xsdComponentMock)).anyTimes(); | |
expect(typeMock.getParent()).andReturn(null).anyTimes(); | |
replay(treeNodeMock, modelRootMock, envMock, xsdComponentMock, typeMock); | |
controller.setEditedMatch(xsdComponentMock); | |
controller.handleRemoveAction((Arrays.asList(treeNodeMock))); | |
verify(treeNodeMock, modelRootMock, envMock, xsdComponentMock); | |
// tests the case when a schema is requested to be removed, but the | |
// model root is not a Wsdl root but an xsd | |
reset(treeNodeMock, modelRootMock, envMock, xsdComponentMock); | |
modelRootMock = createMock(IModelRoot.class); | |
xsdComponentMock = createMock(ISchema.class); | |
expect(treeNodeMock.getModelObject()).andReturn(xsdComponentMock); | |
expect(modelRootMock.getEnv()).andReturn(envMock).times(4); | |
expect(envMock.getEditingDomain()).andReturn(null).times(3); | |
expect(xsdComponentMock.getParent()).andReturn(null).anyTimes(); | |
replay(treeNodeMock, modelRootMock, envMock, xsdComponentMock); | |
controller = new TestDataTypesFormPageController(modelRootMock, false, dialogManagerMock); | |
controller.setEditedMatch(xsdComponentMock); | |
controller.setNextTreeNodeMatch(treeNodeMock); | |
controller.handleRemoveAction((Arrays.asList(treeNodeMock))); | |
verify(treeNodeMock); | |
} | |
private void prepairHandleRemoveCommandMocks(final ITreeNode treeNodeMock, final IModelRoot modelRootMock, | |
final IEnvironment envMock, final IModelObject xsdComponentMock, | |
final Class<? extends AbstractNotificationOperation> commandToBeExecuted, final IStatus returnStatus) { | |
expect(treeNodeMock.getModelObject()).andReturn(xsdComponentMock); | |
expect(modelRootMock.getEnv()).andReturn(envMock).times(3); | |
expect(envMock.getEditingDomain()).andReturn(null).times(2); | |
try { | |
expect(envMock.execute(isA(commandToBeExecuted))).andReturn(returnStatus); | |
} catch (final ExecutionException e) { | |
fail(); | |
} | |
} | |
/** | |
* Test method for | |
* {@link org.eclipse.wst.sse.sieditor.ui.v2.dt.DataTypesFormPageController#isRemoveItemEnabled(org.eclipse.wst.sse.sieditor.ui.v2.dt.nodes.IDataTypesTreeNode)} | |
* . | |
*/ | |
@SuppressWarnings("boxing") | |
@Test | |
public final void testIsRemoveItemEnabled() { | |
final IXSDModelRoot xsdRootMock = createMock(IXSDModelRoot.class); | |
final TestDataTypesFormPageController controller = new TestDataTypesFormPageController(xsdRootMock, false); | |
assertFalse(controller.isRemoveItemsEnabled(null)); | |
ITreeNode parentNode = createMock(ITreeNode.class); | |
expect(parentNode.isReadOnly()).andReturn(Boolean.valueOf(true)).anyTimes(); | |
replay(parentNode); | |
IDataTypesTreeNode treeNodeMock = createMock(IDataTypesTreeNode.class); | |
expect(treeNodeMock.getParent()).andReturn(parentNode).anyTimes(); | |
replay(treeNodeMock); | |
assertFalse(controller.isRemoveItemsEnabled(Arrays.asList(treeNodeMock))); | |
verify(treeNodeMock); | |
final List<Class<? extends IDataTypesTreeNode>> typesClassList = new ArrayList<Class<? extends IDataTypesTreeNode>>(); | |
typesClassList.add(ISimpleTypeNode.class); | |
typesClassList.add(IStructureTypeNode.class); | |
typesClassList.add(IElementNode.class); | |
typesClassList.add(INamespaceNode.class); | |
final IModelObject modelObjectMock = createMock(IModelObject.class); | |
final ISchema schemaMock = createMock(ISchema.class); | |
for (final Class<? extends IDataTypesTreeNode> type : typesClassList) { | |
parentNode = createMock(ITreeNode.class); | |
expect(parentNode.isReadOnly()).andReturn(Boolean.valueOf(false)).anyTimes(); | |
replay(parentNode); | |
treeNodeMock = createMock(type); | |
// when isDeleteAllowed is false | |
expect(treeNodeMock.getParent()).andReturn(parentNode).anyTimes(); | |
replay(treeNodeMock); | |
controller.setResourceReadOnlyCounter(0); | |
controller.setReadOnly(true); | |
controller.setPartOfDocumentMatch(modelObjectMock); | |
controller.setPartOfEditedDocCounter(0); | |
controller.setPartOfEdittedDocument(Boolean.valueOf(true)); | |
assertFalse(controller.isRemoveItemsEnabled(Arrays.asList(treeNodeMock))); | |
assertTrue(controller.getResourceReadOnlyCounter() == 1); | |
assertTrue(controller.getPartOfEditedDocCounter() == 0); | |
verify(treeNodeMock); | |
// when isPartOfEditedDocument is false | |
reset(treeNodeMock); | |
expect(treeNodeMock.getParent()).andReturn(parentNode).anyTimes(); | |
expect(treeNodeMock.getModelObject()).andReturn(modelObjectMock); | |
replay(treeNodeMock); | |
// when isDeleteAllowed returns true but isPartOfEdittedDocument is | |
// false | |
controller.setReadOnly(false); | |
controller.setResourceReadOnlyCounter(0); | |
controller.setPartOfEditedDocCounter(0); | |
assertTrue(controller.isRemoveItemsEnabled((Arrays.asList(treeNodeMock)))); | |
assertTrue(controller.getResourceReadOnlyCounter() == 1); | |
verify(treeNodeMock); | |
// whent is part of edited doc is true, but model object is document | |
// schema | |
reset(treeNodeMock, xsdRootMock); | |
expect(treeNodeMock.getParent()).andReturn(parentNode).anyTimes(); | |
expect(treeNodeMock.getModelObject()).andReturn(schemaMock).anyTimes(); | |
expect(xsdRootMock.getSchema()).andReturn(schemaMock).anyTimes(); | |
replay(treeNodeMock, xsdRootMock); | |
controller.setResourceReadOnlyCounter(0); | |
controller.setPartOfEdittedDocument(Boolean.valueOf(true)); | |
assertFalse(controller.isRemoveItemsEnabled(Arrays.asList(treeNodeMock))); | |
assertTrue(controller.getResourceReadOnlyCounter() == 1); | |
verify(treeNodeMock, xsdRootMock); | |
reset(treeNodeMock); | |
// when isDocumentSchema is false | |
expect(treeNodeMock.getParent()).andReturn(parentNode).anyTimes(); | |
expect(treeNodeMock.getModelObject()).andReturn(modelObjectMock).anyTimes(); | |
replay(treeNodeMock); | |
controller.setResourceReadOnlyCounter(0); | |
assertTrue(controller.isRemoveItemsEnabled(Arrays.asList(treeNodeMock))); | |
assertTrue(controller.getResourceReadOnlyCounter() == 1); | |
verify(treeNodeMock); | |
} | |
} | |
/** | |
* Test method for | |
* {@link org.eclipse.wst.sse.sieditor.ui.v2.dt.DataTypesFormPageController#isRenameItemEnabled(org.eclipse.wst.sse.sieditor.ui.v2.dt.nodes.IDataTypesTreeNode)} | |
* . | |
*/ | |
@SuppressWarnings("boxing") | |
@Test | |
public final void testIsRenameItemEnabled() { | |
final IXSDModelRoot xsdRootMock = createMock(IXSDModelRoot.class); | |
final TestDataTypesFormPageController controller = new TestDataTypesFormPageController(xsdRootMock, false); | |
assertFalse(controller.isRenameItemEnabled(null)); | |
IDataTypesTreeNode treeNodeMock = createMock(IDataTypesTreeNode.class); | |
expect(treeNodeMock.isReadOnly()).andReturn(Boolean.valueOf(true)); | |
replay(treeNodeMock); | |
assertFalse(controller.isRenameItemEnabled(treeNodeMock)); | |
verify(treeNodeMock); | |
final List<Class<? extends IDataTypesTreeNode>> typesClassList = new ArrayList<Class<? extends IDataTypesTreeNode>>(); | |
typesClassList.add(ISimpleTypeNode.class); | |
typesClassList.add(IStructureTypeNode.class); | |
typesClassList.add(IElementNode.class); | |
typesClassList.add(INamespaceNode.class); | |
final INamedObject namedObjectMock = createMock(INamedObject.class); | |
final INamespacedObject namespacedObjectMock = createMock(INamespacedObject.class); | |
for (final Class<? extends IDataTypesTreeNode> type : typesClassList) { | |
// when readOnly is true | |
controller.setResourceReadOnlyCounter(0); | |
controller.setReadOnly(true); | |
controller.setPartOfDocumentMatch(namedObjectMock); | |
controller.setPartOfEditedDocCounter(0); | |
controller.setPartOfEdittedDocument(Boolean.valueOf(true)); | |
assertFalse(controller.isRenameItemEnabled(treeNodeMock)); | |
assertTrue(controller.getResourceReadOnlyCounter() == 1); | |
assertTrue(controller.getPartOfEditedDocCounter() == 0); | |
// when the edited model object is a namespaced model object and | |
// isReadOnly == true | |
treeNodeMock = createMock(type); | |
controller.setResourceReadOnlyCounter(0); | |
controller.setReadOnly(true); | |
controller.setPartOfDocumentMatch(namespacedObjectMock); | |
controller.setPartOfEditedDocCounter(0); | |
controller.setPartOfEdittedDocument(Boolean.valueOf(true)); | |
assertFalse(controller.isRenameItemEnabled(treeNodeMock)); | |
assertTrue(controller.getResourceReadOnlyCounter() == 1); | |
assertTrue(controller.getPartOfEditedDocCounter() == 0); | |
// when isPartOfEditedDocument is false | |
expect(treeNodeMock.isReadOnly()).andReturn(Boolean.valueOf(false)); | |
expect(treeNodeMock.getModelObject()).andReturn(namedObjectMock).anyTimes(); | |
replay(treeNodeMock); | |
controller.setResourceReadOnlyCounter(0); | |
controller.setReadOnly(false); | |
assertTrue(controller.isRenameItemEnabled(treeNodeMock)); | |
assertTrue(controller.getResourceReadOnlyCounter() == 1); | |
verify(treeNodeMock); | |
// whent is part of edited doc is true, but model object is document | |
// schema | |
reset(treeNodeMock, xsdRootMock); | |
expect(treeNodeMock.isReadOnly()).andReturn(Boolean.valueOf(false)); | |
expect(treeNodeMock.getModelObject()).andReturn(namespacedObjectMock).anyTimes(); | |
replay(treeNodeMock, xsdRootMock); | |
controller.setResourceReadOnlyCounter(0); | |
controller.setReadOnly(false); | |
controller.setPartOfEdittedDocument(Boolean.valueOf(true)); | |
assertTrue(controller.isRenameItemEnabled(treeNodeMock)); | |
assertTrue(controller.getResourceReadOnlyCounter() == 1); | |
verify(treeNodeMock, xsdRootMock); | |
// when the treNode.isReadOnly is true | |
reset(treeNodeMock); | |
expect(treeNodeMock.isReadOnly()).andReturn(Boolean.valueOf(true)); | |
replay(treeNodeMock); | |
controller.setResourceReadOnlyCounter(0); | |
controller.setReadOnly(false); | |
controller.setPartOfEditedDocCounter(0); | |
controller.setPartOfDocumentMatch(namespacedObjectMock); | |
assertFalse(controller.isRenameItemEnabled(treeNodeMock)); | |
assertTrue(controller.getResourceReadOnlyCounter() == 1); | |
verify(treeNodeMock); | |
} | |
} | |
/* | |
* Test method for {@link | |
* org.eclipse.wst.sse.sieditor.ui.v2.dt.DataTypesFormPageController | |
* #isAddElementEnabled | |
* (org.eclipse.wst.sse.sieditor.ui.v2.dt.nodes.IDataTypesTreeNode)} | |
* | |
* TEST COVERED BY ActionsSelectionTest | |
* | |
* @SuppressWarnings("boxing") | |
* | |
* @Test public final void testIsAddElementEnabled() { | |
* TestDataTypesFormPageController controller = new | |
* TestDataTypesFormPageController(createMock(IModelRoot.class), true); | |
* | |
* assertFalse(controller.isAddElementEnabled(null)); | |
* | |
* // when the isReadOnly() method returns true IDataTypesTreeNode | |
* dtNodeMock = createMock(IDataTypesTreeNode.class); | |
* expect(dtNodeMock.isReadOnly()).andReturn(Boolean.valueOf(true)); | |
* replay(dtNodeMock); | |
* assertFalse(controller.isAddElementEnabled(dtNodeMock)); | |
* verify(dtNodeMock); | |
* | |
* // when the DTNode is not one of the allegeable for element addition | |
* reset(dtNodeMock); | |
* expect(dtNodeMock.isReadOnly()).andReturn(Boolean.valueOf(false)); | |
* IModelObject modelObjectMock = createMock(IModelObject.class); | |
* expect(dtNodeMock.getModelObject()).andReturn(modelObjectMock); | |
* replay(dtNodeMock); controller.setPartOfDocumentMatch(modelObjectMock); | |
* controller.setPartOfEdittedDocument(Boolean.valueOf(true)); | |
* assertFalse(controller.isAddElementEnabled(dtNodeMock)); | |
* verify(dtNodeMock); | |
* | |
* // when the tree node is of allegable type List<Class<? extends | |
* IDataTypesTreeNode>> allegableNodes = new ArrayList<Class<? extends | |
* IDataTypesTreeNode>>(); allegableNodes.add(IStructureTypeNode.class); | |
* allegableNodes.add(INamespaceNode.class); | |
* allegableNodes.add(IElementNode.class); for (Class<? extends | |
* IDataTypesTreeNode> type : allegableNodes) { dtNodeMock = | |
* createMock(type); | |
* expect(dtNodeMock.isReadOnly()).andReturn(Boolean.valueOf | |
* (false)).times(2); modelObjectMock = createMock(IModelObject.class); | |
* expect(dtNodeMock.getModelObject()).andReturn(modelObjectMock).times(2); | |
* replay(dtNodeMock); | |
* | |
* controller.setReadOnly(true); | |
* | |
* controller.setResourceReadOnlyCounter(0); | |
* controller.setPartOfEdittedDocument(Boolean.valueOf(true)); | |
* controller.setPartOfDocumentMatch(modelObjectMock); | |
* assertFalse(controller.isAddElementEnabled(dtNodeMock)); | |
* assertTrue(controller.getResourceReadOnlyCounter() == 1); | |
* controller.setReadOnly(false); | |
* assertTrue(controller.isAddElementEnabled(dtNodeMock)); | |
* assertTrue(controller.getResourceReadOnlyCounter() == 2); | |
* | |
* verify(dtNodeMock); } | |
* | |
* // when the model object is an element and when it is an attribute | |
* dtNodeMock = createMock(IElementNode.class); IElement elementMock = | |
* createMock(IElement.class); | |
* | |
* expect(dtNodeMock.isReadOnly()).andReturn(Boolean.valueOf(false)); | |
* expect(dtNodeMock.getModelObject()).andReturn(elementMock); | |
* | |
* expect(elementMock.getType()).andReturn(createMock(IType.class)); | |
* expect(elementMock.isAttribute()).andReturn(Boolean.valueOf(true)); | |
* | |
* replay(dtNodeMock, elementMock); // prepare the test controller | |
* controller.setReadOnly(false); | |
* controller.setPartOfDocumentMatch(elementMock); | |
* controller.setPartOfEdittedDocument(Boolean.valueOf(true)); // run the | |
* test controller.setResourceReadOnlyCounter(0); | |
* assertFalse(controller.isAddElementEnabled(dtNodeMock)); | |
* assertTrue(controller.getResourceReadOnlyCounter() == 1); | |
* | |
* verify(dtNodeMock, elementMock); | |
* | |
* // when type of the element is null reset(dtNodeMock, elementMock); | |
* expect(dtNodeMock.isReadOnly()).andReturn(Boolean.valueOf(false)); | |
* expect(dtNodeMock.getModelObject()).andReturn(elementMock); | |
* | |
* expect(elementMock.getType()).andReturn(null); | |
* expect(elementMock.isAttribute()).andReturn(Boolean.valueOf(false)); | |
* | |
* replay(dtNodeMock, elementMock); | |
* | |
* controller.setResourceReadOnlyCounter(0); | |
* assertFalse(controller.isAddElementEnabled(dtNodeMock)); | |
* assertTrue(controller.getResourceReadOnlyCounter() == 1); | |
* | |
* verify(dtNodeMock, elementMock); | |
* | |
* // when type of the element is not null, but is not anonymous | |
* reset(dtNodeMock, elementMock); | |
* expect(dtNodeMock.isReadOnly()).andReturn(Boolean.valueOf(false)); | |
* expect(dtNodeMock.getModelObject()).andReturn(elementMock); | |
* | |
* IType typeMock = createMock(IType.class); | |
* expect(elementMock.getType()).andReturn(typeMock); | |
* expect(elementMock.isAttribute()).andReturn(Boolean.valueOf(false)); | |
* expect(typeMock.isAnonymous()).andReturn(Boolean.valueOf(false)); | |
* | |
* replay(dtNodeMock, elementMock, typeMock); | |
* | |
* controller.setResourceReadOnlyCounter(0); | |
* assertFalse(controller.isAddElementEnabled(dtNodeMock)); | |
* assertTrue(controller.getResourceReadOnlyCounter() == 1); | |
* | |
* verify(dtNodeMock, elementMock, typeMock); | |
* | |
* // when the type is anonymous, but element is simple type | |
* reset(dtNodeMock, elementMock); | |
* expect(dtNodeMock.isReadOnly()).andReturn(Boolean.valueOf(false)); | |
* expect(dtNodeMock.getModelObject()).andReturn(elementMock); | |
* | |
* typeMock = createMock(ISimpleType.class); | |
* expect(elementMock.getType()).andReturn(typeMock); | |
* expect(elementMock.isAttribute()).andReturn(Boolean.valueOf(false)); | |
* expect(typeMock.isAnonymous()).andReturn(Boolean.valueOf(true)).times(2); | |
* | |
* replay(dtNodeMock, elementMock, typeMock); | |
* | |
* controller.setResourceReadOnlyCounter(0); | |
* assertFalse(controller.isAddElementEnabled(dtNodeMock)); | |
* assertTrue(controller.getResourceReadOnlyCounter() == 1); | |
* | |
* verify(dtNodeMock, elementMock, typeMock); | |
* | |
* // when the type is anonymous, but element is simple type | |
* reset(dtNodeMock, elementMock); | |
* expect(dtNodeMock.isReadOnly()).andReturn(Boolean.valueOf(false)); | |
* expect(dtNodeMock.getModelObject()).andReturn(elementMock); | |
* | |
* typeMock = createMock(IStructureType.class); | |
* expect(elementMock.getType()).andReturn(typeMock); | |
* expect(elementMock.isAttribute()).andReturn(Boolean.valueOf(false)); | |
* expect(typeMock.isAnonymous()).andReturn(Boolean.valueOf(true)).times(2); | |
* | |
* replay(dtNodeMock, elementMock, typeMock); | |
* | |
* controller.setResourceReadOnlyCounter(0); | |
* assertTrue(controller.isAddElementEnabled(dtNodeMock)); | |
* assertTrue(controller.getResourceReadOnlyCounter() == 1); | |
* | |
* verify(dtNodeMock, elementMock, typeMock); } | |
*/ | |
/** | |
* Test method for | |
* {@link org.eclipse.wst.sse.sieditor.ui.v2.dt.DataTypesFormPageController#isAddSimpleTypeEnabled(org.eclipse.wst.sse.sieditor.ui.v2.dt.nodes.IDataTypesTreeNode)} | |
* . | |
*/ | |
@SuppressWarnings("boxing") | |
@Test | |
public final void testIsAddTypeEnabled() { | |
testIsAddTypeEnabledStandaloneXSDEditor(); | |
// when the model object does not have a parent ISchema | |
final IDataTypesTreeNode dtNodeMock = createMock(IDataTypesTreeNode.class); | |
final IModelObject modelObjectMock = createMock(IModelObject.class); | |
expect(dtNodeMock.isReadOnly()).andReturn(Boolean.valueOf(false)).anyTimes(); | |
expect(dtNodeMock.getCategories()).andReturn(0).anyTimes(); | |
expect(dtNodeMock.getModelObject()).andReturn(null); | |
replay(dtNodeMock, modelObjectMock); | |
final TestDataTypesFormPageController controller = new TestDataTypesFormPageController(null, false); | |
assertTrue(controller.isAddTypeEnabled(dtNodeMock)); | |
verify(dtNodeMock, modelObjectMock); | |
// when the model object has a parent schema but the node is read only | |
reset(dtNodeMock, modelObjectMock); | |
expect(dtNodeMock.getModelObject()).andReturn(modelObjectMock); | |
expect(dtNodeMock.isReadOnly()).andReturn(Boolean.valueOf(true)); | |
expect(dtNodeMock.getCategories()).andReturn(0).anyTimes(); | |
replay(dtNodeMock, modelObjectMock); | |
assertFalse(controller.isAddTypeEnabled(dtNodeMock)); | |
verify(dtNodeMock, modelObjectMock); | |
// when the tree node is not read only but isEditAlowed() is false | |
reset(dtNodeMock, modelObjectMock); | |
expect(dtNodeMock.getModelObject()).andReturn(modelObjectMock); | |
expect(dtNodeMock.isReadOnly()).andReturn(Boolean.valueOf(false)); | |
expect(dtNodeMock.getCategories()).andReturn(0).anyTimes(); | |
replay(dtNodeMock, modelObjectMock); | |
controller.setReadOnly(true); | |
controller.setResourceReadOnlyCounter(0); | |
assertFalse(controller.isAddTypeEnabled(dtNodeMock)); | |
assertTrue(controller.getResourceReadOnlyCounter() == 1); | |
verify(dtNodeMock, modelObjectMock); | |
// when the tree node does not belong to this document | |
reset(dtNodeMock, modelObjectMock); | |
expect(dtNodeMock.getModelObject()).andReturn(modelObjectMock).anyTimes(); | |
expect(dtNodeMock.isReadOnly()).andReturn(Boolean.valueOf(false)).anyTimes(); | |
expect(dtNodeMock.getCategories()).andReturn(0).anyTimes(); | |
replay(dtNodeMock, modelObjectMock); | |
controller.setReadOnly(false); | |
controller.setResourceReadOnlyCounter(0); | |
assertTrue(controller.isAddTypeEnabled(dtNodeMock)); | |
assertTrue(controller.getResourceReadOnlyCounter() == 1); | |
verify(dtNodeMock, modelObjectMock); | |
} | |
@Test | |
public void isAddTypeEnabledOnReferencedElement() { | |
final IDataTypesTreeNode dtNodeMock = createMock(IDataTypesTreeNode.class); | |
final IModelObject modelObjectMock = createMock(IModelObject.class); | |
expect(dtNodeMock.isReadOnly()).andReturn(Boolean.valueOf(true)).anyTimes(); | |
expect(dtNodeMock.getCategories()).andReturn(ITreeNode.CATEGORY_REFERENCE).anyTimes(); | |
expect(dtNodeMock.getModelObject()).andReturn(null); | |
replay(dtNodeMock, modelObjectMock); | |
final TestDataTypesFormPageController controller = new TestDataTypesFormPageController(null, false); | |
assertTrue(controller.isAddTypeEnabled(dtNodeMock)); | |
} | |
private void testIsAddTypeEnabledStandaloneXSDEditor() { | |
TestDataTypesFormPageController controller = new TestDataTypesFormPageController(null, false); | |
assertFalse(controller.isAddTypeEnabled(null)); | |
controller = new TestDataTypesFormPageController(createMock(IModelRoot.class), false); | |
assertFalse(controller.isAddTypeEnabled(null)); | |
final IXSDModelRoot xsdRootMock = createMock(IXSDModelRoot.class); | |
expect(xsdRootMock.getSchema()).andReturn(null); | |
replay(xsdRootMock); | |
controller = new TestDataTypesFormPageController(xsdRootMock, false); | |
assertFalse(controller.isAddTypeEnabled(null)); | |
verify(xsdRootMock); | |
reset(xsdRootMock); | |
final ISchema schemaMock = createMock(ISchema.class); | |
expect(xsdRootMock.getSchema()).andReturn(schemaMock); | |
replay(xsdRootMock); | |
controller.setReadOnly(true); | |
controller.setResourceReadOnlyCounter(0); | |
assertFalse(controller.isAddTypeEnabled(null)); | |
assertTrue(controller.getResourceReadOnlyCounter() == 1); | |
verify(xsdRootMock); | |
reset(xsdRootMock, schemaMock); | |
expect(xsdRootMock.getSchema()).andReturn(schemaMock).times(2); | |
replay(xsdRootMock); | |
controller.setReadOnly(false); | |
controller.setResourceReadOnlyCounter(0); | |
assertTrue(controller.isAddTypeEnabled(null)); | |
assertTrue(controller.isAddTypeEnabled(null)); | |
assertTrue(controller.getResourceReadOnlyCounter() == 2); | |
verify(xsdRootMock); | |
} | |
@Test | |
public void isMakeGlobalEnabled() { | |
final TestDataTypesFormPageController controller = new TestDataTypesFormPageController(null, false); | |
assertFalse(controller.isConvertToGlobalTypeEnabled(null)); | |
testStructureType_MakeGlobalEnablement(controller); | |
testAnonymousElement_MakeGlobalEnablement_NoChildren(controller); | |
testAnonymousElement_MakeGlobalEnablement_WithChildren(controller); | |
testGlobalElement_MakeGlobalEnablement(controller); | |
testReadonlyGlobalElement_MakeGlobalEnablement(controller); | |
} | |
// ========================================================= | |
// make type global helpers | |
// ========================================================= | |
private void testStructureType_MakeGlobalEnablement(final TestDataTypesFormPageController controller) { | |
final IStructureType structureType = createMock(IStructureType.class); | |
expect(structureType.isElement()).andReturn(false); | |
final IDataTypesTreeNode structureTypeTreeNodeMock = createMock(IDataTypesTreeNode.class); | |
expect(structureTypeTreeNodeMock.getModelObject()).andReturn(structureType).anyTimes(); | |
expect(structureTypeTreeNodeMock.isReadOnly()).andReturn(false).anyTimes(); | |
replay(structureType, structureTypeTreeNodeMock); | |
assertFalse(controller.isConvertToGlobalTypeEnabled(structureTypeTreeNodeMock)); | |
} | |
private void testAnonymousElement_MakeGlobalEnablement_NoChildren(final TestDataTypesFormPageController controller) { | |
final IStructureType anonymousElement = createMock(IStructureType.class); | |
expect(anonymousElement.isElement()).andReturn(true); | |
expect(anonymousElement.getAllElements()).andReturn(new HashSet<IElement>()); | |
expect(anonymousElement.isAnonymous()).andReturn(true); | |
final IDataTypesTreeNode elementTreeNodeMock = createMock(IDataTypesTreeNode.class); | |
expect(elementTreeNodeMock.getModelObject()).andReturn(anonymousElement).anyTimes(); | |
expect(elementTreeNodeMock.isReadOnly()).andReturn(false).anyTimes(); | |
replay(anonymousElement, elementTreeNodeMock); | |
assertFalse(controller.isConvertToGlobalTypeEnabled(elementTreeNodeMock)); | |
} | |
private void testAnonymousElement_MakeGlobalEnablement_WithChildren(final TestDataTypesFormPageController controller) { | |
final IStructureType anonymousElement = createMock(IStructureType.class); | |
expect(anonymousElement.isElement()).andReturn(true); | |
final Set<IElement> set = new HashSet<IElement>(); | |
final IElement element = createNiceMock(IElement.class); | |
set.add(element); | |
expect(anonymousElement.getAllElements()).andReturn(set); | |
expect(anonymousElement.isAnonymous()).andReturn(true); | |
final IDataTypesTreeNode elementTreeNodeMock = createMock(IDataTypesTreeNode.class); | |
expect(elementTreeNodeMock.getModelObject()).andReturn(anonymousElement).anyTimes(); | |
expect(elementTreeNodeMock.isReadOnly()).andReturn(false).anyTimes(); | |
replay(anonymousElement, elementTreeNodeMock); | |
assertTrue(controller.isConvertToGlobalTypeEnabled(elementTreeNodeMock)); | |
} | |
private void testGlobalElement_MakeGlobalEnablement(final TestDataTypesFormPageController controller) { | |
final IStructureType globalElement = createMock(IStructureType.class); | |
expect(globalElement.isElement()).andReturn(true); | |
expect(globalElement.isAnonymous()).andReturn(false); | |
final IDataTypesTreeNode globalElementTreeNodeMock = createMock(IDataTypesTreeNode.class); | |
expect(globalElementTreeNodeMock.getModelObject()).andReturn(globalElement).anyTimes(); | |
expect(globalElementTreeNodeMock.isReadOnly()).andReturn(false).anyTimes(); | |
replay(globalElement, globalElementTreeNodeMock); | |
assertFalse(controller.isConvertToGlobalTypeEnabled(globalElementTreeNodeMock)); | |
} | |
private void testReadonlyGlobalElement_MakeGlobalEnablement(final TestDataTypesFormPageController controller) { | |
final IStructureType readOnlyAnonymous = createMock(IStructureType.class); | |
expect(readOnlyAnonymous.isElement()).andReturn(true); | |
expect(readOnlyAnonymous.isAnonymous()).andReturn(false); | |
final IDataTypesTreeNode readonlyAnonymousElementTreeNodeMock = createMock(IDataTypesTreeNode.class); | |
expect(readonlyAnonymousElementTreeNodeMock.getModelObject()).andReturn(readOnlyAnonymous).anyTimes(); | |
expect(readonlyAnonymousElementTreeNodeMock.isReadOnly()).andReturn(true).anyTimes(); | |
replay(readOnlyAnonymous, readonlyAnonymousElementTreeNodeMock); | |
assertFalse(controller.isConvertToGlobalTypeEnabled(readonlyAnonymousElementTreeNodeMock)); | |
} | |
// ========================================================= | |
// end of make type global helpers | |
// ========================================================= | |
@Test | |
public void isMakeAnonymousEnabled() { | |
final TestDataTypesFormPageController controller = new TestDataTypesFormPageController(null, false); | |
assertFalse(controller.isConvertToGlobalTypeEnabled(null)); | |
testStructureType_MakeAnonymousEnablement(controller); | |
testAnonymousElement_MakeAnonymousEnablement(controller); | |
testNonAnonymousElement_MakeAnonymousEnablement(controller); | |
testReadonlyElement_MakeAnonymousEnablement(controller); | |
} | |
// ========================================================= | |
// make anonymous helpers | |
// ========================================================= | |
private void testStructureType_MakeAnonymousEnablement(final TestDataTypesFormPageController controller) { | |
final IStructureType structureType = createMock(IStructureType.class); | |
expect(structureType.isElement()).andReturn(false); | |
final IDataTypesTreeNode structureTypeTreeNodeMock = createMock(IDataTypesTreeNode.class); | |
expect(structureTypeTreeNodeMock.getModelObject()).andReturn(structureType).anyTimes(); | |
expect(structureTypeTreeNodeMock.isReadOnly()).andReturn(false).anyTimes(); | |
replay(structureType, structureTypeTreeNodeMock); | |
assertFalse(controller.isConvertToAnonymousTypeEnabled(structureTypeTreeNodeMock)); | |
} | |
private void testAnonymousElement_MakeAnonymousEnablement(final TestDataTypesFormPageController controller) { | |
final IStructureType anonymousElement = createMock(IStructureType.class); | |
expect(anonymousElement.isElement()).andReturn(true); | |
expect(anonymousElement.isAnonymous()).andReturn(true); | |
final IDataTypesTreeNode elementTreeNodeMock = createMock(IDataTypesTreeNode.class); | |
expect(elementTreeNodeMock.getModelObject()).andReturn(anonymousElement).anyTimes(); | |
expect(elementTreeNodeMock.isReadOnly()).andReturn(false).anyTimes(); | |
replay(anonymousElement, elementTreeNodeMock); | |
assertFalse(controller.isConvertToAnonymousTypeEnabled(elementTreeNodeMock)); | |
} | |
private void testNonAnonymousElement_MakeAnonymousEnablement(final TestDataTypesFormPageController controller) { | |
final IStructureType globalTypeElement = createMock(IStructureType.class); | |
expect(globalTypeElement.isElement()).andReturn(true); | |
expect(globalTypeElement.isAnonymous()).andReturn(false); | |
final IDataTypesTreeNode globalTypeElementTreeNodeMock = createMock(IDataTypesTreeNode.class); | |
expect(globalTypeElementTreeNodeMock.getModelObject()).andReturn(globalTypeElement).anyTimes(); | |
expect(globalTypeElementTreeNodeMock.isReadOnly()).andReturn(false).anyTimes(); | |
replay(globalTypeElement, globalTypeElementTreeNodeMock); | |
assertTrue(controller.isConvertToAnonymousTypeEnabled(globalTypeElementTreeNodeMock)); | |
} | |
private void testReadonlyElement_MakeAnonymousEnablement(final TestDataTypesFormPageController controller) { | |
final IStructureType readonlyGlobalTypeElement = createMock(IStructureType.class); | |
expect(readonlyGlobalTypeElement.isElement()).andReturn(true); | |
expect(readonlyGlobalTypeElement.isAnonymous()).andReturn(false); | |
final IDataTypesTreeNode readlonlyGlobalTypeElementTreeNodeMock = createMock(IDataTypesTreeNode.class); | |
expect(readlonlyGlobalTypeElementTreeNodeMock.getModelObject()).andReturn(readonlyGlobalTypeElement).anyTimes(); | |
expect(readlonlyGlobalTypeElementTreeNodeMock.isReadOnly()).andReturn(true).anyTimes(); | |
replay(readonlyGlobalTypeElement, readlonlyGlobalTypeElementTreeNodeMock); | |
assertFalse(controller.isConvertToAnonymousTypeEnabled(readlonlyGlobalTypeElementTreeNodeMock)); | |
} | |
// ========================================================= | |
// end of make anonymous helpers | |
// ========================================================= | |
// ========================================================= | |
// inline structure type | |
// ========================================================= | |
@Test | |
public void isInlineStructureTypeEnabled() { | |
final TestDataTypesFormPageController controller = new TestDataTypesFormPageController(null, false); | |
assertFalse(controller.isConvertToAnonymousTypeWithTypeContentsEnabled(null)); | |
testStructureType_InlineStructureEnablement(controller); | |
testAnonymousElement_InlineStructureEnablement(controller); | |
testNonAnonymousElement_WithSimpleType_InlineStructureEnablement(controller); | |
testNonAnonymousElement_WithStructureType_InlineStructureEnablement(controller); | |
testReadonlyElement_InlineStructureEnablement(controller); | |
} | |
// ========================================================= | |
// inline structure helpers | |
// ========================================================= | |
private void testStructureType_InlineStructureEnablement(final TestDataTypesFormPageController controller) { | |
final IStructureType structureType = createMock(IStructureType.class); | |
expect(structureType.isElement()).andReturn(false); | |
final IDataTypesTreeNode structureTypeTreeNodeMock = createMock(IDataTypesTreeNode.class); | |
expect(structureTypeTreeNodeMock.getModelObject()).andReturn(structureType).anyTimes(); | |
expect(structureTypeTreeNodeMock.isReadOnly()).andReturn(false).anyTimes(); | |
replay(structureType, structureTypeTreeNodeMock); | |
assertFalse(controller.isConvertToAnonymousTypeWithTypeContentsEnabled(structureTypeTreeNodeMock)); | |
} | |
private void testAnonymousElement_InlineStructureEnablement(final TestDataTypesFormPageController controller) { | |
final IStructureType anonymousElement = createMock(IStructureType.class); | |
expect(anonymousElement.isElement()).andReturn(true); | |
expect(anonymousElement.isAnonymous()).andReturn(true); | |
final IDataTypesTreeNode elementTreeNodeMock = createMock(IDataTypesTreeNode.class); | |
expect(elementTreeNodeMock.getModelObject()).andReturn(anonymousElement).anyTimes(); | |
expect(elementTreeNodeMock.isReadOnly()).andReturn(false).anyTimes(); | |
replay(anonymousElement, elementTreeNodeMock); | |
assertFalse(controller.isConvertToAnonymousTypeWithTypeContentsEnabled(elementTreeNodeMock)); | |
} | |
private void testNonAnonymousElement_WithSimpleType_InlineStructureEnablement(final TestDataTypesFormPageController controller) { | |
final IStructureType globalTypeElement = createMock(IStructureType.class); | |
expect(globalTypeElement.isElement()).andReturn(true); | |
expect(globalTypeElement.isAnonymous()).andReturn(false); | |
expect(globalTypeElement.getType()).andReturn(Schema.getDefaultSimpleType()); | |
final IDataTypesTreeNode globalTypeElementTreeNodeMock = createMock(IDataTypesTreeNode.class); | |
expect(globalTypeElementTreeNodeMock.getModelObject()).andReturn(globalTypeElement).anyTimes(); | |
expect(globalTypeElementTreeNodeMock.isReadOnly()).andReturn(false).anyTimes(); | |
replay(globalTypeElement, globalTypeElementTreeNodeMock); | |
assertFalse(controller.isConvertToAnonymousTypeWithTypeContentsEnabled(globalTypeElementTreeNodeMock)); | |
} | |
private void testNonAnonymousElement_WithStructureType_InlineStructureEnablement( | |
final TestDataTypesFormPageController controller) { | |
final XSDComplexTypeDefinitionImpl complexType = new XSDComplexTypeDefinitionImpl() { | |
@Override | |
public XSDTypeDefinition getBaseType() { | |
return new XSDSimpleTypeDefinitionImpl() { | |
@Override | |
public String getName() { | |
return "anyType"; | |
} | |
}; | |
} | |
}; | |
final IType type = createMock(IType.class); | |
expect(type.getComponent()).andReturn(complexType).anyTimes(); | |
final IStructureType globalTypeElement = createMock(IStructureType.class); | |
expect(globalTypeElement.isElement()).andReturn(true); | |
expect(globalTypeElement.isAnonymous()).andReturn(false); | |
final IDataTypesTreeNode globalTypeElementTreeNodeMock = createMock(IDataTypesTreeNode.class); | |
expect(globalTypeElementTreeNodeMock.getModelObject()).andReturn(globalTypeElement).anyTimes(); | |
expect(globalTypeElementTreeNodeMock.isReadOnly()).andReturn(false).anyTimes(); | |
expect(globalTypeElement.getType()).andReturn(type).anyTimes(); | |
replay(globalTypeElement, globalTypeElementTreeNodeMock, type); | |
assertTrue(controller.isConvertToAnonymousTypeWithTypeContentsEnabled(globalTypeElementTreeNodeMock)); | |
} | |
private void testReadonlyElement_InlineStructureEnablement(final TestDataTypesFormPageController controller) { | |
final IStructureType readonlyGlobalTypeElement = createMock(IStructureType.class); | |
expect(readonlyGlobalTypeElement.isElement()).andReturn(true); | |
expect(readonlyGlobalTypeElement.isAnonymous()).andReturn(false); | |
final IDataTypesTreeNode readlonlyGlobalTypeElementTreeNodeMock = createMock(IDataTypesTreeNode.class); | |
expect(readlonlyGlobalTypeElementTreeNodeMock.getModelObject()).andReturn(readonlyGlobalTypeElement).anyTimes(); | |
expect(readlonlyGlobalTypeElementTreeNodeMock.isReadOnly()).andReturn(true).anyTimes(); | |
replay(readonlyGlobalTypeElement, readlonlyGlobalTypeElementTreeNodeMock); | |
assertFalse(controller.isConvertToAnonymousTypeWithTypeContentsEnabled(readlonlyGlobalTypeElementTreeNodeMock)); | |
} | |
// ========================================================= | |
// end of inline structure helpers | |
// ========================================================= | |
@Test | |
public void testIsCopyEnabled() { | |
final IModelRoot modelRoot = createNiceMock(IModelRoot.class); | |
replay(modelRoot); | |
final IType type = createMock(IType.class); | |
replay(type); | |
final IDataTypesTreeNode selectedNode = createMock(IDataTypesTreeNode.class); | |
expect(selectedNode.getModelObject()).andReturn(type); | |
replay(selectedNode); | |
final DataTypesFormPageController controller = new DataTypesFormPageController(modelRoot, true); | |
assertTrue(controller.isCopyEnabled(selectedNode)); | |
assertFalse(controller.isCopyEnabled(null)); | |
} | |
@Test | |
public void handleMakeAnonymous_AddChildWithOldType() { | |
testMakeAnonymous(false); | |
} | |
private void testMakeAnonymous(final boolean addChild) { | |
final ITreeNode elementNode = createMock(ITreeNode.class); | |
final IStructureType element = createMock(IStructureType.class); | |
final IXSDModelRoot modelRoot = createNiceMock(IXSDModelRoot.class); | |
final IEnvironment env = createNiceMock(IEnvironment.class); | |
expect(elementNode.getModelObject()).andReturn(element).anyTimes(); | |
expect(element.getModelRoot()).andReturn(modelRoot).anyTimes(); | |
expect(element.getName()).andReturn("").anyTimes(); | |
expect(modelRoot.getEnv()).andReturn(env); | |
replay(modelRoot, elementNode, element); | |
final boolean[] executed = { false }; | |
final DataTypesFormPageController controller = new DataTypesFormPageController(modelRoot, false) { | |
@Override | |
protected void executeSetElementAnonymousCommand(final String elementName, final boolean anonymous, | |
final AbstractNotificationOperation setAnonymousCommand, final String dialogTitle) { | |
assertTrue(setAnonymousCommand instanceof MakeGlobalTypeAnonymousCommand); | |
final MakeGlobalTypeAnonymousCommand command = (MakeGlobalTypeAnonymousCommand) setAnonymousCommand; | |
assertSame(modelRoot, command.getModelRoot()); | |
assertSame(element, command.getStructureType()); | |
assertTrue(command.isAddChild() == addChild); | |
executed[0] = true; | |
} | |
@Override | |
protected ISchema getElementSchema(final IElement element) { | |
return null; | |
} | |
}; | |
controller.handleConvertToAnonymousTypeAction(elementNode); | |
assertTrue(executed[0]); | |
} | |
@Test | |
public void handleMakeGlobal() { | |
final ITreeNode elementNode = createMock(ITreeNode.class); | |
final IStructureType element = createMock(IStructureType.class); | |
final IXSDModelRoot modelRoot = createNiceMock(IXSDModelRoot.class); | |
final IEnvironment env = createNiceMock(IEnvironment.class); | |
expect(elementNode.getModelObject()).andReturn(element).anyTimes(); | |
expect(element.getModelRoot()).andReturn(modelRoot).anyTimes(); | |
expect(element.getName()).andReturn("").anyTimes(); | |
expect(modelRoot.getEnv()).andReturn(env); | |
replay(modelRoot, element, elementNode); | |
final boolean[] executed = { false }; | |
final DataTypesFormPageController controller = new DataTypesFormPageController(modelRoot, false) { | |
@Override | |
protected void executeSetElementAnonymousCommand(final String elementName, final boolean anonymous, | |
final AbstractNotificationOperation setAnonymousCommand, final String dialogTitle) { | |
assertTrue(setAnonymousCommand instanceof MakeAnonymousTypeGlobalCommand); | |
final MakeAnonymousTypeGlobalCommand command = (MakeAnonymousTypeGlobalCommand) setAnonymousCommand; | |
assertSame(modelRoot, command.getModelRoot()); | |
assertSame(element, command.getStructureType()); | |
executed[0] = true; | |
} | |
@Override | |
protected ISchema getElementSchema(final IElement element) { | |
return null; | |
} | |
}; | |
controller.handleConvertToGlobalAction(elementNode); | |
assertTrue(executed[0]); | |
} | |
@Test | |
public void handleInlineStructureType() { | |
final ITreeNode elementNode = createMock(ITreeNode.class); | |
final IStructureType element = createMock(IStructureType.class); | |
final IXSDModelRoot modelRoot = createNiceMock(IXSDModelRoot.class); | |
final IEnvironment env = createNiceMock(IEnvironment.class); | |
expect(elementNode.getModelObject()).andReturn(element).anyTimes(); | |
expect(element.getModelRoot()).andReturn(modelRoot).anyTimes(); | |
expect(element.getName()).andReturn("").anyTimes(); | |
expect(modelRoot.getEnv()).andReturn(env); | |
replay(modelRoot, element, elementNode); | |
final boolean[] executed = { false, false }; | |
final DataTypesFormPageController controller = new DataTypesFormPageController(modelRoot, false) { | |
@Override | |
protected IStatus executeCommand(final AbstractNotificationOperation inlineCommand) { | |
assertTrue(inlineCommand instanceof InlineStructureTypeContentsCommand); | |
final InlineStructureTypeContentsCommand command = (InlineStructureTypeContentsCommand) inlineCommand; | |
assertSame(modelRoot, command.getModelRoot()); | |
assertSame(element, command.getStructureType()); | |
executed[0] = true; | |
return Status.OK_STATUS; | |
} | |
@Override | |
protected void fireTreeNodeExpandEvent(final IModelObject modelObject) { | |
executed[1] = true; | |
assertSame(element, modelObject); | |
} | |
@Override | |
protected ISchema getElementSchema(final IElement element) { | |
return null; | |
} | |
}; | |
controller.handleConvertToAnonymousTypeWithTypeContentsAction(elementNode); | |
assertTrue(executed[0]); | |
assertTrue(executed[1]); | |
} | |
// ========================================================= | |
// extract namespace | |
// ========================================================= | |
@Test | |
public void isExtractNamespaceEnabled() { | |
final TestDataTypesFormPageController controller = new TestDataTypesFormPageController(null, false); | |
assertFalse(controller.isExtractNamespaceEnabled(null)); | |
testReadonlySchema(controller); | |
testEdittableSchema(controller); | |
} | |
private void testReadonlySchema(final TestDataTypesFormPageController controller) { | |
final IDataTypesTreeNode node = createMock(IDataTypesTreeNode.class); | |
final ISchema schema = createNiceMock(ISchema.class); | |
expect(node.isReadOnly()).andReturn(true); | |
expect(node.getModelObject()).andReturn(schema); | |
replay(node); | |
assertFalse(controller.isExtractNamespaceEnabled(node)); | |
} | |
private void testEdittableSchema(final TestDataTypesFormPageController controller) { | |
final IDataTypesTreeNode node = createMock(IDataTypesTreeNode.class); | |
final ISchema schema = createNiceMock(ISchema.class); | |
expect(node.isReadOnly()).andReturn(false); | |
expect(node.getModelObject()).andReturn(schema); | |
replay(node); | |
assertTrue(controller.isExtractNamespaceEnabled(node)); | |
} | |
@Test | |
public void handleExtractNamespace() { | |
final IDataTypesTreeNode nodeMock = createMock(IDataTypesTreeNode.class); | |
final boolean[] called = { false, false }; | |
final ExtractNamespaceWizard[] extractWizard = { null }; | |
final TestDataTypesFormPageController controller = new TestDataTypesFormPageController(null, false) { | |
@Override | |
protected IStatus initWizard(final ITreeNode node, final ExtractNamespaceWizard wizard) { | |
assertFalse("open wizard called before init", called[1]); | |
called[0] = true; | |
assertSame(nodeMock, node); | |
extractWizard[0] = wizard; | |
return Status.OK_STATUS; | |
} | |
@Override | |
protected void openWizardDialog(final WizardDialog dialog) { | |
assertTrue("init was not called before open", called[0]); | |
called[1] = true; | |
assertNotNull(extractWizard[0].getWizardDialog()); | |
} | |
}; | |
controller.handleExtractNamespace(nodeMock); | |
assertTrue("init wizard was not called", called[0]); | |
assertTrue("open wizard dialog was not called", called[1]); | |
} | |
// ========================================================= | |
// inline namespace | |
// ========================================================= | |
@Test | |
public void isMakeAnInlineNamespaceEnabled() { | |
final TestDataTypesFormPageController controller = new TestDataTypesFormPageController(null, false); | |
assertFalse(controller.isMakeAnInlineNamespaceEnabled(null)); | |
testInlineNonImportedSchema(controller); | |
testInlineImportedSchema(controller); | |
} | |
private void testInlineNonImportedSchema(final TestDataTypesFormPageController controller) { | |
final IDataTypesTreeNode node = createMock(IDataTypesTreeNode.class); | |
final ISchema schema = createNiceMock(ISchema.class); | |
expect(node.getModelObject()).andReturn(schema).anyTimes(); | |
expect(node.getCategories()).andReturn(0); | |
replay(node); | |
assertFalse(controller.isMakeAnInlineNamespaceEnabled(node)); | |
} | |
private void testInlineImportedSchema(final TestDataTypesFormPageController controller) { | |
final IDataTypesTreeNode node = createMock(IDataTypesTreeNode.class); | |
final ISchema schema = createMock(ISchema.class); | |
final IWsdlModelRoot wsdlModelRoot = createMock(IWsdlModelRoot.class); | |
expect(schema.getModelRoot()).andReturn(wsdlModelRoot); | |
expect(wsdlModelRoot.getRoot()).andReturn(wsdlModelRoot); | |
expect(node.getModelObject()).andReturn(schema).anyTimes(); | |
expect(node.getCategories()).andReturn(ITreeNode.CATEGORY_IMPORTED); | |
replay(node, schema, wsdlModelRoot); | |
assertTrue(controller.isMakeAnInlineNamespaceEnabled(node)); | |
} | |
@Test | |
public void handleInlineNamespace() { | |
final ITreeNode schemaNode = createMock(ITreeNode.class); | |
final ISchema schema = createMock(ISchema.class); | |
final IWsdlModelRoot modelRoot = createMock(IWsdlModelRoot.class); | |
final IEnvironment env = createNiceMock(IEnvironment.class); | |
expect(schemaNode.getModelObject()).andReturn(schema).anyTimes(); | |
expect(schema.getModelRoot()).andReturn(modelRoot).anyTimes(); | |
expect(modelRoot.getRoot()).andReturn(modelRoot); | |
expect(modelRoot.getEnv()).andReturn(env); | |
replay(modelRoot, schema, schemaNode); | |
final boolean[] executed = { false, false }; | |
final DataTypesFormPageController controller = new DataTypesFormPageController(modelRoot, false) { | |
@Override | |
protected IStatus executeCommand(final AbstractNotificationOperation inlineCommand) { | |
assertTrue(inlineCommand instanceof InlineNamespaceCompositeCommand); | |
final InlineNamespaceCompositeCommand command = (InlineNamespaceCompositeCommand) inlineCommand; | |
assertSame(modelRoot, command.getModelRoot()); | |
assertSame(schema, command.getSourceSchema()); | |
executed[0] = true; | |
return Status.OK_STATUS; | |
} | |
@Override | |
protected void fireTreeNodeExpandEvent(final IModelObject modelObject) { | |
executed[1] = true; | |
assertNull(modelObject); | |
} | |
}; | |
controller.handleMakeAnInlineNamespace(schemaNode); | |
assertTrue(executed[0]); | |
assertTrue(executed[1]); | |
} | |
} |