public function WebformSubmissionImportExportFunctionalTest::testSubmissionExport in Webform 8.5
Same name and namespace in other branches
- 6.x modules/webform_submission_export_import/tests/src/Functional/WebformSubmissionImportExportFunctionalTest.php \Drupal\Tests\webform_submission_export_import\Functional\WebformSubmissionImportExportFunctionalTest::testSubmissionExport()
Test submission import.
File
- modules/
webform_submission_export_import/ tests/ src/ Functional/ WebformSubmissionImportExportFunctionalTest.php, line 31
Class
- WebformSubmissionImportExportFunctionalTest
- Webform submission export/import test.
Namespace
Drupal\Tests\webform_submission_export_import\FunctionalCode
public function testSubmissionExport() {
$this
->drupalLogin($this->rootUser);
$export_csv_uri = 'public://test_submission_export_import-export.csv';
$export_csv_url = file_create_url('public://test_submission_export_import-export.csv');
$webform = Webform::load('test_submission_export_import');
/** @var \Drupal\webform_submission_export_import\WebformSubmissionExportImportImporterInterface $importer */
$importer = \Drupal::service('webform_submission_export_import.importer');
$importer
->setWebform($webform);
$importer
->setImportUri($export_csv_url);
// Create 3 submissions.
/** @var \Drupal\webform\WebformSubmissionInterface[] $submissions */
$submissions = [
WebformSubmission::load($this
->postSubmissionTest($webform)),
WebformSubmission::load($this
->postSubmissionTest($webform)),
WebformSubmission::load($this
->postSubmissionTest($webform)),
];
// Create CSV export.
$this
->drupalPostForm('/admin/structure/webform/manage/test_submission_export_import/results/download', [
'exporter' => 'webform_submission_export_import',
], 'Download');
file_put_contents($export_csv_uri, $this
->getRawContent());
/**************************************************************************/
// Import CSV export without any changes.
$actual_stats = $importer
->import();
WebformElementHelper::convertRenderMarkupToStrings($actual_stats);
$expected_stats = [
'created' => 0,
'updated' => 3,
'skipped' => 0,
'total' => 3,
'warnings' => [
1 => [],
2 => [],
3 => [],
],
'errors' => [
1 => [],
2 => [],
3 => [],
],
];
$this
->assertEquals($expected_stats, $actual_stats);
// Check that submission values are unchanged.
foreach ($submissions as $original_submission) {
$expected_values = $original_submission
->toArray(TRUE);
$updated_submission = $this
->loadSubmissionByProperty('uuid', $original_submission
->uuid());
$actual_values = $updated_submission
->toArray(TRUE);
$this
->assertEquals($expected_values, $actual_values);
}
// Alter the first submission.
$submissions[0]
->setCompletedTime(time() - 1000);
$submissions[0]
->setNotes('This is a note');
$submissions[0]
->save();
// @todo Determine why the below test is failing via DrupalCI.
return;
// Deleted the third submission.
$file_uri = file_create_url(File::load($submissions[2]
->getElementData('file'))
->getFileUri());
$files_uri = file_create_url(File::load($submissions[2]
->getElementData('files')[0])
->getFileUri());
$submissions[2]
->delete();
unset($submissions[2]);
// Import CSV export without any changes.
$actual_stats = $importer
->import();
WebformElementHelper::convertRenderMarkupToStrings($actual_stats);
$this
->debug($actual_stats);
$expected_stats = [
'created' => 1,
'updated' => 2,
'skipped' => 0,
'total' => 3,
'warnings' => [
1 => [],
2 => [],
3 => [
0 => '[file] Unable to read file from URL (' . $file_uri . ').',
1 => '[files] Unable to read file from URL (' . $files_uri . ').',
],
],
'errors' => [
1 => [],
2 => [],
3 => [],
],
];
$this
->assertEquals($expected_stats, $actual_stats);
// Check that submission 1 values reset to original values.
$original_submission = $submissions[0];
$expected_values = $original_submission
->toArray(TRUE);
$updated_submission = $this
->loadSubmissionByProperty('uuid', $original_submission
->uuid());
$actual_values = $updated_submission
->toArray(TRUE);
// Check that changes and notes were updated.
$this
->assertNotEqual($expected_values['completed'], $actual_values['completed']);
$this
->assertNotEqual($expected_values['notes'], $actual_values['notes']);
// Check that notes was reset.
$this
->assertEqual('This is a note', $expected_values['notes']);
$this
->assertEqual('', $actual_values['notes']);
// Unset changed and notes.
unset($expected_values['completed'], $expected_values['notes']);
unset($actual_values['completed'], $actual_values['notes']);
// Check all other values remained the same.
$this
->assertEquals($expected_values, $actual_values);
}