Beispiel #1
0
 /**
  * @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);
 }