You are here

public function IndividualUiTest::testIndividualRevisions in CRM Core 8.3

Test individual revisions.

File

modules/crm_core_contact/tests/src/Functional/IndividualUiTest.php, line 339

Class

IndividualUiTest
Tests the UI for Individual CRUD operations.

Namespace

Drupal\Tests\crm_core_contact\Functional

Code

public function testIndividualRevisions() {
  $user = $this
    ->drupalCreateUser([
    'create crm_core_individual entities',
    'view any crm_core_individual entity',
    'edit any crm_core_individual entity',
    'view all crm_core_individual revisions',
    'revert all crm_core_individual revisions',
  ]);
  $this
    ->drupalLogin($user);
  $this
    ->drupalPostForm('crm-core/individual/add/customer', [
    'name[0][given]' => 'rev',
    'name[0][family]' => '1',
  ], 'Save Customer');
  $this
    ->drupalPostForm('crm-core/individual/1/edit', [
    'name[0][family]' => '2',
  ], 'Save Customer');
  $this
    ->drupalPostForm('crm-core/individual/1/edit', [
    'name[0][family]' => '3',
  ], 'Save Customer');
  $this
    ->clickLink('Revisions');
  $this
    ->assertSession()
    ->linkByHrefExists('crm-core/individual/1');
  $this
    ->assertSession()
    ->linkByHrefExists('crm-core/individual/1/revisions/1/view');
  $this
    ->assertSession()
    ->linkByHrefExists('crm-core/individual/1/revisions/2/view');
  $this
    ->drupalGet('crm-core/individual/1/revisions/1/view');
  $this
    ->assertSession()
    ->pageTextContains('rev 1');
  $this
    ->drupalGet('crm-core/individual/1/revisions/2/view');
  $this
    ->assertSession()
    ->pageTextContains('rev 2');

  /** @var \Drupal\crm_core_contact\ContactInterface $individual */
  $individual = Individual::create([
    'type' => 'customer',
    'name' => [
      [
        'given' => 'Second',
        'family' => 'Individual',
      ],
    ],
  ]);
  $individual
    ->save();
  $individual
    ->setNewRevision(TRUE);
  $individual
    ->isDefaultRevision(FALSE);
  $individual
    ->save();
  $this
    ->drupalGet($individual
    ->toUrl('version-history'));

  // Assert we have one revision link and current revision.
  $this
    ->assertEqual($individual
    ->getRevisionId(), 5);
  $this
    ->assertSession()
    ->linkByHrefExists('crm-core/individual/' . $individual
    ->id() . '/revisions/5/view');
  $this
    ->assertSession()
    ->linkByHrefExists('crm-core/individual/' . $individual
    ->id());

  // Assert we have revision revert link.
  $this
    ->assertSession()
    ->linkByHrefExists('crm-core/individual/' . $individual
    ->id() . '/revisions/5/revert');
  $this
    ->drupalGet('crm-core/individual/' . $individual
    ->id() . '/revisions/5/revert');
  $this
    ->assertSession()
    ->statusCodeEquals(200);

  // Check view revision route.
  $this
    ->drupalGet('crm-core/individual/' . $individual
    ->id() . '/revisions/5/view');
  $this
    ->assertSession()
    ->pageTextContains('Second Individual');
}