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)); }