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

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

/*
*  soapUI, copyright (C) 2004-2011 eviware.com
*
*  soapUI is free software; you can redistribute it and/or modify it under the
*  terms of version 2.1 of the GNU Lesser General Public License as published by
*  the Free Software Foundation.
*
*  soapUI is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
*  even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*  See the GNU Lesser General Public License for more details at gnu.org.
*/

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

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

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;

/**
* 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 );
  }

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

    if( project.getTestSuiteCount() == 0 )
    {
      return addNewTestSuiteAndTestCase( project );
    }

    for( int c = 0; c < project.getTestSuiteCount(); c++ )
    {
      WsdlTestSuite testSuite = ( WsdlTestSuite )project.getTestSuiteAt( c );
      for( int i = 0; i < testSuite.getTestCaseCount(); i++ )
      {
        testCase = ( WsdlTestCase )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 = ( WsdlTestSuite )project.getTestSuiteAt( testSuiteNames.indexOf( selection ) );

      String name = UISupport.prompt( "Enter name for TestCase create", "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 );
        }
        else
        {
          String name = UISupport.prompt( "Enter name for TestCase create", "Create TestCase", "TestCase "
              + ( testSuite.getTestCaseCount() + 1 ) );
          if( name == null )
            return null;

          return testSuite.addNewTestCase( name );
        }
      }
    }

    return testCase;
  }

  protected WsdlTestCase addNewTestSuiteAndTestCase( WsdlProject project )
  {
    String testSuiteName = UISupport.prompt( "Missing TestSuite in project, enter name to create",
        "Create TestSuite", "TestSuite " + ( project.getTestSuiteCount() + 1 ) );
    if( testSuiteName == null )
      return null;

    String testCaseName = UISupport.prompt( "Enter name for TestCase create", "Create TestCase", "TestCase 1" );
    if( testCaseName == null )
      return null;

    WsdlTestSuite testSuite = ( WsdlTestSuite )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.