Package net.sourceforge.squirrel_sql.client

Source Code of net.sourceforge.squirrel_sql.client.AppTestUtil

/*
* Copyright (C) 2009 Rob Manning
* manningr@users.sourceforge.net
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/
package net.sourceforge.squirrel_sql.client;


import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.expectLastCall;
import static org.easymock.EasyMock.isA;
import static org.easymock.classextension.EasyMock.createMock;
import static org.easymock.classextension.EasyMock.createNiceMock;
import static org.easymock.classextension.EasyMock.replay;

import java.beans.PropertyChangeListener;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.swing.Action;

import net.sourceforge.squirrel_sql.client.IApplication;
import net.sourceforge.squirrel_sql.client.action.ActionCollection;
import net.sourceforge.squirrel_sql.client.action.SquirrelAction;
import net.sourceforge.squirrel_sql.client.gui.db.ISQLAliasExt;
import net.sourceforge.squirrel_sql.client.gui.db.SQLAlias;
import net.sourceforge.squirrel_sql.client.gui.db.SQLAliasColorProperties;
import net.sourceforge.squirrel_sql.client.gui.db.SQLAliasConnectionProperties;
import net.sourceforge.squirrel_sql.client.gui.session.SessionInternalFrame;
import net.sourceforge.squirrel_sql.client.gui.session.SessionPanel;
import net.sourceforge.squirrel_sql.client.plugin.IPlugin;
import net.sourceforge.squirrel_sql.client.preferences.SquirrelPreferences;
import net.sourceforge.squirrel_sql.client.resources.SquirrelResources;
import net.sourceforge.squirrel_sql.client.session.IAllowedSchemaChecker;
import net.sourceforge.squirrel_sql.client.session.ISQLEntryPanel;
import net.sourceforge.squirrel_sql.client.session.ISQLPanelAPI;
import net.sourceforge.squirrel_sql.client.session.ISession;
import net.sourceforge.squirrel_sql.client.session.SessionManager;
import net.sourceforge.squirrel_sql.client.session.action.DeleteSelectedTablesAction;
import net.sourceforge.squirrel_sql.client.session.action.EditWhereColsAction;
import net.sourceforge.squirrel_sql.client.session.action.FilterObjectsAction;
import net.sourceforge.squirrel_sql.client.session.action.RefreshObjectTreeAction;
import net.sourceforge.squirrel_sql.client.session.action.RefreshObjectTreeItemAction;
import net.sourceforge.squirrel_sql.client.session.action.RefreshSchemaInfoAction;
import net.sourceforge.squirrel_sql.client.session.action.SQLFilterAction;
import net.sourceforge.squirrel_sql.client.session.event.ISQLResultExecuterTabListener;
import net.sourceforge.squirrel_sql.client.session.mainpanel.ISQLResultExecuter;
import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.INodeExpander;
import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.ObjectTreePanel;
import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.IObjectTab;
import net.sourceforge.squirrel_sql.client.session.properties.SessionProperties;
import net.sourceforge.squirrel_sql.fw.FwTestUtil;
import net.sourceforge.squirrel_sql.fw.id.IIdentifier;
import net.sourceforge.squirrel_sql.fw.sql.DatabaseObjectType;
import net.sourceforge.squirrel_sql.fw.sql.IQueryTokenizer;
import net.sourceforge.squirrel_sql.fw.sql.ISQLConnection;
import net.sourceforge.squirrel_sql.fw.sql.ISQLDatabaseMetaData;
import net.sourceforge.squirrel_sql.fw.sql.QueryTokenizer;
import net.sourceforge.squirrel_sql.fw.sql.SQLDriverManager;
import net.sourceforge.squirrel_sql.fw.sql.SQLDriverPropertyCollection;
import net.sourceforge.squirrel_sql.fw.util.ExceptionFormatter;
import net.sourceforge.squirrel_sql.fw.util.TaskThreadPool;

import org.easymock.classextension.EasyMock;

import utils.EasyMockHelper;

/**
* This is intended to provide helper methods to build EasyMock mocks for classes and interfaces located
* in the App module.  Fw mocks should be located in the corresponds FwTestUtil class, where as plugins
* mocks should be relocated to individual plugin TestUtil helpers.
*/
public class AppTestUtil
{

  /**
   * Calls replay by default.
   *
   * @param dbName
   * @return
   * @throws SQLException
   */
  public static ISession getEasyMockSession(String dbName) throws SQLException
  {
    return AppTestUtil.getEasyMockSession(dbName, true);
  }

  public static ISession getEasyMockSession(String dbName, boolean replay) throws SQLException
  {
    ISQLDatabaseMetaData md = FwTestUtil.getEasyMockSQLMetaData(dbName, "jdbc:oracle");
    ISession session = AppTestUtil.getEasyMockSession(md, replay);
    return session;
  }

  public static ISession getEasyMockSession(ISQLDatabaseMetaData md, boolean replay)
  {
    ISession session = null;
    try
    {
      ISQLConnection con = FwTestUtil.getEasyMockSQLConnection();
      session = getEasyMockSession(md, con, false);
      if (replay)
      {
        replay(session);
      }
    }
    catch (Exception e)
    {
      e.printStackTrace();
    }
    return session;
  }

  public static ISession getEasyMockSession(ISQLDatabaseMetaData md, ISQLConnection con, boolean replay)
  {
    ISession session = createMock(ISession.class);
    IQueryTokenizer tokenizer = FwTestUtil.getEasyMockQueryTokenizer();
    // IMessageHandler messageHandler = getEasyMockMessageHandler();

    expect(session.getMetaData()).andReturn(md).anyTimes();
    expect(session.getApplication()).andReturn(AppTestUtil.getEasyMockApplication()).anyTimes();
    expect(session.getQueryTokenizer()).andReturn(tokenizer).anyTimes();
    session.setQueryTokenizer(isA(QueryTokenizer.class));
    ISQLPanelAPI api = AppTestUtil.getEasyMockSqlPanelApi();
    expect(session.getSQLPanelAPIOfActiveSessionWindow()).andReturn(api).anyTimes();
    // expect(session.getMessageHandler()).andReturn(messageHandler).anyTimes();
    expect(session.getAlias()).andStubReturn(AppTestUtil.getEasyMockSqlAliasExt());
    expect(session.getIdentifier()).andReturn(FwTestUtil.getEasyMockIdentifier()).anyTimes();
    expect(session.getSQLConnection()).andReturn(con).anyTimes();
    session.setExceptionFormatter(isA(ExceptionFormatter.class));
    expectLastCall().anyTimes();
    session.addSeparatorToToolbar();
    expectLastCall().anyTimes();
    SessionPanel panel = AppTestUtil.getEasyMockSessionPanel();
    expect(session.getSessionSheet()).andReturn(panel).anyTimes();
    session.addToToolbar(isA(Action.class));
    expectLastCall().anyTimes();
    SessionInternalFrame frame = AppTestUtil.getEasyMockSessionInternalFrame();
    expect(session.getSessionInternalFrame()).andReturn(frame).anyTimes();

    if (replay)
    {
      replay(session);
    }
    return session;
  }

  public static SessionPanel getEasyMockSessionPanel()
  {
    SessionPanel result = createMock(SessionPanel.class);
    ISQLPanelAPI api = AppTestUtil.getEasyMockSqlPanelApi();
    expect(result.getSQLPaneAPI()).andReturn(api);
    ObjectTreePanel mockObjTreePanel = createMock(ObjectTreePanel.class);
    expect(result.getObjectTreePanel()).andStubReturn(mockObjTreePanel);
    mockObjTreePanel.addExpander(isA(DatabaseObjectType.class), isA(INodeExpander.class));
    expectLastCall().anyTimes();
    mockObjTreePanel.addDetailTab(isA(DatabaseObjectType.class), isA(IObjectTab.class));
    expectLastCall().anyTimes();
    replay(mockObjTreePanel);
    replay(result);
    return result;
  }

  public static ISQLPanelAPI getEasyMockSqlPanelApi()
  {
    ISQLPanelAPI result = createMock(ISQLPanelAPI.class);
    ISQLEntryPanel panel = AppTestUtil.getEasyMockSqlEntryPanel();
    expect(result.getSQLEntryPanel()).andReturn(panel).anyTimes();
    result.addExecuterTabListener(isA(ISQLResultExecuterTabListener.class));
    expectLastCall().anyTimes();
    result.addExecutor(isA(ISQLResultExecuter.class));
    expectLastCall().anyTimes();
    replay(result);
    return result;
  }

  public static ISQLEntryPanel getEasyMockSqlEntryPanel()
  {
    ISQLEntryPanel result = createMock(ISQLEntryPanel.class);
    expect(result.getBoundsOfSQLToBeExecuted()).andReturn(new int[] { 10, 20 }).anyTimes();
    result.setCaretPosition(org.easymock.EasyMock.anyInt());
    expectLastCall().anyTimes();
    replay(result);
    return result;
  }

  /**
   * Calls replay by default.
   *
   * @param md
   * @return
   */
  public static ISession getEasyMockSession(ISQLDatabaseMetaData md) {
     return getEasyMockSession(md, true);
  }

  public static ISession getEasyMockSession(ISQLDatabaseMetaData md,
        ResultSet rs) throws SQLException {
     ISQLConnection con = FwTestUtil.getEasyMockSQLConnection(rs);
     ISession session = getEasyMockSession(md, con, false);
     replay(session);
     return session;
  }

  public static SessionManager getEasyMockSessionManager() {
     SessionManager result = createMock(SessionManager.class);
     result.addAllowedSchemaChecker(isA(IAllowedSchemaChecker.class));
     expectLastCall().anyTimes();
     replay(result);
     return result;
  }

  public static ActionCollection getEasyMockActionCollection() {
     ActionCollection result = createMock(ActionCollection.class);
     result.add(isA(Action.class));
     expectLastCall().anyTimes();
     AppTestUtil.expectActionCollectionGet("refreshSchema",
                               RefreshSchemaInfoAction.class,
                               result);
     AppTestUtil.expectActionCollectionGet("refreshObjectTree",
                               RefreshObjectTreeAction.class,
                               result);
     AppTestUtil.expectActionCollectionGet("refreshObjectItemTree",
                               RefreshObjectTreeItemAction.class,
                               result);
     AppTestUtil.expectActionCollectionGet("editWhereColsAction",
                               EditWhereColsAction.class,
                               result);
     AppTestUtil.expectActionCollectionGet("SQLFilterAction",
                               SQLFilterAction.class,
                               result);
     AppTestUtil.expectActionCollectionGet("DeleteSelectedTablesAction",
                               DeleteSelectedTablesAction.class,
                               result);
     AppTestUtil.expectActionCollectionGet("FilterObjectsAction",
                               FilterObjectsAction.class,
                               result);
     replay(result);
     return result;
  }

  public static void expectActionCollectionGet(String actionName,
        Class<? extends Action> actionClass, ActionCollection col) {
     SquirrelAction action = AppTestUtil.getEasyMockSquirrelAction(actionName);
     expect(col.get(actionClass)).andReturn(action).anyTimes();
  }

  public static SquirrelAction getEasyMockSquirrelAction(String name) {
     SquirrelAction result = createMock(SquirrelAction.class);
     expect(result.getValue(Action.NAME)).andReturn(name).anyTimes();
     expect(result.getValue(Action.SMALL_ICON)).andReturn(null).anyTimes();
     expect(result.getValue(Action.MNEMONIC_KEY)).andReturn(null).anyTimes();
     expect(result.getValue(Action.SHORT_DESCRIPTION)).andReturn(null)
                                                      .anyTimes();
     expect(result.getValue(Action.ACTION_COMMAND_KEY)).andReturn(null)
                                                       .anyTimes();
     expect(result.getValue(Action.ACCELERATOR_KEY)).andReturn(null)
                                                    .anyTimes();
     expect(result.isEnabled()).andReturn(true).anyTimes();
     expect(result.getKeyStroke()).andReturn(null).anyTimes();
     expect(result.getValue(isA(String.class))).andStubReturn(null);
     result.addPropertyChangeListener(isA(PropertyChangeListener.class));
     expectLastCall().anyTimes();
     replay(result);
     return result;
  }

  public static ISQLAliasExt getEasyMockSqlAliasExt() {
     ISQLAliasExt result = createMock(ISQLAliasExt.class);
     SQLAliasColorProperties props = createMock(SQLAliasColorProperties.class);
     expect(result.getName()).andReturn("TestAlias").anyTimes();
     IIdentifier id = FwTestUtil.getEasyMockIdentifier();
     expect(result.getDriverIdentifier()).andReturn(id).anyTimes();
     expect(result.getColorProperties()).andStubReturn(props);
     replay(result);
     return result;
  }

  public static ActionCollection getEasyMockActionCollection(boolean replay) {
     ActionCollection result = createMock(ActionCollection.class);
     if (replay) {
        replay(result);
     }
     return result;
  }

  public static IApplication getEasyMockApplication() {
     return AppTestUtil.getEasyMockApplication(true, true, null);
  }

  public static IApplication getEasyMockApplication(ActionCollection col) {
     IApplication result = AppTestUtil.getEasyMockApplication(false, false, col);
     replay(result);
     return result;
  }

  public static SquirrelResources getEasyMockSquirrelResources() {
     SquirrelResources resources = EasyMock.createMock(SquirrelResources.class);
     resources.setupAction(isA(Action.class), EasyMock.anyBoolean());
     EasyMock.expectLastCall().times(1, 10000);
     replay(resources);
     return resources;
  }

  public static SessionInternalFrame getEasyMockSessionInternalFrame() {
     SessionInternalFrame result = createMock(SessionInternalFrame.class);
     result.addToToolsPopUp(isA(String.class), isA(SquirrelAction.class));
     expectLastCall().anyTimes();
     return result;
  }

  public static SessionProperties getEasyMockSessionProperties(String sep,
        String solComment, boolean removeMultLineComments) {
     SessionProperties result = createMock(SessionProperties.class);
     expect(result.getSQLStatementSeparator()).andReturn(sep).anyTimes();
     expect(result.getStartOfLineComment()).andReturn(solComment).anyTimes();
     expect(result.getRemoveMultiLineComment()).andReturn(removeMultLineComments)
                                               .anyTimes();
     expect(result.clone()).andReturn(result).anyTimes();
     replay(result);
     return result;
  }

  public static SquirrelPreferences getEasyMockSquirrelPreferences(
        SessionProperties props) {
     SquirrelPreferences prefs = createMock(SquirrelPreferences.class);
     expect(prefs.getShowColoriconsInToolbar()).andReturn(true).anyTimes();
     expect(prefs.getSessionProperties()).andReturn(props).anyTimes();
     expect(prefs.getWarnJreJdbcMismatch()).andReturn(false).anyTimes();
     replay(prefs);
     return prefs;
  }

  public static SQLAlias getEasyMockSQLAlias(IIdentifier SqlAliasId,
        IIdentifier SqlDriverId) {
     SQLAlias mockSqlAlias = createMock(SQLAlias.class);
     SQLDriverPropertyCollection mockSqlDriverPropCol = createMock(SQLDriverPropertyCollection.class);
     expect(mockSqlAlias.getIdentifier()).andReturn(SqlAliasId).anyTimes();
     expect(mockSqlAlias.getName()).andReturn("TestAliasName").anyTimes();
     expect(mockSqlAlias.getDriverIdentifier()).andReturn(SqlDriverId)
                                               .anyTimes();
     expect(mockSqlAlias.getUrl()).andReturn("TestUrl").anyTimes();
     expect(mockSqlAlias.getUserName()).andReturn("TestUserName").anyTimes();
     expect(mockSqlAlias.getPassword()).andReturn("TestPassword").anyTimes();
     expect(mockSqlAlias.isAutoLogon()).andReturn(true).anyTimes();
     expect(mockSqlAlias.getUseDriverProperties()).andReturn(true).anyTimes();
     expect(mockSqlAlias.getDriverPropertiesClone()).andReturn(mockSqlDriverPropCol)
                                                    .anyTimes();
     SQLAliasConnectionProperties mockConnProps = createMock(SQLAliasConnectionProperties.class);
     expect(mockConnProps.isEnableConnectionKeepAlive()).andStubReturn(false);
     expect(mockConnProps.getKeepAliveSleepTimeSeconds()).andStubReturn(120);
     expect(mockConnProps.getKeepAliveSqlStatement()).andStubReturn("");
     expect(mockSqlAlias.getConnectionProperties()).andStubReturn(mockConnProps);
    
     replay(mockSqlAlias);
     replay(mockConnProps);
     return mockSqlAlias;
  }

  public static IApplication getEasyMockApplication(boolean nice,
        boolean replay, ActionCollection col) {
     IApplication result = null;
     if (nice) {
        result = createNiceMock(IApplication.class);
     } else {
        result = createMock(IApplication.class);
     }
     SquirrelResources resoures = getEasyMockSquirrelResources();
     SessionProperties props = getEasyMockSessionProperties(";", "--", true);
     SquirrelPreferences prefs = getEasyMockSquirrelPreferences(props);
     expect(result.getMainFrame()).andReturn(null).anyTimes();
     expect(result.getResources()).andReturn(resoures).anyTimes();
     expect(result.getSquirrelPreferences()).andReturn(prefs).anyTimes();
     TaskThreadPool mockThreadPool = FwTestUtil.getEasyMockTaskThreadPool();
     expect(result.getThreadPool()).andReturn(mockThreadPool).anyTimes();
     ActionCollection mockActColl = col;
     if (col == null) {
        mockActColl = getEasyMockActionCollection();
     }
     expect(result.getActionCollection()).andReturn(mockActColl).anyTimes();
     SQLDriverManager driverManager = FwTestUtil.getEasyMockSQLDriverManager();
     expect(result.getSQLDriverManager()).andReturn(driverManager).anyTimes();
     SessionManager mockSessionManager = getEasyMockSessionManager();
     expect(result.getSessionManager()).andReturn(mockSessionManager)
                                       .anyTimes();
     if (replay) {
        replay(result);
     }
     return result;
  }

  public static IPlugin getMockPlugin(EasyMockHelper mockHelper)
   {
      IPlugin mockPlugin = mockHelper.createMock(IPlugin.class);
      return mockPlugin;
   }
 
}
TOP

Related Classes of net.sourceforge.squirrel_sql.client.AppTestUtil

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.