You are here

public function LinkOutputLocationTest::testLinkLocation in Flag 8.4

Test the link output.

File

tests/src/Functional/LinkOutputLocationTest.php, line 79

Class

LinkOutputLocationTest
Tests the Flag link is output in various locations.

Namespace

Drupal\Tests\flag\Functional

Code

public function testLinkLocation() {

  // Turn off all link output for the flag.
  $flag_config = $this->flag
    ->getFlagTypePlugin()
    ->getConfiguration();
  $flag_config['show_as_field'] = FALSE;
  $flag_config['show_in_links'] = [];
  $this->flag
    ->getFlagTypePlugin()
    ->setConfiguration($flag_config);
  $this->flag
    ->save();

  // Check the full node shows no flag link.
  $this
    ->drupalGet('node/' . $this->node
    ->id());
  $this
    ->assertNoPseudofield($this->flag, $this->node);

  // TODO: check no entity link.
  // Check the teaser view mode for the node shows no flag link.
  $this
    ->drupalGet('node');
  $this
    ->assertNoPseudofield($this->flag, $this->node);

  // TODO: check no entity link.
  // Turn on 'show as field'.
  // By default, this will be visible on the field display configuration.
  $flag_config = $this->flag
    ->getFlagTypePlugin()
    ->getConfiguration();
  $flag_config['show_as_field'] = TRUE;
  $flag_config['show_in_links'] = [];
  $this->flag
    ->getFlagTypePlugin()
    ->setConfiguration($flag_config);
  $this->flag
    ->save();

  // Check the full node shows the flag link as a field.
  $this
    ->drupalGet('node/' . $this->node
    ->id());
  $this
    ->assertPseudofield($this->flag, $this->node);

  // TODO: check no entity link.
  // Check the teaser view mode shows the flag link as a field.
  $this
    ->drupalGet('node');
  $this
    ->assertPseudofield($this->flag, $this->node);

  // TODO: check no entity link.
  // Hide the flag field on teaser view mode.
  $edit = [
    'fields[flag_' . $this->flag
      ->id() . '][region]' => 'hidden',
  ];
  $this
    ->drupalPostForm('admin/structure/types/manage/article/display/teaser', $edit, $this
    ->t('Save'));

  // Check the form was saved successfully.
  $this
    ->assertText('Your settings have been saved.');

  // Check the full node still shows the flag link as a field.
  $this
    ->drupalGet('node/' . $this->node
    ->id());
  $this
    ->assertPseudofield($this->flag, $this->node);

  // TODO: check no entity link.
  // Check the teaser view mode does not show the flag link as a field.
  $this
    ->drupalGet('node');
  $this
    ->assertNoPseudofield($this->flag, $this->node);

  // TODO: check no entity link.
  // TODO:
  // Turn on the entity link, and turn off the field.
  // Check the full and teaser view modes.
  // Turn off the entity link for one view mode.
  // Check both view modes are as expected.
}