public function NodeImportNode::testBasicNode in Node import 6
Test import of basic node.
File
- tests/
supported/ node.test, line 31
Class
Code
public function testBasicNode() {
// Type to import.
$type = $this
->drupalCreateContentType(array(
'title_label' => $this
->randomName() . ' (title)',
// Test automap
'body_label' => $this
->randomName() . ' (body)',
// Test automap
'min_word_count' => 1,
));
// Create the user doing the import.
$perms = array(
'create ' . $type->name . ' content',
);
$admin = $this
->nodeImportCreateUser($perms);
$admin_role = array_pop(array_diff(array_keys($admin->roles), array(
DRUPAL_ANONYMOUS_RID,
DRUPAL_AUTHENTICATED_RID,
)));
// Create two filters (one this role can use and one this role can not use).
$filter_admin = $this
->drupalCreateUser(array(
'administer filters',
));
$this
->drupalLogin($filter_admin);
$filter_allow = array(
'name' => 'filter admin role (' . $admin_role . ') can use',
);
$filter_deny = array(
'name' => 'filter admin role (' . $admin_role . ') can not use',
);
$filter_default = array(
'format' => variable_get('filter_default_format', 1),
);
foreach (user_roles() as $rid => $role) {
$filter_allow["roles[{$rid}]"] = $rid == $admin_role;
$filter_deny["roles[{$rid}]"] = FALSE;
}
$this
->drupalPost('admin/settings/filters/add', $filter_allow, t('Save configuration'));
$this
->drupalPost('admin/settings/filters/add', $filter_deny, t('Save configuration'));
$result = db_query("SELECT format, name FROM {filter_formats}");
while ($filter = db_fetch_object($result)) {
if ($filter->name == $filter_allow['name']) {
$filter_allow['format'] = $filter->format;
}
if ($filter->name == $filter_deny['name']) {
$filter_deny['format'] = $filter->format;
}
if ($filter->format == variable_get('filter_default_format', 1)) {
$filter_default['name'] = $filter->name;
}
}
$this
->drupalLogout();
// Create a file to import.
$data = array(
array(
$type->title_label,
$type->body_label,
'format',
),
// Automap header
array(
$this
->randomName(),
$this
->randomName(),
'',
),
// OK - 1
array(
'',
$this
->randomName(),
'',
),
// No title - 2
array(
$this
->randomName(),
'',
'',
),
// Body too short - 3
array(
$this
->randomName(),
$this
->randomName(),
$filter_default['name'],
),
// OK - 4
array(
$this
->randomName(),
$this
->randomName(),
$filter_default['format'],
),
// OK - 5
array(
$this
->randomName(),
$this
->randomName(),
$filter_allow['name'],
),
// OK - 6
array(
$this
->randomName(),
$this
->randomName(),
$filter_allow['format'],
),
// OK - 7
array(
$this
->randomName(),
$this
->randomName(),
$filter_deny['name'],
),
// No such filter - 8
array(
$this
->randomName(),
$this
->randomName(),
$filter_deny['format'],
),
);
$path = $this
->nodeImportCreateFile($data);
// Create a new import task.
$edit = array(
'type' => "node:" . $type->name,
'file' => $path,
);
$this
->drupalLogin($admin);
$taskid = $this
->nodeImportCreateTask($edit);
// No need to continue if the task was not created.
if ($taskid === FALSE) {
return;
}
// Finish all pending import tasks.
$this
->nodeImportDoAllTasks();
// Check all rows.
$results = db_query("SELECT * FROM {node_import_status} WHERE taskid = %d", $taskid);
$i = 0;
while ($result = db_fetch_array($results)) {
$i++;
$result['errors'] = unserialize($result['errors']);
$node = NULL;
if ($result['status'] == NODE_IMPORT_STATUS_DONE) {
$node = node_load($result['objid']);
}
switch ($i) {
case 1:
// OK
$this
->assertRowStatusDONE($result);
$this
->assertNotNull($node, t('Node exists (nid: %nid).', array(
'%nid' => $result['objid'],
)), 'Node import');
$this
->assertEqual($node->title, $data[$i][0], t('Title correctly set.'), 'Node import');
$this
->assertEqual($node->body, $data[$i][1], t('Body correctly set.'), 'Node import');
$this
->assertEqual($node->format, variable_get('filter_default_format', 1), t('Input format correctly set.'), 'Node import');
break;
case 2:
// No title
$this
->assertRowStatusERROR($result);
$this
->assertRowErrorContains($result, t('!name field is required.', array(
'!name' => $data[0][0],
)), t('Error on empty title.'));
break;
case 3:
// Body too short
$this
->assertRowStatusERROR($result);
$this
->assertRowErrorContains($result, t('!name field is required.', array(
'!name' => $data[0][1],
)), t('Error on empty body.'));
break;
case 4:
// OK
case 5:
$this
->assertRowStatusDONE($result);
$this
->assertNotNull($node, t('Node exists (nid: %nid).', array(
'%nid' => $result['objid'],
)), 'Node import');
$this
->assertEqual($node->title, $data[$i][0], t('Title correctly set.'), 'Node import');
$this
->assertEqual($node->body, $data[$i][1], t('Body correctly set.'), 'Node import');
$this
->assertEqual($node->format, $filter_default['format'], t('Input format correctly set.'), 'Node import');
break;
case 6:
// OK
case 7:
$this
->assertRowStatusDONE($result);
$this
->assertNotNull($node, t('Node exists (nid: %nid).', array(
'%nid' => $result['objid'],
)), 'Node import');
$this
->assertEqual($node->title, $data[$i][0], t('Title correctly set.'), 'Node import');
$this
->assertEqual($node->body, $data[$i][1], t('Body correctly set.'), 'Node import');
$this
->assertEqual($node->format, $filter_allow['format'], t('Input format correctly set.'), 'Node import');
break;
case 8:
// No such filter
$this
->assertRowStatusERROR($result);
$this
->assertRowErrorContains($result, t('Input error: %value is not allowed for %name (not in allowed values list).', array(
'%value' => $filter_deny['name'],
'%name' => t('Input format'),
)), t('Error on non-existing filter.'));
break;
case 9:
// No such filter
$this
->assertRowStatusERROR($result);
$this
->assertRowErrorContains($result, t('Input error: %value is not allowed for %name (not in allowed values list).', array(
'%value' => $filter_deny['format'],
'%name' => t('Input format'),
)), t('Error on non-existing filter.'));
break;
}
}
$this
->assertTrue($i == 9, t('Correct number of rows (%d) were imported.', array(
'%d' => $i,
)), 'Node import');
}