salesforce-8.x-4.x-dev/modules/salesforce_mapping_ui/src/Tests/SalesforceMappingCrudFormTest.php

modules/salesforce_mapping_ui/src/Tests/SalesforceMappingCrudFormTest.php
<?php

namespace Drupal\salesforce_mapping_ui\Tests;

use Drupal\Core\StringTranslation\StringTranslationTrait;
use Drupal\Tests\BrowserTestBase;

/**
 * Tests for salesforce admin settings.
 *
 * @group salesforce_mapping
 */
class SalesforceMappingCrudFormTest extends BrowserTestBase {

  /**
   * Default theme required for D9.
   *
   * @var string
   */
  protected $defaultTheme = 'stark';

  /**
   * Modules to enable.
   *
   * @var array
   */
  protected static $modules = [
    'salesforce',
    'salesforce_test_rest_client',
    'salesforce_mapping',
    'salesforce_mapping_ui',
    'salesforce_mapping_test',
    'user',
    'link',
    'dynamic_entity_reference',
    'taxonomy',
  ];

  /**
   * Admin user.
   *
   * @var \Drupal\user\Entity\User
   */
  protected $adminSalesforceUser;

  /**
   * {@inheritdoc}
   */
  protected function setUp(): void {
    parent::setUp();

    // Admin salesforce user.
    $this->adminSalesforceUser = $this->drupalCreateUser(['administer salesforce mapping']);
  }

  /**
   * Tests webform admin settings.
   */
  public function testMappingCrudForm() {
    $mappingStorage = \Drupal::entityTypeManager()
      ->getStorage('salesforce_mapping');
    $this->drupalLogin($this->adminSalesforceUser);

    $this->drupalGet('admin/structure/salesforce/mappings/add');
    /* Salesforce Mapping Add Form */
    $mapping_name = 'mapping' . rand(100, 10000);
    $post = [
      'id' => $mapping_name,
      'label' => $mapping_name,
      'drupal_entity_type' => 'node',
      'drupal_bundle' => 'salesforce_mapping_test_content',
      'salesforce_object_type' => 'Contact',
    ];
    $this->submitForm($post, 'Save');
    $this->assertSession()
      ->pageTextContainsOnce('The mapping has been successfully saved.');

    $mapping = $mappingStorage->load($mapping_name);
    // Make sure mapping was saved correctly.
    $this->assertEquals($mapping->id(), $mapping_name);
    $this->assertEquals($mapping->label(), $mapping_name);

    /* Salesforce Mapping Edit Form */
    // Need to rebuild caches before proceeding to edit link.
    drupal_flush_all_caches();
    $this->drupalGet('admin/structure/salesforce/mappings/manage/' . $mapping_name);
    $post = [
      'label' => $this->randomMachineName(),
      'drupal_entity_type' => 'node',
      'drupal_bundle' => 'salesforce_mapping_test_content',
      'salesforce_object_type' => 'Contact',
    ];
    $this->submitForm($post, 'Save');
    $this->assertSession()->pageTextContains($post['label']);

    // Test simply adding a field plugin of every possible type. This is not
    // great coverage, but will at least make sure our plugin definitions don't
    // cause fatal errors.
    $mappingFieldsPluginManager = \Drupal::service('plugin.manager.salesforce_mapping_field');
    $field_plugins = $mappingFieldsPluginManager->getDefinitions();

    $post = [];
    $i = 0;
    $this->drupalGet('admin/structure/salesforce/mappings/manage/' . $mapping_name . '/fields');
    foreach ($field_plugins as $definition) {
      if (call_user_func([$definition['class'], 'isAllowed'], $mapping)) {
        // Add a new field:
        $post['buttons[field_type]'] = $definition['id'];
        $this->submitForm($post, 'Add a field mapping');
        // Confirm that the new field shows up:
        $this->assertSession()->pageTextContains($definition['label']);

        // @todo need an interface for field plugins that will tell us which
        // config values are applicable.
        // Add all components of this field plugin to our post array to build up
        // the mapping.
        $this->assertSession()
          ->elementExists('css', "[name='field_mappings[$i][config][drupal_field_value]'], [name='field_mappings[$i][config][drupal_field_value][setting]']");
        $this->assertSession()
          ->elementExists('css', "[name='field_mappings[$i][config][salesforce_field]'], [name='field_mappings[$i][config][drupal_constant]']");
        $this->assertSession()
          ->fieldExists("field_mappings[$i][config][description]");
        $this->assertSession()
          ->fieldExists("field_mappings[$i][config][direction]");
        $this->assertSession()
          ->hiddenFieldExists("field_mappings[$i][drupal_field_type]");
        if ($this->getSession()
          ->getPage()
          ->find('css', "select[name='field_mappings[$i][config][salesforce_field]'] option[value='LastName']")) {
          $post["field_mappings[$i][config][salesforce_field]"] = 'LastName';
        }
        if ($this->getSession()
          ->getPage()
          ->find('css', "select[name='field_mappings[$i][config][drupal_field_value]'] option[value='title']")) {
          $post["field_mappings[$i][config][drupal_field_value]"] = 'title';
        }
        $i++;
      }
    }

    // Confirm that form saves correctly.
    $this->submitForm($post, 'Save');
    $this->assertSession()
      ->pageTextContainsOnce('The mapping has been successfully saved.');

    // Confirm that the changes are stored properly by reloading and counting
    // the fields.
    $this->drupalGet('admin/structure/salesforce/mappings/manage/' . $mapping_name . '/fields');
    for ($j = 0; $j < $i; $j++) {
      $this->assertSession()->elementExists('css', "#edit-field-mappings-$j");
    }
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc