1 file.test protected FileTestHelper::uploadNodeFile($file, $field_name, $nid_or_type, $new_revision = TRUE, $extras = array())

Uploads a file to a node.

Parameters

File|File[] $file: One or more File objects.

string $field_name: The field name.

mixed $nid_or_type: If Node ID, update existing or create a new of node type.

bool $new_revision: If true, create a new revision.

array $extras: Extra settings for the new node.

Return value

int: Node ID.

File

core/modules/file/tests/file.test, line 295
Tests for file.module.

Class

FileTestHelper
Provides methods specifically for testing File module's field handling.

Code

protected function uploadNodeFile($file, $field_name, $nid_or_type, $new_revision = TRUE, $extras = array()) {
  $langcode = LANGUAGE_NONE;
  $edit = array(
    "title" => $this->randomName(),
    'revision' => (string) (int) $new_revision,
  );

  if (is_numeric($nid_or_type)) {
    $nid = $nid_or_type;
  }
  else {
    // Add a new node.
    $extras['type'] = $nid_or_type;
    $node = $this->backdropCreateNode($extras);
    $nid = $node->nid;
    // Save at least one revision to better simulate a real site.
    $this->backdropCreateNode(get_object_vars($node));
    $node = node_load($nid, NULL, TRUE);
    $this->assertNotEqual($nid, $node->vid, 'Node revision exists.');
  }

  $field = field_info_field($field_name);
  $name = 'files[' . $field_name . '_' . $langcode . '_0]';
  // Upload as an array of files if multiple. The HTML input for a multiple
  // file field has a trailing [] in the name (added by form_process_file()).
  if ($field['cardinality'] != 1) {
    $files = is_array($file) ? $file : array($file);
    $file_paths = array();
    foreach ($files as $file) {
      $file_paths[] = backdrop_realpath($file->uri);
    }
    $edit[$name . '[]'] = $file_paths;
  }
  else {
    $edit[$name] = backdrop_realpath($file->uri);
  }

  $this->backdropPost("node/$nid/edit", $edit, t('Save'));

  return $nid;
}