Ejemplo n.º 1
0
 public function testForeignKeyIsForeignPrimaryKey()
 {
     $database = $this->getDatabaseMock('bookstore');
     $platform = $this->getPlatformMock();
     $foreignTable = $this->getTableMock('authors');
     $localTable = $this->getTableMock('books', ['platform' => $platform, 'database' => $database]);
     $idColumn = $this->getColumnMock('id');
     $authorIdColumn = $this->getColumnMock('author_id');
     $database->expects($this->any())->method('getTable')->with($this->equalTo('authors'))->will($this->returnValue($foreignTable));
     $foreignTable->expects($this->once())->method('getPrimaryKey')->will($this->returnValue([$idColumn]));
     $foreignTable->expects($this->any())->method('getColumn')->with($this->equalTo('id'))->will($this->returnValue($idColumn));
     $localTable->expects($this->any())->method('getColumn')->with($this->equalTo('author_id'))->will($this->returnValue($authorIdColumn));
     $fk = new ForeignKey();
     $fk->setTable($localTable);
     $fk->setForeignTableCommonName('authors');
     $fk->addReference('author_id', 'id');
     $fkMapping = $fk->getColumnObjectsMapping();
     $this->assertTrue($fk->isForeignPrimaryKey());
     $this->assertCount(1, $fk->getForeignColumnObjects());
     $this->assertSame($authorIdColumn, $fkMapping[0]['local']);
     $this->assertSame($idColumn, $fkMapping[0]['foreign']);
     $this->assertSame($idColumn, $fk->getForeignColumn(0));
 }