Skip to content
Browse files

Making sure we are not making non-uniques and non-primary keys index.…

… Also changing basic fixture schema to make tests pass.
  • Loading branch information...
1 parent fb476f1 commit 0e9007e060d8f383bddb92f94dbe3dfed0da349c @renan renan committed Sep 2, 2009
View
6 cake/libs/model/datasources/dbo/dbo_mssql.php
@@ -703,8 +703,8 @@ function buildIndex($indexes, $table = null) {
foreach ($indexes as $name => $value) {
if ($name == 'PRIMARY') {
- $out = 'PRIMARY KEY (' . $this->name($value['column']) . ')';
- } else {
+ $join[] = 'PRIMARY KEY (' . $this->name($value['column']) . ')';
+ } else if (isset($value['unique']) && $value['unique']) {
$out = "ALTER TABLE {$table} ADD CONSTRAINT {$name} UNIQUE";
if (is_array($value['column'])) {
@@ -713,8 +713,8 @@ function buildIndex($indexes, $table = null) {
$value['column'] = $this->name($value['column']);
}
$out .= "({$value['column']});";
+ $join[] = $out;
}
- $join[] = $out;
}
return $join;
}
View
27 cake/tests/cases/libs/model/datasources/dbo/dbo_mssql.test.php
@@ -520,6 +520,33 @@ function testBuildColumn() {
$this->assertEqual($result, $expected);
}
/**
+ * testBuildIndex method
+ *
+ * @return void
+ * @access public
+ */
+ function testBuildIndex() {
+ $indexes = array(
+ 'PRIMARY' => array('column' => 'id', 'unique' => 1),
+ 'client_id' => array('column' => 'client_id', 'unique' => 1)
+ );
+ $result = $this->db->buildIndex($indexes, 'items');
+ $expected = array(
+ 'PRIMARY KEY ([id])',
+ 'ALTER TABLE items ADD CONSTRAINT client_id UNIQUE([client_id]);'
+ );
+ $this->assertEqual($result, $expected);
+
+ $indexes = array('client_id' => array('column' => 'client_id'));
+ $result = $this->db->buildIndex($indexes, 'items');
+ $this->assertEqual($result, array());
+
+ $indexes = array('client_id' => array('column' => array('client_id', 'period_id'), 'unique' => 1));
+ $result = $this->db->buildIndex($indexes, 'items');
+ $expected = array('ALTER TABLE items ADD CONSTRAINT client_id UNIQUE([client_id], [period_id]);');
+ $this->assertEqual($result, $expected);
+ }
+/**
* testUpdateAllSyntax method
*
* @return void
View
2 cake/tests/fixtures/aco_fixture.php
@@ -47,7 +47,7 @@ class AcoFixture extends CakeTestFixture {
var $fields = array(
'id' => array('type' => 'integer', 'key' => 'primary'),
'parent_id' => array('type' => 'integer', 'length' => 10, 'null' => true),
- 'model' => array('type' => 'string', 'default' => ''),
+ 'model' => array('type' => 'string', 'null' => true),
'foreign_key' => array('type' => 'integer', 'length' => 10, 'null' => true),
'alias' => array('type' => 'string', 'default' => ''),
'lft' => array('type' => 'integer', 'length' => 10, 'null' => true),
View
4 cake/tests/fixtures/aco_two_fixture.php
@@ -46,8 +46,8 @@ class AcoTwoFixture extends CakeTestFixture {
*/
var $fields = array(
'id' => array('type' => 'integer', 'key' => 'primary'),
- 'parent_id' => array('type' => 'integer', 'length' => 10, 'null' => true, 'default' => 0),
- 'model' => array('type' => 'string', 'default' => ''),
+ 'parent_id' => array('type' => 'integer', 'length' => 10, 'null' => true),
+ 'model' => array('type' => 'string', 'null' => true),
'foreign_key' => array('type' => 'integer', 'length' => 10, 'null' => true),
'alias' => array('type' => 'string', 'default' => ''),
'lft' => array('type' => 'integer', 'length' => 10, 'null' => true),
View
2 cake/tests/fixtures/aro_fixture.php
@@ -47,7 +47,7 @@ class AroFixture extends CakeTestFixture {
var $fields = array(
'id' => array('type' => 'integer', 'key' => 'primary'),
'parent_id' => array('type' => 'integer', 'length' => 10, 'null' => true),
- 'model' => array('type' => 'string', 'default' => ''),
+ 'model' => array('type' => 'string', 'null' => true),
'foreign_key' => array('type' => 'integer', 'length' => 10, 'null' => true),
'alias' => array('type' => 'string', 'default' => ''),
'lft' => array('type' => 'integer', 'length' => 10, 'null' => true),
View
2 cake/tests/fixtures/aro_two_fixture.php
@@ -47,7 +47,7 @@ class AroTwoFixture extends CakeTestFixture {
var $fields = array(
'id' => array('type' => 'integer', 'key' => 'primary'),
'parent_id' => array('type' => 'integer', 'length' => 10, 'null' => true),
- 'model' => array('type' => 'string', 'default' => ''),
+ 'model' => array('type' => 'string', 'null' => true),
'foreign_key' => array('type' => 'integer', 'length' => 10, 'null' => true),
'alias' => array('type' => 'string', 'default' => ''),
'lft' => array('type' => 'integer', 'length' => 10, 'null' => true),

0 comments on commit 0e9007e

Please sign in to comment.
Something went wrong with that request. Please try again.