You are here

public function VoteTest::testAnonymousVoting in Voting API 8.3

Test voting by anonymous users.

File

tests/src/Functional/VoteTest.php, line 137

Class

VoteTest
Tests the Voting API basics.

Namespace

Drupal\Tests\votingapi\Functional

Code

public function testAnonymousVoting() {
  $vote_storage = $this->container
    ->get('entity_type.manager')
    ->getStorage('vote');
  $node = $this
    ->drupalCreateNode();

  // Save a few votes from different anonymous users.
  $values = [
    10 => 'source_1',
    20 => 'source_2',
    60 => 'source_2',
  ];
  foreach ($values as $value => $source) {
    $vote_storage
      ->create([
      'type' => 'vote',
      'entity_id' => $node
        ->id(),
      'entity_type' => 'node',
      'user_id' => 0,
      'value' => $value,
      'vote_source' => $source,
    ])
      ->save();
  }

  // Retrieve the votes. For now, just count them.
  $votes_from_source_1 = $vote_storage
    ->getUserVotes(0, 'vote', 'node', 1, 'source_1');
  $votes_from_source_2 = $vote_storage
    ->getUserVotes(0, 'vote', 'node', 1, 'source_2');
  $this
    ->assertCount(1, $votes_from_source_1, 'There is 1 vote from the first source.');
  $this
    ->assertCount(2, $votes_from_source_2, 'There are 2 votes from the second source.');

  // Delete the votes from source_2 and repeat the test.
  $vote_storage
    ->deleteUserVotes(0, 'vote', 'node', 1, 'source_2');
  $votes_from_source_1 = $vote_storage
    ->getUserVotes(0, 'vote', 'node', 1, 'source_1');
  $votes_from_source_2 = $vote_storage
    ->getUserVotes(0, 'vote', 'node', 1, 'source_2');
  $this
    ->assertCount(1, $votes_from_source_1, 'There is still 1 vote from the first source.');
  $this
    ->assertCount(0, $votes_from_source_2, 'There are now 0 votes from the second source.');
}