/*
* Copyright 2008 biaoping.yin
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.frameworkset.orm.engine.model;
/*
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import java.io.Serializable;
import java.util.List;
import junit.framework.TestCase;
import com.frameworkset.orm.engine.transform.XmlToAppData;
/**
* Tests for package handling.
*
* @author <a href="mailto:mpoeschl@marmot.at>Martin Poeschl</a>
* @version $Id: TableTest.java,v 1.9 2004/02/22 06:29:38 jmcnally Exp $
*/
public class TableTest extends TestCase implements Serializable
{
private XmlToAppData xmlToAppData = null;
private Database db = null;
public TableTest(String name)
{
super(name);
}
protected void setUp() throws Exception
{
super.setUp();
xmlToAppData = new XmlToAppData("mysql", "defaultpackage");
db = xmlToAppData.parseFile(
"src/test/org/apache/torque/engine/database/model/tabletest-schema.xml");
}
protected void tearDown() throws Exception
{
xmlToAppData = null;
super.tearDown();
}
/**
* test if the tables get the package name from the properties file
*/
public void testIdMethodHandling() throws Exception
{
assertEquals(IDMethod.ID_BROKER, db.getDefaultIdMethod());
Table table = db.getTable("table_idbroker");
assertEquals(IDMethod.ID_BROKER, table.getIdMethod());
Table table2 = db.getTable("table_native");
assertEquals(IDMethod.NATIVE, table2.getIdMethod());
}
public void testNoPk() throws Exception
{
Table table = db.getTable("nopk");
assertFalse(table.hasPrimaryKey());
List pks = table.getPrimaryKey();
assertTrue(pks.size() == 0);
}
public void testSinglePk() throws Exception
{
Table table = db.getTable("singlepk");
assertTrue(table.hasPrimaryKey());
List pks = table.getPrimaryKey();
assertTrue(pks.size() == 1);
Column col = (Column) pks.get(0);
assertEquals(col.getName(), "singlepk_id");
}
public void testMultiPk() throws Exception
{
Table table = db.getTable("multipk");
assertTrue(table.hasPrimaryKey());
List pks = table.getPrimaryKey();
assertTrue(pks.size() == 2);
Column cola = (Column) pks.get(0);
assertEquals(cola.getName(), "multipk_a");
Column colb = (Column) pks.get(1);
assertEquals(colb.getName(), "multipk_b");
assertEquals(table.printPrimaryKey(), "multipk_a,multipk_b");
}
public void testSingleFk() throws Exception
{
Table table = db.getTable("singlefk");
List fks = table.getForeignKeys();
assertTrue(fks.size() == 1);
ForeignKey fk = (ForeignKey) fks.get(0);
assertEquals(fk.getForeignTableName(), "singlepk");
assertTrue(fk.getForeignColumns().size() == 1);
assertFalse(fk.hasOnDelete());
assertFalse(fk.hasOnUpdate());
}
public void testOnUpdateOnDelete() throws Exception
{
Table table = db.getTable("singlefk1");
List fks = table.getForeignKeys();
assertTrue(fks.size() == 1);
ForeignKey fk = (ForeignKey) fks.get(0);
assertTrue(fk.hasOnUpdate());
assertEquals("CASCADE", fk.getOnUpdate());
assertTrue(fk.hasOnDelete());
assertEquals("SET NULL", fk.getOnDelete());
}
public void testMultiFk() throws Exception
{
Table table = db.getTable("multifk");
List fks = table.getForeignKeys();
assertTrue(fks.size() == 1);
ForeignKey fk = (ForeignKey) fks.get(0);
assertEquals(fk.getForeignTableName(), "multipk");
assertTrue(fk.getForeignColumns().size() == 2);
}
public void testReferrers() throws Exception
{
Table table = db.getTable("singlepk");
List refs = table.getReferrers();
assertTrue(refs.size() == 1);
ForeignKey fk = (ForeignKey) refs.get(0);
assertEquals(fk.getTableName(), "singlefk");
}
public void testUnique() throws Exception
{
Table table = db.getTable("unique_test");
List unices = table.getUnices();
assertTrue(unices.size() == 1);
Unique unique = (Unique) unices.get(0);
assertEquals(unique.getName(), "unique_name");
assertTrue(unique.getColumns().size() == 2);
}
}