/** * @dataProvider provideInsertUpdateDeleteDatabaseAware * @param array $database * @param string $tableName */ public function testUpdate(array $database, $tableName) { $rm = self::createRecordManager($database); $randomGenerator = new FieldValuesGenerator(); $conn = $rm->getConnection(); $table = $rm->getTable($tableName); $fields = $table->getFields(); $owningRelations = $table->getReferencedRelationsIndexedByOwningField(); // build a minimal record and insert - tested by testInsert. $data = array(); foreach ($owningRelations as $fieldName => $relation) { if ($randomGenerator->matchType($fields[$fieldName], $randomGenerator::REQUIRED)) { $data[$fieldName] = $this->insertRequiredLocalRelationGraph($rm, $relation); } } $data = $randomGenerator->getRequiredRandomRecordData($fields, $data); $conn->insert($table, $data); $id = $conn->getLastInsertId($tableName); // update record $data = array(); foreach ($owningRelations as $fieldName => $relation) { $data[$fieldName] = $this->insertRequiredLocalRelationGraph($rm, $relation); } $data = $randomGenerator->getMaximalRandomRecordDataWithoutAutoIncrementFields($fields, $data); $updatedRowCount = $conn->update($table, $data, $id); $this->assertEquals(1, $updatedRowCount); $record = $table->findByPk($id); $recordData = $record->getData(); if (!isset($data['id'])) { unset($recordData['id']); } else { $recordData['id'] = $record->getIdentifier(); } $recordData = array_filter($recordData); $this->assertEquals($data, $recordData); }