/** * @param string $entityType * @param object $entity * @param array $data * @return object */ public function execute($entityType, $entity, $data = []) { $hydrator = $this->metadataPool->getHydrator($entityType); $entityData = $this->createEntityRow->execute($entityType, array_merge($hydrator->extract($entity), $data)); $entity = $hydrator->hydrate($entity, $entityData); return $entity; }
/** * @param $inputData * @param $tableData * @param $preparedData * @param $finalData * @dataProvider executeDataProvider */ public function testExecute($inputData, $tableData, $preparedData, $finalData) { $this->connection->expects($this->any())->method('describeTable')->with('entity_table')->willReturn($tableData); $this->connection->expects($this->once())->method('insert')->with('entity_table', $preparedData); $actualData = $this->subject->execute('Test\\Entity\\Type', $inputData); $this->assertEquals($finalData, $actualData); }