blob: d16b031506005c5c5a1748a41dadde463349e56a [file] [log] [blame]
/*******************************************************************************
* <copyright>
*
* Copyright (c) 2005, 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:
* Stefan Dimov - initial API, implementation and documentation
*
* </copyright>
*
*******************************************************************************/
package org.eclipse.jpt.jpadiagrameditor.ui.tests.internal.editor;
import static org.easymock.EasyMock.eq;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.isA;
import static org.easymock.EasyMock.replay;
import static org.easymock.EasyMock.verify;
import static org.junit.Assert.assertNotNull;
import org.easymock.EasyMock;
import org.eclipse.gef.EditPart;
import org.eclipse.graphiti.mm.pictograms.PictogramElement;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jpt.jpa.core.JpaStructureNode;
import org.eclipse.jpt.jpa.ui.internal.selection.JpaSelection;
import org.eclipse.jpt.jpa.ui.internal.selection.JpaSelectionManager;
import org.eclipse.jpt.jpa.ui.internal.selection.JpaSelectionParticipant;
import org.eclipse.jpt.jpadiagrameditor.ui.internal.JPADiagramEditor;
import org.eclipse.jpt.jpadiagrameditor.ui.internal.JPADiagramEditorPlugin;
import org.eclipse.jpt.jpadiagrameditor.ui.internal.provider.IJPAEditorFeatureProvider;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.IWorkbenchPartSite;
import org.eclipse.ui.IWorkbenchWindow;
import org.junit.Test;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
import org.osgi.framework.BundleListener;
@SuppressWarnings("restriction")
public class EditorTest {
@Test
public void testJPADiagramEditorCreation() {
JPADiagramEditor ed = new JPADiagramEditor();
assertNotNull(ed);
}
@Test
public void testJPADiagramEditorPlugin() {
JPADiagramEditorPlugin plugin = new JPADiagramEditorPlugin();
BundleContext bc = EasyMock.createMock(BundleContext.class);
Bundle bundle = EasyMock.createMock(Bundle.class);
EasyMock.expect(bundle.getSymbolicName()).andStubReturn("");
EasyMock.expect(bc.getBundle()).andStubReturn(bundle);
bc.addBundleListener(EasyMock.isA(BundleListener.class));
bc.removeBundleListener(EasyMock.isA(BundleListener.class));
EasyMock.replay(bc, bundle);
try {
plugin.start(bc);
plugin.stop(bc);
} catch (Exception e) {
e.printStackTrace();
}
EasyMock.verify(bc);
}
@Test
public void testSelectionChanged() {
final IJPAEditorFeatureProvider provider = EasyMock
.createMock(IJPAEditorFeatureProvider.class);
IWorkbenchPart part = replayPart();
PictogramElement pe = EasyMock.createMock(PictogramElement.class);
replay(pe);
EditPart editPart = EasyMock.createMock(EditPart.class);
expect(editPart.getModel()).andReturn(pe);
replay(editPart);
JpaStructureNode jpaNodeToBeSelected = EasyMock
.createMock(JpaStructureNode.class);
expect(provider.getBusinessObjectForPictogramElement(pe)).andReturn(
jpaNodeToBeSelected);
replay(provider);
// test
JpaSelectionManager manager = EasyMock
.createMock(JpaSelectionManager.class);
manager.select(isA(JpaSelection.class),
(JpaSelectionParticipant) eq(null));
replay(manager);
JPADiagramEditor.ISelectionManagerFactory factory = EasyMock
.createMock(JPADiagramEditor.ISelectionManagerFactory.class);
expect(factory.getSelectionManager(isA(IWorkbenchWindow.class)))
.andReturn(manager);
replay(factory);
JPADiagramEditor editor = createEditor(provider, factory);
// test
editor.selectionChanged(part, new StructuredSelection(editPart));
verify(manager);
}
private JPADiagramEditor createEditor(final IJPAEditorFeatureProvider provider,
JPADiagramEditor.ISelectionManagerFactory factory) {
IWorkbenchPage page = EasyMock.createMock(IWorkbenchPage.class);
expect(page.isPartVisible(isA(IWorkbenchPart.class)))
.andReturn(false);
expect(page.getActiveEditor()).andStubReturn(null);
replay(page);
final IWorkbenchPartSite site = EasyMock
.createMock(IWorkbenchPartSite.class);
expect(site.getPage()).andStubReturn(page);
replay(site);
JPADiagramEditor editor = new JPADiagramEditor(factory) {
@Override
public IJPAEditorFeatureProvider getFeatureProvider() {
return provider;
}
public IWorkbenchPartSite getSite() {
return site;
}
};
return editor;
}
private IWorkbenchPart replayPart() {
IWorkbenchWindow window = EasyMock.createMock(IWorkbenchWindow.class);
replay(window);
IWorkbenchPage page = EasyMock.createMock(IWorkbenchPage.class);
IWorkbenchPartSite site = EasyMock.createMock(IWorkbenchPartSite.class);
expect(site.getWorkbenchWindow()).andReturn(window);
expect(site.getPage()).andStubReturn(page);
replay(site);
IWorkbenchPart part = EasyMock.createMock(IWorkbenchPart.class);
expect(part.getSite()).andStubReturn(site);
expect(page.isPartVisible(isA(IWorkbenchPart.class)))
.andReturn(false);
expect(page.getActiveEditor()).andReturn(null);
replay(page);
replay(part);
return part;
}
@Test
public void testSelectionChangedTextSelection() {
JPADiagramEditor editor = createEditor(null, null);
editor.selectionChanged(null, new ISelection() {
public boolean isEmpty() {
return false;
}
});
}
@Test
public void testSelectionChangedNotEditPart() {
JPADiagramEditor editor = createEditor(null, null);
editor.selectionChanged(null, new StructuredSelection(new Object()));
}
}