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