Exemplo n.º 1
0
 public function testFormatColumns()
 {
     $schema = new Schema('foobar');
     $schema->addColumn('column', ['type' => 'int']);
     $this->assertRegExp('/(`|\\")?column(`|\\")? INT NULL/', $this->object->formatColumns($schema));
     $schema->addColumn('column', ['type' => 'int', 'unsigned' => true, 'zerofill' => true]);
     $this->assertRegExp('/(`|\\")?column(`|\\")? INT UNSIGNED ZEROFILL NULL/', $this->object->formatColumns($schema));
     $schema->addColumn('column', ['type' => 'int', 'null' => false, 'comment' => 'Some comment here']);
     $this->assertRegExp('/(`|\\")?column(`|\\")? INT NOT NULL COMMENT \'Some comment here\'/', $this->object->formatColumns($schema));
     $schema->addColumn('column', ['type' => 'int', 'ai' => true, 'length' => 11]);
     $this->assertRegExp('/(`|\\")?column(`|\\")? INT\\(11\\) NOT NULL AUTO_INCREMENT/', $this->object->formatColumns($schema));
     $schema->addColumn('column', ['type' => 'int', 'ai' => true, 'length' => 11, 'unsigned' => true, 'zerofill' => true, 'null' => false, 'default' => null, 'comment' => 'Some comment here']);
     $expected = '(`|\\")?column(`|\\")? INT\\(11\\) UNSIGNED ZEROFILL NOT NULL DEFAULT NULL AUTO_INCREMENT COMMENT \'Some comment here\'';
     $this->assertRegExp('/' . $expected . '/', $this->object->formatColumns($schema));
     $schema->addColumn('column2', ['type' => 'varchar', 'length' => 255, 'null' => true]);
     $expected .= ',\\n(`|\\")?column2(`|\\")? VARCHAR\\(255\\) NULL';
     $this->assertRegExp('/' . $expected . '/', $this->object->formatColumns($schema));
     $schema->addColumn('column3', ['type' => 'smallint', 'default' => 3, 'null' => false]);
     $expected .= ',\\n(`|\\")?column3(`|\\")? SMALLINT NOT NULL DEFAULT 3';
     $this->assertRegExp('/' . $expected . '/', $this->object->formatColumns($schema));
     // inherits values from type
     $schema->addColumn('column4', ['type' => 'datetime']);
     $expected .= ',\\n(`|\\")?column4(`|\\")? DATETIME NULL DEFAULT NULL';
     $this->assertRegExp('/' . $expected . '/', $this->object->formatColumns($schema));
     $schema->addColumn('column5', ['type' => 'varchar', 'collate' => 'utf8_general_ci', 'charset' => 'utf8']);
     $expected .= ',\\n(`|\\")?column5(`|\\")? VARCHAR\\(255\\) CHARACTER SET utf8 COLLATE utf8_general_ci NULL';
     $this->assertRegExp('/' . $expected . '/', $this->object->formatColumns($schema));
 }