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: torque-dev-unsubscr...@db.apache.org
For additional commands, e-mail: torque-dev-h...@db.apache.org

Reply via email to