Package com.eviware.soapui.impl.wsdl.actions.support

Source Code of com.eviware.soapui.impl.wsdl.actions.support.AbstractAddToTestCaseAction

/*
* Copyright 2004-2014 SmartBear Software
*
* Licensed under the EUPL, Version 1.1 or - as soon as they will be approved by the European Commission - subsequent
* versions of the EUPL (the "Licence");
* You may not use this work except in compliance with the Licence.
* You may obtain a copy of the Licence at:
*
* http://ec.europa.eu/idabc/eupl
*
* Unless required by applicable law or agreed to in writing, software distributed under the Licence is
* distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the Licence for the specific language governing permissions and limitations
* under the Licence.
*/

package com.eviware.soapui.impl.wsdl.actions.support;

import com.eviware.soapui.SoapUI;
import com.eviware.soapui.impl.wsdl.WsdlProject;
import com.eviware.soapui.impl.wsdl.WsdlTestSuite;
import com.eviware.soapui.impl.wsdl.testcase.WsdlTestCase;
import com.eviware.soapui.model.ModelItem;
import com.eviware.soapui.model.testsuite.TestSuite;
import com.eviware.soapui.support.UISupport;
import com.eviware.soapui.support.action.support.AbstractSoapUIAction;

import java.util.ArrayList;
import java.util.List;

/**
* Base class for actions that add TestSteps to a TestCase
*
* @author ole.matzura
*/

public abstract class AbstractAddToTestCaseAction<T extends ModelItem> extends AbstractSoapUIAction<T> {
    public AbstractAddToTestCaseAction(String name, String description) {
        super(name, description);
    }

    public static WsdlTestCase getTargetTestCase(WsdlProject project) {
        List<WsdlTestCase> testCases = new ArrayList<WsdlTestCase>();
        List<WsdlTestSuite> testSuites = new ArrayList<WsdlTestSuite>();
        List<String> testCaseNames = new ArrayList<String>();
        WsdlTestCase testCase;

        if (project.getTestSuiteCount() == 0) {
            return addNewTestSuiteAndTestCase(project, "Missing TestSuite in project, enter name to create");
        }

        for (int c = 0; c < project.getTestSuiteCount(); c++) {
            WsdlTestSuite testSuite = project.getTestSuiteAt(c);
            for (int i = 0; i < testSuite.getTestCaseCount(); i++) {
                testCase = testSuite.getTestCaseAt(i);

                testCases.add(testCase);
                testCaseNames.add((testCaseNames.size() + 1) + ": " + testSuite.getName() + " - " + testCase.getName());
                testSuites.add(testSuite);
            }

            testCases.add(null);
            testSuites.add(testSuite);
            testCaseNames.add((testCaseNames.size() + 1) + ": " + testSuite.getName() + " -> Create new TestCase");
        }

        if (testCases.size() == 0) {
            List<String> testSuiteNames = new ArrayList<String>();

            for (int c = 0; c < project.getTestSuiteCount(); c++) {
                TestSuite testSuite = project.getTestSuiteAt(c);
                testSuiteNames.add((testSuiteNames.size() + 1) + ": " + testSuite.getName());
            }

            String selection = (String) UISupport.prompt("Select TestSuite to create TestCase in", "Select TestSuite",
                    testSuiteNames.toArray());
            if (selection == null) {
                return null;
            }

            WsdlTestSuite testSuite = project.getTestSuiteAt(testSuiteNames.indexOf(selection));

            String name = UISupport.prompt("Specify name of TestCase", "Create TestCase",
                    "TestCase " + (testSuite.getTestCaseCount() + 1));
            if (name == null) {
                return null;
            }

            return testSuite.addNewTestCase(name);
        } else {
            testCases.add(null);
            testSuites.add(null);
            testCaseNames.add((testCaseNames.size() + 1) + ": -> Create new TestSuite");

            String selection = (String) UISupport.prompt("Select TestCase", "Select TestCase", testCaseNames.toArray());
            if (selection == null) {
                return null;
            }

            testCase = testCases.get(testCaseNames.indexOf(selection));
            while (testCase != null
                    && (SoapUI.getTestMonitor().hasRunningLoadTest(testCase) || SoapUI.getTestMonitor()
                    .hasRunningSecurityTest(testCase))) {
                UISupport.showErrorMessage("Can not add to TestCase that is currently LoadTesting or SecurityTesting");

                selection = (String) UISupport.prompt("Select TestCase", "Select TestCase", testCaseNames.toArray());
                if (selection == null) {
                    return null;
                }

                testCase = testCases.get(testCaseNames.indexOf(selection));
            }

            // selected create new?
            if (testCase == null) {
                WsdlTestSuite testSuite = testSuites.get(testCaseNames.indexOf(selection));

                // selected create new testsuite?
                if (testSuite == null) {
                    return addNewTestSuiteAndTestCase(project, "Specify name of TestSuite");
                } else {
                    String name = UISupport.prompt("Specify name of TestCase", "Create TestCase", "TestCase "
                            + (testSuite.getTestCaseCount() + 1));
                    if (name == null) {
                        return null;
                    }

                    return testSuite.addNewTestCase(name);
                }
            }
        }

        return testCase;
    }

    protected static WsdlTestCase addNewTestSuiteAndTestCase(WsdlProject project, String questionText) {
        String testSuiteName = UISupport.prompt(questionText,
                "Create TestSuite", "TestSuite " + (project.getTestSuiteCount() + 1));
        if (testSuiteName == null) {
            return null;
        }

        String testCaseName = UISupport.prompt("Specify name of TestCase", "Create TestCase", "TestCase 1");
        if (testCaseName == null) {
            return null;
        }

        WsdlTestSuite testSuite = project.addNewTestSuite(testSuiteName);
        return testSuite.addNewTestCase(testCaseName);
    }
}
TOP

Related Classes of com.eviware.soapui.impl.wsdl.actions.support.AbstractAddToTestCaseAction

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.