public function LiveblogTest::testWithPusher in Thunder 6.0.x
Same name and namespace in other branches
- 8.2 tests/src/FunctionalJavascript/Integration/LiveblogTest.php \Drupal\Tests\thunder\FunctionalJavascript\Integration\LiveblogTest::testWithPusher()
- 8.3 tests/src/FunctionalJavascript/Integration/LiveblogTest.php \Drupal\Tests\thunder\FunctionalJavascript\Integration\LiveblogTest::testWithPusher()
- 8.4 tests/src/FunctionalJavascript/Integration/LiveblogTest.php \Drupal\Tests\thunder\FunctionalJavascript\Integration\LiveblogTest::testWithPusher()
- 6.1.x tests/src/FunctionalJavascript/Integration/LiveblogTest.php \Drupal\Tests\thunder\FunctionalJavascript\Integration\LiveblogTest::testWithPusher()
Testing of module integration.
File
- tests/
src/ FunctionalJavascript/ Integration/ LiveblogTest.php, line 50
Class
- LiveblogTest
- Testing integration of "liveblog" module.
Namespace
Drupal\Tests\thunder\FunctionalJavascript\IntegrationCode
public function testWithPusher() {
$pusherCredentials = json_decode(getenv('PUSHER_CREDENTIALS'), TRUE);
if (empty($pusherCredentials)) {
if ($this
->isForkPullRequest()) {
$this
->markTestSkipped("Skip Live Blog test (missing secure environment variables)");
return;
}
$this
->fail("pusher credentials not provided.");
return;
}
if (!\Drupal::service('module_installer')
->install([
'thunder_liveblog',
])) {
$this
->fail("liveblog module couldn't be installed.");
return;
}
// Configure Pusher.
$this
->logWithRole('administrator');
$page = $this
->getSession()
->getPage();
$this
->drupalGet('admin/config/content/liveblog');
$fieldValues = [
'plugin_settings[app_id]' => $pusherCredentials['app_id'],
'plugin_settings[key]' => $pusherCredentials['key'],
'plugin_settings[secret]' => $pusherCredentials['secret'],
'plugin_settings[cluster]' => $pusherCredentials['cluster'],
'channel_prefix' => getenv('TRAVIS_JOB_NUMBER') ? 'travis-' . getenv('TRAVIS_JOB_NUMBER') : 'liveblog-test',
];
$this
->setFieldValues($page, $fieldValues);
$this
->click('input[data-drupal-selector="edit-submit"]');
$this
->waitUntilVisible('.messages--status');
$this
->logWithRole(static::$defaultUserRole);
// Add liveblog node.
$fieldValues = [
'title[0][value]' => 'Test Liveblog',
'field_highlights[values][6]' => 'element',
'field_posts_number_initial[0][value]' => '1',
];
$this
->drupalGet('node/add/liveblog');
$this
->assertSession()
->assertWaitOnAjaxRequest();
$this
->expandAllTabs(1);
$this
->setFieldValues($this
->getSession()
->getPage(), $fieldValues);
// 1 saves it as published in this case.
$this
->setPublishedStatus(TRUE);
$this
->clickSave();
// Add first post.
$page = $this
->getSession()
->getPage();
$this
->assertSession()
->assertWaitOnAjaxRequest();
$this
->liveblogSetTitle($page, 'Normal post');
$this
->liveblogSetBody("This is a normal text");
$this
->clickButtonDrupalSelector($page, "edit-submit");
$this
->waitUntilVisible('article[data-postid="1"]', 10000);
// Add post with image.
$this
->liveblogSetTitle($page, 'Image post');
$this
->clickDropButton('field_embed_media_image_add_more', FALSE);
$this
->selectMedia("field_embed_media_0_subform_field_image", 'image_browser', [
'media:1',
]);
$this
->liveblogSetBody('Very nice image post you have here!');
$this
->clickButtonDrupalSelector($page, "edit-submit");
$this
->createScreenshot($this
->getScreenshotFolder() . '/ModuleIntegrationTest_Liveblog_ImagePost_' . date('Ymd_His') . '.png');
$this
->waitUntilVisible('article[data-postid="2"]', 10000);
$this
->waitUntilVisible('article[data-postid="2"] img.b-loaded', 10000);
// Add post with twitter.
$this
->liveblogSetTitle($page, 'Twitter post');
$this
->createScreenshot($this
->getScreenshotFolder() . '/ModuleIntegrationTest_Liveblog_TwitterPost_Add_' . date('Ymd_His') . '.png');
$this
->clickDropButton('field_embed_media_twitter_add_more');
$this
->assertSession()
->assertWaitOnAjaxRequest();
$socialUrl = 'https://twitter.com/tweetsauce/status/778001033142284288';
if ($page
->hasField('field_embed_media[0][subform][field_media][0][inline_entity_form][field_url][0][value]')) {
$page
->fillField('field_embed_media[0][subform][field_media][0][inline_entity_form][field_url][0][value]', $socialUrl);
}
elseif ($page
->hasField('field_embed_media[0][subform][field_media][0][inline_entity_form][field_url][0][uri]')) {
$page
->fillField('field_embed_media[0][subform][field_media][0][inline_entity_form][field_url][0][uri]', $socialUrl);
}
$this
->liveblogSetBody('Very nice twitter post you have here!');
$this
->clickButtonDrupalSelector($page, "edit-submit");
$this
->createScreenshot($this
->getScreenshotFolder() . '/ModuleIntegrationTest_Liveblog_TwitterPost_' . date('Ymd_His') . '.png');
$this
->waitUntilVisible('article[data-postid="3"]', 10000);
$this
->waitUntilVisible('.twitter-tweet-rendered [data-tweet-id="778001033142284288"]', 10000);
// We can't check inside Twitter widget is it loaded or not, that's why
// plain wait is used.
$this
->getSession()
->wait(5000);
// Check site with anonymous user.
$url = $this
->getUrl();
$this
->drupalLogout();
$this
->drupalGet($url);
$this
->waitUntilVisible('article[data-postid="3"]');
$this
->assertSession()
->elementNotExists('css', 'article[data-postid="2"]');
$this
->assertSession()
->elementNotExists('css', 'article[data-postid="1"]');
$this
->scrollElementInView('article[data-postid="3"]');
$this
->waitUntilVisible('article[data-postid="2"]');
$this
->waitUntilVisible('article[data-postid="1"]');
}