Issue #3004897 by clemens.tolboom, smustgrave, ridhimaabrol24, pooja saraah, ameymudras, ranjith_kumar_k_u, danielgry, larowlan, quietone: Respect tour status (disabled | enabled)
parent
d2398cc3e7
commit
23fc2b6c35
|
@ -234,6 +234,33 @@ class TourTest extends TourTestBasic {
|
|||
$this->assertCount(0, $elements, 'Did not find English variant of tip 1.');
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests enabling and disabling the tour tip functionality.
|
||||
*/
|
||||
public function testStatus() {
|
||||
// Set tour tip status as enabled.
|
||||
$tour = Tour::load('tour-test');
|
||||
$tour->setStatus(TRUE);
|
||||
$tour->save();
|
||||
|
||||
$this->drupalGet('tour-test-1');
|
||||
$this->assertSession()->statusCodeEquals(200);
|
||||
|
||||
// Tour tips should be visible on the page.
|
||||
$this->assertTourTips();
|
||||
|
||||
$tour->setStatus(FALSE);
|
||||
$tour->save();
|
||||
|
||||
// Navigate and verify the tour_test_1 tip is not found with
|
||||
// appropriate classes.
|
||||
$this->drupalGet('tour-test-1');
|
||||
$this->assertSession()->statusCodeEquals(200);
|
||||
|
||||
// No tips expected as tour is disabled.
|
||||
$this->assertTourTips(expectEmpty: TRUE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets tour tips from the JavaScript drupalSettings variable.
|
||||
*
|
||||
|
|
|
@ -28,8 +28,10 @@ abstract class TourTestBase extends BrowserTestBase {
|
|||
*
|
||||
* @param array $tips
|
||||
* A list of tips which provide either a "data-id" or "data-class".
|
||||
* @param bool $expectEmpty
|
||||
* Whether or not the field is expected to be Empty.
|
||||
*/
|
||||
public function assertTourTips($tips = []) {
|
||||
public function assertTourTips(array $tips = [], bool $expectEmpty = FALSE) {
|
||||
// Get the rendered tips and their data-id and data-class attributes.
|
||||
if (empty($tips)) {
|
||||
// Tips are rendered as drupalSettings values.
|
||||
|
@ -43,29 +45,33 @@ abstract class TourTestBase extends BrowserTestBase {
|
|||
}
|
||||
}
|
||||
|
||||
// If the tips are still empty we need to fail.
|
||||
if (empty($tips)) {
|
||||
$this->fail('Could not find tour tips on the current page.');
|
||||
$tip_count = count($tips);
|
||||
if ($tip_count === 0 && $expectEmpty) {
|
||||
// No tips found as expected.
|
||||
return;
|
||||
}
|
||||
else {
|
||||
// Check for corresponding page elements.
|
||||
$total = 0;
|
||||
$modals = 0;
|
||||
foreach ($tips as $tip) {
|
||||
if (!empty($tip['data-id'])) {
|
||||
$elements = $this->getSession()->getPage()->findAll('css', '#' . $tip['data-id']);
|
||||
$this->assertCount(1, $elements, new FormattableMarkup('Found corresponding page element for tour tip with id #%data-id', ['%data-id' => $tip['data-id']]));
|
||||
}
|
||||
elseif (!empty($tip['data-class'])) {
|
||||
$elements = $this->getSession()->getPage()->findAll('css', '.' . $tip['data-class']);
|
||||
$this->assertNotEmpty($elements, sprintf("Page element for tour tip with class .%s should be present", $tip['data-class']));
|
||||
}
|
||||
else {
|
||||
// It's a modal.
|
||||
$modals++;
|
||||
}
|
||||
$total++;
|
||||
if ($tip_count > 0 && $expectEmpty) {
|
||||
$this->fail(sprintf('No tips were expected but %d were found', $tip_count));
|
||||
}
|
||||
$this->assertGreaterThan(0, $tip_count);
|
||||
|
||||
// Check for corresponding page elements.
|
||||
$total = 0;
|
||||
$modals = 0;
|
||||
foreach ($tips as $tip) {
|
||||
if (!empty($tip['data-id'])) {
|
||||
$elements = $this->getSession()->getPage()->findAll('css', '#' . $tip['data-id']);
|
||||
$this->assertCount(1, $elements, new FormattableMarkup('Found corresponding page element for tour tip with id #%data-id', ['%data-id' => $tip['data-id']]));
|
||||
}
|
||||
elseif (!empty($tip['data-class'])) {
|
||||
$elements = $this->getSession()->getPage()->findAll('css', '.' . $tip['data-class']);
|
||||
$this->assertNotEmpty($elements, sprintf("Page element for tour tip with class .%s should be present", $tip['data-class']));
|
||||
}
|
||||
else {
|
||||
// It's a modal.
|
||||
$modals++;
|
||||
}
|
||||
$total++;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -85,6 +85,7 @@ function tour_page_bottom(array &$page_bottom) {
|
|||
|
||||
$results = \Drupal::entityQuery('tour')
|
||||
->condition('routes.*.route_name', $route_name)
|
||||
->condition('status', TRUE)
|
||||
->execute();
|
||||
if (!empty($results) && $tours = Tour::loadMultiple(array_keys($results))) {
|
||||
foreach ($tours as $id => $tour) {
|
||||
|
|
Loading…
Reference in New Issue