Author: dr
Date: Mon Jan 14 11:29:02 2008
New Revision: 7142

Log:
- Implemented issue #11562: Schema validator for duplicate index names.

Modified:
    trunk/DatabaseSchema/ChangeLog
    trunk/DatabaseSchema/src/db_schema_autoload.php
    trunk/DatabaseSchema/src/validator.php
    trunk/DatabaseSchema/tests/validator_test.php

Modified: trunk/DatabaseSchema/ChangeLog
==============================================================================
--- trunk/DatabaseSchema/ChangeLog [iso-8859-1] (original)
+++ trunk/DatabaseSchema/ChangeLog [iso-8859-1] Mon Jan 14 11:29:02 2008
@@ -1,3 +1,9 @@
+1.4alpha1 - [RELEASEDATE]
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+- Implemented issue #11562: Schema validator for duplicate index names.
+
+
 1.3.1 - Monday 14 January 2008
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 

Modified: trunk/DatabaseSchema/src/db_schema_autoload.php
==============================================================================
--- trunk/DatabaseSchema/src/db_schema_autoload.php [iso-8859-1] (original)
+++ trunk/DatabaseSchema/src/db_schema_autoload.php [iso-8859-1] Mon Jan 14 
11:29:02 2008
@@ -44,6 +44,7 @@
     'ezcDbSchemaIndexFieldsValidator'            => 
'DatabaseSchema/validators/index_fields.php',
     'ezcDbSchemaMysqlReader'                     => 
'DatabaseSchema/handlers/mysql/reader.php',
     'ezcDbSchemaMysqlWriter'                     => 
'DatabaseSchema/handlers/mysql/writer.php',
+    'ezcDbSchemaNonUniqueIndexNameValidator'     => 
'DatabaseSchema/validators/non_unique_index_name.php',
     'ezcDbSchemaOptions'                         => 
'DatabaseSchema/options/schema.php',
     'ezcDbSchemaOracleReader'                    => 
'DatabaseSchema/handlers/oracle/reader.php',
     'ezcDbSchemaOracleWriter'                    => 
'DatabaseSchema/handlers/oracle/writer.php',

Modified: trunk/DatabaseSchema/src/validator.php
==============================================================================
--- trunk/DatabaseSchema/src/validator.php [iso-8859-1] (original)
+++ trunk/DatabaseSchema/src/validator.php [iso-8859-1] Mon Jan 14 11:29:02 2008
@@ -40,6 +40,7 @@
         'ezcDbSchemaTypesValidator',
         'ezcDbSchemaIndexFieldsValidator',
         'ezcDbSchemaAutoIncrementIndexValidator',
+        'ezcDbSchemaNonUniqueIndexNameValidator',
     );
 
     /**

Modified: trunk/DatabaseSchema/tests/validator_test.php
==============================================================================
--- trunk/DatabaseSchema/tests/validator_test.php [iso-8859-1] (original)
+++ trunk/DatabaseSchema/tests/validator_test.php [iso-8859-1] Mon Jan 14 
11:29:02 2008
@@ -116,6 +116,80 @@
         self::assertEquals( $expected, ezcDbSchemaValidator::validate( $schema 
) );
     }
 
+    public function testForDuplicateIndexName1()
+    {
+        $schema = new ezcDbSchema(
+            array(
+                'table1' => new ezcDbSchemaTable(
+                    array (
+                        'field1' => new ezcDbSchemaField( 'integer' ),
+                    ),
+                    array (
+                        'index1' => new ezcDbSchemaIndex( array ( 'field1' => 
new ezcDbSchemaIndexField() ) ),
+                    )
+                ),
+                'table2' => new ezcDbSchemaTable(
+                    array (
+                        'field1' => new ezcDbSchemaField( 'integer' ),
+                    ),
+                    array (
+                        'index1' => new ezcDbSchemaIndex( array ( 'field1' => 
new ezcDbSchemaIndexField() ) ),
+                    )
+                ),
+            )
+        );
+
+        $expected = array(
+            "The index name 'index1' is not unique. It exists for the tables: 
'table1', 'table2'.",
+        );
+        self::assertEquals( $expected, ezcDbSchemaValidator::validate( $schema 
) );
+    }
+
+    public function testForDuplicateIndexName2()
+    {
+        $schema = new ezcDbSchema(
+            array(
+                'table1' => new ezcDbSchemaTable(
+                    array (
+                        'field1' => new ezcDbSchemaField( 'integer' ),
+                    ),
+                    array (
+                        'index1' => new ezcDbSchemaIndex( array ( 'field1' => 
new ezcDbSchemaIndexField() ) ),
+                    )
+                ),
+                'table2' => new ezcDbSchemaTable(
+                    array (
+                        'field1' => new ezcDbSchemaField( 'integer' ),
+                    ),
+                    array (
+                        'index2' => new ezcDbSchemaIndex( array ( 'field1' => 
new ezcDbSchemaIndexField() ) ),
+                    )
+                ),
+                'table3' => new ezcDbSchemaTable(
+                    array (
+                        'field1' => new ezcDbSchemaField( 'integer' ),
+                    ),
+                    array (
+                        'index1' => new ezcDbSchemaIndex( array ( 'field1' => 
new ezcDbSchemaIndexField() ) ),
+                    )
+                ),
+                'table4' => new ezcDbSchemaTable(
+                    array (
+                        'field1' => new ezcDbSchemaField( 'integer' ),
+                    ),
+                    array (
+                        'index1' => new ezcDbSchemaIndex( array ( 'field1' => 
new ezcDbSchemaIndexField() ) ),
+                    )
+                ),
+            )
+        );
+
+        $expected = array(
+            "The index name 'index1' is not unique. It exists for the tables: 
'table1', 'table3', 'table4'.",
+        );
+        self::assertEquals( $expected, ezcDbSchemaValidator::validate( $schema 
) );
+    }
+
     public static function suite()
     {
         return new PHPUnit_Framework_TestSuite( 
'ezcDatabaseSchemaValidatorTest' );


-- 
svn-components mailing list
svn-components@lists.ez.no
http://lists.ez.no/mailman/listinfo/svn-components

Reply via email to