/*******************************************************************************
* 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.extract;
import java.text.MessageFormat;
import java.util.Set;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.TypedListener;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;
import org.eclipse.wst.sse.sieditor.ui.v2.dt.extractwizard.ExtractNamespaceWizard;
import org.eclipse.wst.sse.sieditor.ui.v2.dt.extractwizard.listeners.ExtractSchemaTextFieldModifyListener;
import org.eclipse.wst.sse.sieditor.ui.v2.dt.extractwizard.pages.ExtractSchemaWizardPage;
import org.eclipse.wst.sse.sieditor.ui.v2.dt.extractwizard.pages.SchemaDependenciesWizardPage;
import org.eclipse.wst.sse.sieditor.ui.v2.dt.extractwizard.utils.ExtractSchemaWizardConstants;
import org.eclipse.wst.sse.sieditor.test.util.ResourceUtils;
import org.eclipse.wst.sse.sieditor.test.util.SIEditorBaseTest;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.eclipse.wst.sse.sieditor.command.emf.wsdl.extract.dependencies.SchemaNode;
import org.eclipse.wst.sse.sieditor.model.api.IWsdlModelRoot;
import org.eclipse.wst.sse.sieditor.model.xsd.api.ISchema;
import org.eclipse.wst.sse.sieditor.ui.ServiceInterfaceEditor;
import org.eclipse.wst.sse.sieditor.ui.i18n.Messages;
public class ExtractNamespaceWizardTest extends SIEditorBaseTest {
private IWsdlModelRoot wsdlModelRoot;
private WizardDialog dialog;
@Before
@Override
public void setUp() throws Exception {
super.setUp();
if (wsdlModelRoot == null) {
wsdlModelRoot = (IWsdlModelRoot) getModelRoot("pub/extract/NamespaceImportsWSDL.wsdl", "NamespaceImportsWSDL.wsdl",
ServiceInterfaceEditor.EDITOR_ID);
ResourceUtils.copyFileIntoTestProject("pub/extract/NamespaceImportsXSD.xsd", Document_FOLDER_NAME, this.getProject(),
"NamespaceImportsXSD.xsd");
getProject().refreshLocal(IResource.DEPTH_INFINITE, new NullProgressMonitor());
}
}
@Test
public void testCreateWizard_WithoutDependentSchemas() throws Exception {
final ISchema schema = wsdlModelRoot.getDescription().getSchema("http://www.example.org/NewWSDLFile/")[0];
final ExtractNamespaceWizardExpose wizard = createWizard(schema);
final SchemaNode schemaNode = wizard.getSchemaNode();
assertNotNull(schemaNode);
final Set<SchemaNode> dependenciesSet = wizard.getDependenciesSet();
assertNotNull(dependenciesSet);
final ExtractSchemaWizardPage extractSchemaWizardPage = wizard.getExtractSchemaWizardPage();
final SchemaDependenciesWizardPage schemaDependenciesWizardPage = wizard.getSchemaDependenciesWizardPage();
assertPagesInitialState(extractSchemaWizardPage, schemaDependenciesWizardPage, schema);
assertFalse(extractSchemaWizardPage.canFlipToNextPage());
final Text saveLocationText = extractSchemaWizardPage.getSaveLocationText();
assertEquals("/SIEditorBaseTest/data/ExtractedSchema1.xsd", saveLocationText.getText());
final Listener[] listeners = saveLocationText.getListeners(SWT.Modify);
assertEquals(1, listeners.length);
assertTrue(listeners[0] instanceof TypedListener);
assertTrue(((TypedListener) listeners[0]).getEventListener() instanceof ExtractSchemaTextFieldModifyListener);
}
@Test
public void createWizard_WithDependentSchemas() throws Exception {
final ISchema schema = wsdlModelRoot.getDescription().getSchema("http://namespace1")[0];
final ExtractNamespaceWizardExpose wizard = createWizard(schema);
final SchemaNode schemaNode = wizard.getSchemaNode();
assertNotNull(schemaNode);
final Set<SchemaNode> dependenciesSet = wizard.getDependenciesSet();
assertNotNull(dependenciesSet);
final ExtractSchemaWizardPage extractSchemaWizardPage = wizard.getExtractSchemaWizardPage();
final SchemaDependenciesWizardPage schemaDependenciesWizardPage = wizard.getSchemaDependenciesWizardPage();
assertPagesInitialState(extractSchemaWizardPage, schemaDependenciesWizardPage, schema);
assertTrue(extractSchemaWizardPage.canFlipToNextPage());
final Text saveLocationText = extractSchemaWizardPage.getSaveLocationText();
assertEquals("/SIEditorBaseTest/data/ExtractedSchema1.xsd", saveLocationText.getText());
final Listener[] listeners = saveLocationText.getListeners(SWT.Modify);
assertEquals(1, listeners.length);
assertTrue(listeners[0] instanceof TypedListener);
assertTrue(((TypedListener) listeners[0]).getEventListener() instanceof ExtractSchemaTextFieldModifyListener);
}
private void assertPagesInitialState(final ExtractSchemaWizardPage extractSchemaWizardPage,
final SchemaDependenciesWizardPage schemaDependenciesWizardPage, final ISchema schema) {
assertNotNull(extractSchemaWizardPage);
assertEquals(Messages.ExtractSchemaWizardPage_page_title, extractSchemaWizardPage.getTitle());
assertEquals(MessageFormat.format(Messages.ExtractSchemaWizardPage_page_description, schema.getNamespace()),
extractSchemaWizardPage.getDescription());
assertTrue(extractSchemaWizardPage.isPageComplete());
assertNotNull(schemaDependenciesWizardPage);
assertEquals(Messages.SchemaDependenciesWizardPage_page_title, schemaDependenciesWizardPage.getTitle());
assertEquals(MessageFormat.format(Messages.SchemaDependenciesWizardPage_page_description, schema.getNamespace()),
schemaDependenciesWizardPage.getDescription());
assertTrue(schemaDependenciesWizardPage.isPageComplete());
}
private ExtractNamespaceWizardExpose createWizard(final ISchema schema) {
final IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
final ExtractNamespaceWizardExpose wizard = new ExtractNamespaceWizardExpose();
wizard.init(schema);
dialog = new WizardDialog(window.getShell(), wizard);
dialog.setPageSize(ExtractSchemaWizardConstants.EXTRACT_WIZARD_DIALOG_WIDTH,
ExtractSchemaWizardConstants.EXTRACT_WIZARD_DIALOG_HEIGHT);
wizard.setWizardDialog(dialog);
wizard.addPages();
wizard.createPageControls(window.getShell());
return wizard;
}
@After
@Override
public void tearDown() throws Exception {
if (dialog != null) {
dialog.close();
}
super.tearDown();
}
// =========================================================
// mock
// =========================================================
private class ExtractNamespaceWizardExpose extends ExtractNamespaceWizard {
@Override
public SchemaNode getSchemaNode() {
return super.getSchemaNode();
}
@Override
public Set<SchemaNode> getDependenciesSet() {
return super.getDependenciesSet();
}
}
}