01: package net.sourceforge.squirrel_sql.plugins.dbcopy.util;
02:
03: /*
04: * Copyright (C) 2007 Rob Manning
05: * manningr@users.sourceforge.net
06: *
07: * This library is free software; you can redistribute it and/or
08: * modify it under the terms of the GNU Lesser General Public
09: * License as published by the Free Software Foundation; either
10: * version 2.1 of the License, or (at your option) any later version.
11: *
12: * This library is distributed in the hope that it will be useful,
13: * but WITHOUT ANY WARRANTY; without even the implied warranty of
14: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15: * Lesser General Public License for more details.
16: *
17: * You should have received a copy of the GNU Lesser General Public
18: * License along with this library; if not, write to the Free Software
19: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20: */
21: import static org.easymock.EasyMock.createNiceMock;
22: import static org.easymock.EasyMock.expect;
23: import static org.easymock.EasyMock.replay;
24:
25: import java.sql.SQLException;
26:
27: import net.sourceforge.squirrel_sql.BaseSQuirreLTestCase;
28: import net.sourceforge.squirrel_sql.client.session.ISession;
29: import net.sourceforge.squirrel_sql.fw.dialects.DialectFactory;
30: import net.sourceforge.squirrel_sql.fw.sql.ISQLDatabaseMetaData;
31: import net.sourceforge.squirrel_sql.fw.sql.ITableInfo;
32:
33: public class DBUtilTest extends BaseSQuirreLTestCase {
34:
35: protected void setUp() throws Exception {
36: super .setUp();
37: }
38:
39: protected void tearDown() throws Exception {
40: super .tearDown();
41: }
42:
43: public void testGetForeignKeySQL() throws Exception {
44: // Test for NPE in DBUtil.getForeignKeySQL when the TableInfo
45: // returns null for getImportedKeys
46: ITableInfo ti = createNiceMock(ITableInfo.class);
47: DBUtil.getForeignKeySQL(null, ti, null);
48: }
49:
50: // Bug #1714476 (DB copy uses wrong case for table names): When the
51: // catalog/schema/object names come from the source session, don't mess
52: // with the case, as the case is provided by the driver for the existing
53: // table, and doesn't need to be fixed.
54: public void testGetQualifiedObjectName() throws SQLException {
55: ISQLDatabaseMetaData md = createNiceMock(ISQLDatabaseMetaData.class);
56: expect(md.getCatalogSeparator()).andReturn(".");
57: expect(md.supportsCatalogsInTableDefinitions()).andReturn(true);
58: expect(md.supportsSchemasInTableDefinitions()).andReturn(true);
59: replay(md);
60: ISession session = createNiceMock(ISession.class);
61: expect(session.getMetaData()).andReturn(md).anyTimes();
62: replay(session);
63: String catalog = "TestCatalog";
64: String schema = "TestSchema";
65: String table = "TestTable";
66: // case shouldn't be changed in this test because the context is the
67: // source database.
68: String expQualifiedName = catalog + "." + schema + "." + table;
69: String actQualifiedName = DBUtil.getQualifiedObjectName(
70: session, catalog, schema, table,
71: DialectFactory.SOURCE_TYPE);
72: assertEquals(expQualifiedName, actQualifiedName);
73: }
74: }
|