blob: a031912a14c6ce2bd92ad16808c63ec4c2454114 [file] [log] [blame]
/*******************************************************************************
* 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;
import static org.easymock.EasyMock.createMock;
import static org.easymock.EasyMock.createNiceMock;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.replay;
import static org.easymock.EasyMock.verify;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.forms.IFormPart;
import org.eclipse.wst.sse.sieditor.ui.v2.AbstractDetailsPage;
import org.eclipse.wst.sse.sieditor.ui.v2.IFormPageController;
import org.eclipse.wst.sse.sieditor.ui.v2.nodes.ITreeNode;
import org.eclipse.wst.sse.sieditor.ui.v2.sections.IDetailsPageSection;
import org.junit.Before;
import org.junit.Test;
public class TestAbstractDetailsPage {
private AbstractDetailsPageChild page;
private IDetailsPageSection section1;
private IDetailsPageSection section2;
@Before
public void setUp() {
section1 = createMock(IDetailsPageSection.class);
section2 = createMock(IDetailsPageSection.class);
final List<IDetailsPageSection> sections = new ArrayList<IDetailsPageSection>();
sections.add(section1);
sections.add(section2);
final IFormPageController controller = createMock(IFormPageController.class);
replay(controller);
page = new AbstractDetailsPageChild(controller);
page.setSections(sections);
}
@Test
public void testIsDirtyFalse() {
expect(section1.isDirty()).andReturn(false).anyTimes();
replay(section1);
expect(section2.isDirty()).andReturn(false).anyTimes();
replay(section2);
assertFalse(page.isDirty());
verify(section1);
verify(section2);
}
@Test
public void testIsDirtyTrue() {
expect(section1.isDirty()).andReturn(false).anyTimes();
replay(section1);
expect(section2.isDirty()).andReturn(true).anyTimes();
replay(section2);
assertTrue(page.isDirty());
verify(section1);
verify(section2);
}
@Test
public void testIsStaleFalse() {
expect(section1.isStale()).andReturn(false).anyTimes();
replay(section1);
expect(section2.isStale()).andReturn(false).anyTimes();
replay(section2);
assertFalse(page.isStale());
verify(section1);
verify(section2);
}
@Test
public void testIsStaleTrue() {
expect(section1.isStale()).andReturn(false).anyTimes();
replay(section1);
expect(section2.isStale()).andReturn(true).anyTimes();
replay(section2);
assertTrue(page.isStale());
verify(section1);
verify(section2);
}
@Test
public void testRefresh() {
section1.refresh();
replay(section1);
section2.refresh();
replay(section2);
page.refresh();
verify(section1);
verify(section2);
}
@Test
public void testSelectionChanged() {
final IFormPart part = createMock(IFormPart.class);
replay(part);
final ISelection selection = createMock(ISelection.class);
replay(selection);
section1.selectionChanged(part, selection);
replay(section1);
section2.selectionChanged(part, selection);
replay(section2);
page.selectionChanged(part, selection);
verify(section1);
verify(section2);
}
@Test
public void testCreateContents() {
final Display display = Display.getDefault();
final Shell shell = new Shell(display);
page.createContents(shell);
assertTrue(page.createSections_called);
assertEquals(GridLayout.class, shell.getLayout().getClass());
}
@Test
public void testIsReadOnlyForReadonlyResource() {
final IFormPageController controller = createMock(IFormPageController.class);
expect(controller.isResourceReadOnly()).andReturn(true);
expect(controller.isPartOfEdittedDocument(null)).andReturn(true);
replay(controller);
final ITreeNode node = createNiceMock(ITreeNode.class);
replay(node);
final AbstractDetailsPageChild pageToTest = new AbstractDetailsPageChild(controller);
pageToTest.setTreeNode(node);
assertTrue(pageToTest.isReadOnly());
}
@Test
public void testIsReadOnlyForModelObjectInOtherDomain() {
final IFormPageController controller = createMock(IFormPageController.class);
expect(controller.isResourceReadOnly()).andReturn(false);
replay(controller);
final ITreeNode node = createNiceMock(ITreeNode.class);
expect(node.isReadOnly()).andReturn(true).anyTimes();
replay(node);
final AbstractDetailsPageChild pageToTest = new AbstractDetailsPageChild(controller);
pageToTest.setTreeNode(node);
assertTrue(pageToTest.isReadOnly());
}
private class AbstractDetailsPageChild extends AbstractDetailsPage {
public boolean createSections_called = false;
public AbstractDetailsPageChild(final IFormPageController controller) {
super(controller);
}
@Override
public void createSections(final Composite parent) {
createSections_called = true;
}
@Override
public void setSections(final List<IDetailsPageSection> sections) {
super.setSections(sections);
}
public void setTreeNode(final ITreeNode node) {
super.treeNode = node;
}
}
}