ImportPartialFormTest.php in Tome 8
File
modules/tome_sync/tests/src/Functional/ImportPartialFormTest.php
View source
<?php
namespace Drupal\Tests\tome_sync\Functional;
use Drupal\node\Entity\Node;
use Drupal\Tests\BrowserTestBase;
use Drupal\tome_sync\ContentIndexerTrait;
use Drupal\tome_sync\TomeSyncHelper;
class ImportPartialFormTest extends BrowserTestBase {
use ContentIndexerTrait;
protected $fileSystem;
public static $modules = [
'node',
'tome_sync',
'config',
];
protected $defaultTheme = 'stark';
protected function setUp() {
parent::setUp();
$this
->writeSettings([
'settings' => [
'tome_content_directory' => (object) [
'value' => $this->siteDirectory . '/files/tome/content',
'required' => TRUE,
],
],
]);
$this
->createContentType([
'type' => 'article',
]);
$this
->drupalLogin($this
->createUser([
'use tome sync',
'synchronize configuration',
]));
$this->fileSystem = \Drupal::service('file_system');
}
public function testImportPartialForm() {
$storage = \Drupal::service('tome_sync.storage.content');
$node1 = $this
->createNode([
'type' => 'article',
]);
$node1_name = TomeSyncHelper::getContentName($node1);
$node2 = $this
->createNode([
'type' => 'article',
]);
$node2_name = TomeSyncHelper::getContentName($node2);
$this
->drupalGet('/admin/config/tome/sync/import-partial');
$assert_session = $this
->assertSession();
$assert_session
->pageTextContains('Synchronize content and files');
$assert_session
->pageTextContains('No content has been changed or deleted');
$storage
->delete($node1_name);
$content = $storage
->read($node2_name);
$content['title'] = [
'Foobar',
];
$storage
->write($node2_name, $content);
$node3 = Node::create([
'type' => 'article',
'title' => 'My article',
'uuid' => \Drupal::service('uuid')
->generate(),
]);
$data = \Drupal::service('serializer')
->normalize($node3, 'json');
$node3_name = TomeSyncHelper::getContentName($node3);
$storage
->write($node3_name, $data);
$this
->indexContent($node3);
$this
->drupalGet('/admin/config/tome/sync/import-partial');
$assert_session
->pageTextNotContains('No content has been changed or deleted');
$this
->assertStringContainsString($node1_name, $assert_session
->elementExists('css', '[data-drupal-selector="edit-deleted"]')
->getText());
$this
->assertStringContainsString($node2_name, $assert_session
->elementExists('css', '[data-drupal-selector="edit-modified"]')
->getText());
$this
->assertStringContainsString($node3_name, $assert_session
->elementExists('css', '[data-drupal-selector="edit-added"]')
->getText());
$this
->submitForm([], 'Submit');
$assert_session
->pageTextContains('Import complete');
$assert_session
->pageTextContains('No content has been changed or deleted');
}
}