net.refractions.udig.catalog.tests.ui.workflow.ConnectionFileTest.java Source code

Java tutorial

Introduction

Here is the source code for net.refractions.udig.catalog.tests.ui.workflow.ConnectionFileTest.java

Source

/*
 *    uDig - User Friendly Desktop Internet GIS client
 *    http://udig.refractions.net
 *    (C) 2012, Refractions Research Inc.
 *
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * (http://www.eclipse.org/legal/epl-v10.html), and the Refractions BSD
 * License v1.0 (http://udig.refractions.net/files/bsd3-v10.html).
 */
package net.refractions.udig.catalog.tests.ui.workflow;

import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail;

import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import net.refractions.udig.catalog.internal.ui.ConnectionPageDecorator;
import net.refractions.udig.catalog.tests.ui.CatalogTestsUIPlugin;
import net.refractions.udig.catalog.ui.ConnectionFactoryManager;
import net.refractions.udig.catalog.ui.UDIGConnectionFactoryDescriptor;
import net.refractions.udig.catalog.ui.workflow.BasicWorkflowWizardPageFactory;
import net.refractions.udig.catalog.ui.workflow.EndConnectionState;
import net.refractions.udig.catalog.ui.workflow.State;
import net.refractions.udig.catalog.ui.workflow.Workflow;
import net.refractions.udig.catalog.ui.workflow.WorkflowWizard;
import net.refractions.udig.catalog.ui.workflow.WorkflowWizardDialog;
import net.refractions.udig.catalog.ui.workflow.WorkflowWizardPageProvider;

import org.eclipse.core.runtime.FileLocator;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

@SuppressWarnings("nls")
public class ConnectionFileTest {
    Shell shell;

    WorkflowWizard wizard;

    WorkflowWizardDialog dialog;

    EndConnectionState state;

    ConnectionPageDecorator page;

    private Workflow workflow;

    @Before
    public void setUp() throws Exception {
        List<String> l = new ArrayList<String>();
        l.add("net.refractions.udig.catalog.ui.openFileConnection");

        UDIGConnectionFactoryDescriptor d = ConnectionFactoryManager.instance().getConnectionFactoryDescriptors(l)
                .get(0);
        state = new EndConnectionState(d, true);
        page = new ConnectionPageDecorator();

        Map<Class<? extends State>, WorkflowWizardPageProvider> map = new HashMap<Class<? extends State>, WorkflowWizardPageProvider>();
        map.put(state.getClass(), new BasicWorkflowWizardPageFactory(page));
        map.put(SimpleState.class, new SimplePage());

        workflow = new Workflow();
        workflow.setStates(new State[] { state, new SimpleState() });
        wizard = new WorkflowWizard(workflow, map);

        shell = new Shell(Display.getDefault());
        dialog = new WorkflowWizardDialog(shell, wizard);
        dialog.setBlockOnOpen(true);
    }

    @After
    public void tearDown() throws Exception {
        if (!shell.isDisposed())
            shell.dispose();
    }

    @Test
    public void testButtonState() {
        Assertion a1 = new Assertion() {
            @Override
            public void run() {
                Button next = DialogDriver.findButton(dialog, IDialogConstants.NEXT_ID);
                //fail = next.isEnabled();
            }
        };
        Object[] actions = new Object[] { a1, IDialogConstants.CANCEL_ID };

        DialogDriver driver = new DialogDriver(dialog, actions);
        driver.schedule();

        dialog.open();

        assertFalse(a1.fail);
        driver.cancel();
    }

    @Test
    public void testWorkbenchSelection() {
        // create a workbench selection
        try {
            URL url = CatalogTestsUIPlugin.getDefault().getBundle().getEntry("data/");
            url = FileLocator.toFileURL(new URL(url, "streams.shp"));

            workflow.setContext(url);
        } catch (Exception e) {
            e.printStackTrace();
            fail();
        }

        Assertion a1 = new Assertion() {
            @Override
            public void run() {
                Button next = DialogDriver.findButton(dialog, IDialogConstants.NEXT_ID);
                fail = !next.isEnabled();
            }
        };
        Object[] actions = new Object[] { a1, IDialogConstants.CANCEL_ID };

        DialogDriver driver = new DialogDriver(dialog, actions);
        driver.schedule();

        dialog.open();

        assertFalse(a1.fail);
        driver.cancel();
    }

    @Test
    public void testConnection() {
        //create a workbench selection
        try {
            URL url = CatalogTestsUIPlugin.getDefault().getBundle().getEntry("data/");
            url = FileLocator.toFileURL(new URL(url, "streams.shp"));
            workflow.setContext(url);
        } catch (Exception e) {
            e.printStackTrace();
            fail();
        }

        Object[] actions = new Object[] { IDialogConstants.NEXT_ID, IDialogConstants.CANCEL_ID };

        DialogDriver driver = new DialogDriver(dialog, actions);
        driver.schedule();

        dialog.open();
        driver.cancel();

        assertNotNull(state.getServices());
        assertFalse(state.getServices().isEmpty());

    }
}