Author: tfischer
Date: Wed Oct 22 00:14:09 2014
New Revision: 1633493
URL: http://svn.apache.org/r1633493
Log:
TORQUE-331 - test that it is not possible to insert illegal value (except for
MySQL where evrything is possible:-) )
Modified:
db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/datatypes/EnumTest.java
Modified:
db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/datatypes/EnumTest.java
URL:
http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/datatypes/EnumTest.java?rev=1633493&r1=1633492&r2=1633493&view=diff
==============================================================================
---
db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/datatypes/EnumTest.java
(original)
+++
db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/datatypes/EnumTest.java
Wed Oct 22 00:14:09 2014
@@ -19,18 +19,28 @@ package org.apache.torque.datatypes;
* under the License.
*/
+import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
+import org.apache.log4j.Logger;
import org.apache.torque.BaseDatabaseTestCase;
import org.apache.torque.TestEnum;
import org.apache.torque.TorqueException;
+import org.apache.torque.adapter.DerbyAdapter;
+import org.apache.torque.adapter.HsqldbAdapter;
+import org.apache.torque.adapter.MssqlAdapter;
+import org.apache.torque.adapter.MysqlAdapter;
+import org.apache.torque.adapter.OracleAdapter;
+import org.apache.torque.adapter.PostgresAdapter;
import org.apache.torque.criteria.Criteria;
import org.apache.torque.test.dbobject.EnumTable;
import org.apache.torque.test.dbobject.IntPrimitiveColumnEnum;
import org.apache.torque.test.dbobject.MyIntColumnEnum;
import org.apache.torque.test.dbobject.VarcharColumnEnum;
import org.apache.torque.test.peer.EnumTablePeer;
+import org.apache.torque.util.ColumnValues;
+import org.apache.torque.util.JdbcTypedValue;
/**
* Tests the enum data types.
@@ -38,6 +48,8 @@ import org.apache.torque.test.peer.EnumT
*/
public class EnumTest extends BaseDatabaseTestCase
{
+ private static Logger logger = Logger.getLogger(EnumTest.class);
+
private List<EnumTable> databaseStateBeforeTest;
@Override
@@ -138,6 +150,76 @@ public class EnumTest extends BaseDataba
}
/**
+ * Checks whether we can select enum values by enum value and by wrapped
value.
+ *
+ * @throws Exception if the test fails
+ */
+ public void testInsertIllegalValue() throws Exception
+ {
+ // check that the normal doUpdate works
+ ColumnValues columnValues = new ColumnValues();
+ columnValues.put(
+ EnumTablePeer.VARCHAR_COLUMN,
+ new JdbcTypedValue(
+ VarcharColumnEnum.X.getValue(),
+ 12));
+ EnumTablePeer.doUpdate(
+ new Criteria().where(EnumTablePeer.ID,
databaseStateBeforeTest.get(0).getId()),
+ columnValues);
+
+ columnValues = new ColumnValues();
+ columnValues.put(
+ EnumTablePeer.VARCHAR_COLUMN,
+ new JdbcTypedValue(
+ "A",
+ 12));
+ try
+ {
+ EnumTablePeer.doUpdate(
+ new Criteria().where(EnumTablePeer.ID,
databaseStateBeforeTest.get(0).getId()),
+ columnValues);
+ if (!(defaultAdapter instanceof MysqlAdapter))
+ {
+ fail("Exception expected");
+ }
+ }
+ catch (TorqueException e)
+ {
+ // assert that the error is really a check violation
+ // check different error codes which are employed by each database
vendor.
+ SQLException cause = (SQLException) e.getCause();
+ if (defaultAdapter instanceof MssqlAdapter)
+ {
+ assertEquals(547, cause.getErrorCode());
+ assertEquals("23000", cause.getSQLState());
+ }
+ else if (defaultAdapter instanceof OracleAdapter)
+ {
+ assertEquals(2290, cause.getErrorCode());
+ assertEquals("23000", cause.getSQLState());
+ }
+ else if (defaultAdapter instanceof PostgresAdapter)
+ {
+ assertEquals("23514", cause.getSQLState());
+ }
+ else if (defaultAdapter instanceof DerbyAdapter)
+ {
+ assertEquals("23513", cause.getSQLState());
+ }
+ else if (defaultAdapter instanceof HsqldbAdapter)
+ {
+ assertEquals("23513", cause.getSQLState());
+ }
+ else
+ {
+ logger.warn("error code and SQL code not checked for unknown
adapter " + defaultAdapter.getClass());
+ }
+
+ }
+ }
+
+
+ /**
* Delete all previous data from the tested tables
* and re-inserts test data.
*/
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]