public function testInsertData()
 {
     $table = new \Phinx\Db\Table('table1', array(), $this->adapter);
     $table->addColumn('column1', 'string')->addColumn('column2', 'integer')->insert(array("column1", "column2"), array(array('value1', 1), array('value2', 2)))->save();
     $rows = $this->adapter->fetchAll('SELECT * FROM table1');
     $this->assertEquals('value1', $rows[0]['column1']);
     $this->assertEquals('value2', $rows[1]['column1']);
     $this->assertEquals(1, $rows[0]['column2']);
     $this->assertEquals(2, $rows[1]['column2']);
 }
Exemple #2
0
 /**
  * Test that column names are properly escaped when creating Foreign Keys
  */
 public function testForignKeysArePropertlyEscaped()
 {
     $userId = 'user';
     $sessionId = 'session';
     $local = new \Phinx\Db\Table('users', array('primary_key' => $userId, 'id' => $userId), $this->adapter);
     $local->create();
     $foreign = new \Phinx\Db\Table('sessions', array('primary_key' => $sessionId, 'id' => $sessionId), $this->adapter);
     $foreign->addColumn('user', 'integer')->addForeignKey('user', 'users', $userId)->create();
     $this->assertTrue($foreign->hasForeignKey('user'));
 }
Exemple #3
0
 public function dropForeignKey()
 {
     $refTable = new \Phinx\Db\Table('ref_table', array(), $this->adapter);
     $refTable->addColumn('field1', 'string')->save();
     $table = new \Phinx\Db\Table('table', array(), $this->adapter);
     $table->addColumn('ref_table_id', 'integer')->save();
     $fk = new \Phinx\Db\Table\ForeignKey();
     $fk->setReferencedTable($refTable)->setColumns(array('ref_table_id'))->setReferencedColumns(array('id'));
     $this->adapter->addForeignKey($table, $fk);
     $this->adapter->dropForeignKey($table->getName(), array('ref_table_id'));
     $this->assertFalse($this->adapter->hasForeignKey($table->getName(), array('ref_table_id')));
 }
Exemple #4
0
 public function testAddColumnWithComment()
 {
     $table = new \Phinx\Db\Table('table1', array(), $this->adapter);
     $table->addColumn('column1', 'string', array('comment' => $comment = 'Comments from "column1"'))->save();
     $rows = $this->adapter->fetchAll('select * from sqlite_master where `type` = \'table\'');
     foreach ($rows as $row) {
         if ($row['tbl_name'] == 'table1') {
             $sql = $row['sql'];
         }
     }
     $this->assertRegExp('/\\/\\* Comments from "column1" \\*\\//', $sql);
 }
Exemple #5
0
 public function testNullWithoutDefaultValue()
 {
     $this->markTestSkipped('Skipping for now. See Github Issue #265.');
     // construct table with default/null combinations
     $table = new \Phinx\Db\Table('table1', array(), $this->adapter);
     $table->addColumn("aa", "string", array("null" => true))->addColumn("bb", "string", array("null" => false))->addColumn("cc", "string", array("null" => true, "default" => "some1"))->addColumn("dd", "string", array("null" => false, "default" => "some2"))->save();
     // load table info
     $columns = $this->adapter->getColumns("table1");
     $this->assertEquals(count($columns), 5);
     $aa = $columns[1];
     $bb = $columns[2];
     $cc = $columns[3];
     $dd = $columns[4];
     $this->assertEquals("aa", $aa->getName());
     $this->assertEquals(true, $aa->isNull());
     $this->assertEquals(null, $aa->getDefault());
     $this->assertEquals("bb", $bb->getName());
     $this->assertEquals(false, $bb->isNull());
     $this->assertEquals(null, $bb->getDefault());
     $this->assertEquals("cc", $cc->getName());
     $this->assertEquals(true, $cc->isNull());
     $this->assertEquals("some1", $cc->getDefault());
     $this->assertEquals("dd", $dd->getName());
     $this->assertEquals(false, $dd->isNull());
     $this->assertEquals("some2", $dd->getDefault());
 }
 public function testInsertData()
 {
     $data = array(array('column1' => 'value1', 'column2' => 1), array('column1' => 'value2', 'column2' => 2), array('column1' => 'value3', 'column2' => 3, 'column3' => 'foo'));
     $table = new \Phinx\Db\Table('table1', array(), $this->adapter);
     $table->addColumn('column1', 'string')->addColumn('column2', 'integer')->addColumn('column3', 'string', array('default' => 'test'))->insert($data)->save();
     $rows = $this->adapter->fetchAll('SELECT * FROM table1');
     $this->assertEquals('value1', $rows[0]['column1']);
     $this->assertEquals('value2', $rows[1]['column1']);
     $this->assertEquals('value3', $rows[2]['column1']);
     $this->assertEquals(1, $rows[0]['column2']);
     $this->assertEquals(2, $rows[1]['column2']);
     $this->assertEquals(3, $rows[2]['column2']);
     $this->assertEquals('test', $rows[0]['column3']);
     $this->assertEquals('foo', $rows[2]['column3']);
 }
Exemple #7
0
 public function testResetAfterAddingData()
 {
     $adapterStub = $this->getMock('\\Phinx\\Db\\Adapter\\MysqlAdapter', array(), array(array()));
     $table = new \Phinx\Db\Table('ntable', array(), $adapterStub);
     $columns = array("column1");
     $data = array(array("value1"));
     $table->insert($columns, $data)->save();
     $this->assertEquals(array(), $table->getData());
 }
 public function testTimestampWithTimezone()
 {
     $table = new \Phinx\Db\Table('tztable', array('id' => false), $this->adapter);
     $table->addColumn('timestamp_tz', 'timestamp', array('timezone' => true))->addColumn('time_tz', 'time', array('timezone' => true))->addColumn('date_notz', 'date', array('timezone' => true))->addColumn('time_notz', 'timestamp')->save();
     $this->assertTrue($this->adapter->hasColumn('tztable', 'timestamp_tz'));
     $this->assertTrue($this->adapter->hasColumn('tztable', 'time_tz'));
     $this->assertTrue($this->adapter->hasColumn('tztable', 'date_notz'));
     $this->assertTrue($this->adapter->hasColumn('tztable', 'time_notz'));
     $columns = $this->adapter->getColumns('tztable');
     foreach ($columns as $column) {
         if (substr($column->getName(), -4) === 'notz') {
             $this->assertFalse($column->isTimezone(), 'column: ' . $column->getName());
         } else {
             $this->assertTrue($column->isTimezone(), 'column: ' . $column->getName());
         }
     }
 }
Exemple #9
0
 public function testAddColumnWithComment()
 {
     $table = new \Phinx\Db\Table('table1', array(), $this->adapter);
     $table->addColumn('column1', 'string', array('comment' => $comment = 'Comments from "column1"'))->save();
     $rows = $this->adapter->fetchAll('SELECT column_name, column_comment FROM information_schema.columns WHERE table_name = "table1"');
     $columnWithComment = $rows[1];
     $this->assertEquals($comment, $columnWithComment['column_comment'], 'Dont set column comment correctly');
 }
Exemple #10
0
 public function testResetAfterAddingData()
 {
     $adapterStub = $this->getMock('\\Phinx\\Db\\Adapter\\MysqlAdapter', [], [[]]);
     $table = new \Phinx\Db\Table('ntable', [], $adapterStub);
     $columns = ["column1"];
     $data = [["value1"]];
     $table->insert($columns, $data)->save();
     $this->assertEquals([], $table->getData());
 }
 public function testHasColumnReservedName()
 {
     $tableQuoted = new \Phinx\Db\Table('group', array(), $this->adapter);
     $tableQuoted->addColumn('value', 'string')->save();
     $this->assertFalse($tableQuoted->hasColumn('column2'));
     $this->assertTrue($tableQuoted->hasColumn('value'));
 }
Exemple #12
0
 public function testDropForeignKey()
 {
     // stub adapter
     $adapterStub = $this->getMock('\\Phinx\\Db\\Adapter\\MysqlAdapter', array(), array(array()));
     $adapterStub->expects($this->once())->method('dropForeignKey');
     $table = new \Phinx\Db\Table('ntable', array(), $adapterStub);
     $table->dropForeignKey('test');
 }
Exemple #13
0
 public function testAddIndexTwoTablesSameIndex()
 {
     $table = new \Phinx\Db\Table('table1', array(), $this->adapter);
     $table->addColumn('email', 'string')->save();
     $table2 = new \Phinx\Db\Table('table2', array(), $this->adapter);
     $table2->addColumn('email', 'string')->save();
     $this->assertFalse($table->hasIndex('email'));
     $this->assertFalse($table2->hasIndex('email'));
     $table->addIndex('email')->save();
     $table2->addIndex('email')->save();
     $this->assertTrue($table->hasIndex('email'));
     $this->assertTrue($table2->hasIndex('email'));
 }
Exemple #14
0
 public function testAddTimestamps()
 {
     $adapter = new MysqlAdapter(array());
     $table = new \Phinx\Db\Table('ntable', array(), $adapter);
     $table->addTimestamps();
     $columns = $table->getPendingColumns();
     $this->assertEquals('created_at', $columns[0]->getName());
     $this->assertEquals('timestamp', $columns[0]->getType());
     $this->assertEquals('updated_at', $columns[1]->getName());
     $this->assertEquals('timestamp', $columns[1]->getType());
     $this->assertTrue($columns[1]->isNull());
     $this->assertNull($columns[1]->getDefault());
 }