You are here

public function SimplenewsSynchronizeFieldsFormTest::testSubscriberFormFieldSync in Simplenews 8

Tests that fields are synchronized using the Subscriber form.

File

src/Tests/SimplenewsSynchronizeFieldsFormTest.php, line 50

Class

SimplenewsSynchronizeFieldsFormTest
Tests that shared fields are synchronized when using forms.

Namespace

Drupal\simplenews\Tests

Code

public function testSubscriberFormFieldSync() {

  // Create a subscriber for the user.
  $subscriber = Subscriber::create(array(
    // Subscribers are linked to users by the uid field.
    'uid' => $this->user
      ->id(),
    'mail' => 'anything@example.com',
  ));
  $subscriber
    ->save();

  // Edit subscriber field and assert user field is changed accordingly.
  $this
    ->drupalLogin($this->user);
  $this
    ->drupalGet('admin/people/simplenews/edit/' . $subscriber
    ->id());
  $this
    ->assertField('field_shared[0][value]');
  $this
    ->assertRaw($this->user->field_shared->value);
  $new_value = $this
    ->randomMachineName();
  $this
    ->drupalPostForm(NULL, array(
    'field_shared[0][value]' => $new_value,
  ), t('Save'));
  $this
    ->drupalGet('admin/people/simplenews/edit/' . $subscriber
    ->id());
  $this
    ->assertRaw($new_value);
  $this->user = User::load($this->user
    ->id());
  $this
    ->assertEqual($this->user->field_shared->value, $new_value);

  // Unset the sync setting and assert field is not synced.
  $this
    ->drupalPostForm('admin/config/people/simplenews/settings/subscriber', array(
    'simplenews_sync_fields' => FALSE,
  ), t('Save configuration'));
  $unsynced_value = $this
    ->randomMachineName();
  $this
    ->drupalPostForm('admin/people/simplenews/edit/' . $subscriber
    ->id(), array(
    'field_shared[0][value]' => $unsynced_value,
  ), t('Save'));
  $this
    ->drupalGet('admin/people/simplenews/edit/' . $subscriber
    ->id());
  $this
    ->assertRaw($unsynced_value);
  $this->user = User::load($this->user
    ->id());
  $this
    ->assertEqual($this->user->field_shared->value, $new_value);
  $this
    ->assertNotEqual($this->user->field_shared->value, $unsynced_value);
}