content_workflow_bynder-1.0.0/content_workflow_bynder_upload/tests/src/Kernel/ContentWorkflowBynderUploadTest.php

content_workflow_bynder_upload/tests/src/Kernel/ContentWorkflowBynderUploadTest.php
<?php

namespace Drupal\Tests\content_workflow_bynder_upload\Kernel;

use Drupal\Core\Field\FieldItemListInterface;
use Drupal\node\NodeInterface;
use Drupal\paragraphs\Entity\Paragraph;
use Drupal\taxonomy\Entity\Term;

/**
 * @coversDefaultClass \Drupal\content_workflow_bynder_upload\Export\Exporter
 * @group content_workflow_bynder_upload
 */
class ContentWorkflowBynderUploadTest extends ContentWorkflowBynderUploadTestBase {

  /**
   * Tests the field manipulation.
   */
  public function testProcessGroups() {
    $node = $this->getSimpleNode();
    $cwbItem = $this->getSimpleItem();
    $mapping = $this->getMapping($cwbItem);

    $modifiedItem = $this->exporter->processGroups($node, $mapping);

    $this->assertNotEmpty($modifiedItem);
    $this->assertItemChanged($modifiedItem, $node);
  }

  /**
   * Checks if all the fields are correctly set.
   *
   * @param array $content
   *   Content array.
   * @param \Drupal\node\NodeInterface $entity
   *   Node entity object.
   */
  public function assertItemChanged(array $content, NodeInterface $entity) {
    foreach ($content as $id => $fieldValue) {
      switch ($id) {
        case 'a9d89661-9d89-4c6d-86d3-353bfcf3214c':
          $this->assertEquals($entity->getTitle(), $fieldValue);
          break;

        case '9c7f806b-ff35-4ffa-9363-169770ac6e50':
          $value = $entity->get('field_guidodo')->getValue()[0]['value'];
          $this->assertNotEquals($value, $fieldValue);
          break;

        case 'dc73c531-d911-4acc-9055-984a1aeca0cb':
          $radio = $entity->get('field_radio');
          $this->assertSelection($fieldValue, $radio);
          break;

        case '427bc71f-844d-4730-a5d2-5e87d03fdbf0':
          $value = $entity->get('body')->getValue()[0]['value'];
          $this->assertEquals($value, $fieldValue);
          break;

        case '192775f3-354b-4884-bec9-0f4ecf153882':
          $checkbox = $entity->get('field_tags_alt');
          $this->assertSelection($fieldValue, $checkbox);
          break;

        case '361b0476-643e-41e7-97bb-a5065ad6fa1b':
          $paragraph = $entity->get('field_para');
          $this->assertParagraphText($fieldValue, $paragraph);
          break;

        case 'f88f8389-ad24-46ec-a669-6f293a07b4f7':
          $paragraph = $entity->get('field_para');
          $this->assertParagraphText($fieldValue, $paragraph, TRUE);
          break;

        case 'b11e3729-2a80-4f14-9842-87a4882fa190':
        case 'd8cbeeda-9cdf-4d3f-b94a-72a465a7cc46':
          // Not implemented yet!
          break;
      }
    }
  }

  /**
   * Tests field manipulation for multilingual content.
   */
  public function testProcessGroupsMultilang() {
    $node = $this->getMultilangNode();
    $cwbItem = $this->getMultilangItem();
    $mapping = $this->getMapping($cwbItem);

    $modifiedItem = $this->exporter->processGroups($node, $mapping);

    $this->assertNotEmpty($modifiedItem);
    $this->assertItemChangedMultilang($modifiedItem, $node);
  }

  /**
   * Checks if all the fields are correctly set for multilingual content.
   *
   * @param array $content
   *   Content array.
   * @param \Drupal\node\NodeInterface $entity
   *   Node entity object.
   */
  public function assertItemChangedMultilang(array $content, NodeInterface $entity) {
    foreach ($content as $id => $fieldValue) {
      switch ($id) {
        case 'a91274c7-d273-4bad-82e4-caacc2175285':
          $this->assertEquals($entity->getTranslation('en')->getTitle(), $fieldValue);
          break;

        case '97c8625d-e304-44ec-a610-c7f193330fc8':
          $value = $entity->getTranslation('en')->get('body')->getValue()[0]['value'];
          $this->assertEquals($value, $fieldValue);
          break;

        case '20a410c9-28ba-44d4-a2e7-907b935da5fa':
          $radio = $entity->getTranslation('en')->get('field_radio');
          $this->assertSelection($fieldValue, $radio);
          break;

        case '8fb45eed-3453-4d29-8977-2a7c9d982c5e':
          $checkbox = $entity->getTranslation('en')->get('field_tags');
          $this->assertSelection($fieldValue, $checkbox);
          break;

        case '25e99975-d918-4cc3-a676-500d839a14c5':
          $paragraph = $entity->getTranslation('en')->get('field_para');
          $this->assertParagraphText($fieldValue, $paragraph);
          break;

        case '215538c7-ec2e-41d6-a433-c23d46bf1e60':
          $paragraph = $entity->getTranslation('en')->get('field_para');
          $this->assertParagraphText($fieldValue, $paragraph, TRUE);
          break;

        case 'f00dad7a-8429-4939-8014-498d5a4f41bd':
          $value = $entity->getTranslation('en')->get('field_guidodo')->getValue()[0]['value'];
          $this->assertNotEquals($value, $fieldValue);
          break;

        case 'beb19611-0685-483b-b409-7a47e696eb4b':
          $this->assertEquals($entity->getTranslation('hu')->getTitle(), $fieldValue);
          break;

        case 'c3dc73e4-1614-4f56-a09b-997664bd00f4':
          $value = $entity->getTranslation('hu')->get('body')->getValue()[0]['value'];
          $this->assertEquals($value, $fieldValue);
          break;

        case 'e33e4ada-a977-4c63-bfa5-df325f65e65d':
          $radio = $entity->getTranslation('hu')->get('field_radio');
          $this->assertSelection($fieldValue, $radio);
          break;

        case '64896363-bd4a-4f54-9a82-fec9f0137a3d':
          $checkbox = $entity->getTranslation('hu')->get('field_tags');
          $this->assertSelection($fieldValue, $checkbox);
          break;

        case 'e167651a-20ee-48cd-b4ac-5baaeae27c19':
          $paragraph = $entity->getTranslation('hu')->get('field_para');
          $this->assertParagraphText($fieldValue, $paragraph, FALSE, TRUE);
          break;

        case '53295e60-dad8-430b-af3c-cc190eab4a39':
          $paragraph = $entity->getTranslation('hu')->get('field_para');
          $this->assertParagraphText($fieldValue, $paragraph, TRUE, TRUE);
          break;

        case '81b210c6-b1fb-444f-a320-db58836b68de':
          $value = $entity->getTranslation('hu')->get('field_guidodo')->getValue()[0]['value'];
          $this->assertNotEquals($value, $fieldValue);
          break;

        case '715695f8-07db-4c5e-926f-bcec64412430':
        case '2859eea4-5aff-4eab-9fcb-88120deea6cc':
        case '135e837c-a9dd-4079-9b95-ce49a3b94cce':
        case 'cb711089-9121-4257-8927-b1577d6e59e9':
          // Image upload is not implemented yet.
          break;
      }
    }
  }

  /**
   * Tests field manipulation for metatag content.
   */
  public function testProcessPanesMetatag() {
    $node = $this->getMetatagNode();
    $cwbItem = $this->getMetatagItem();
    $mapping = $this->getMapping($cwbItem);

    $modifiedItem = $this->exporter->processGroups($node, $mapping);

    $this->assertNotEmpty($modifiedItem);
    $this->assertItemChangedMetatag($modifiedItem, $node);
  }

  /**
   * Checks if all the fields are correctly set for metatag content.
   *
   * @param array $content
   *   Content array.
   * @param \Drupal\node\NodeInterface $entity
   *   Node entity object.
   */
  public function assertItemChangedMetatag(array $content, NodeInterface $entity) {
    foreach ($content as $id => $fieldValue) {
      switch ($id) {
        case 'c59b2682-e22a-413b-88d1-f63dfccb3e8b':
          $this->assertEquals($entity->getTitle(), $fieldValue);
          break;

        case '45a1ef4d-16c5-41a8-aafb-bdc0b5dffe3b':
          $value = $entity->get('body')->getValue()[0]['value'];
          $this->assertEquals($value, $fieldValue);
          break;

        case '5188d4ef-d391-4286-baa4-667b103145fd':
          $meta_value = unserialize($entity->get('field_meta_test')->value);
          $this->assertEquals($meta_value['title'], $fieldValue);
          break;

        case 'ff93aedd-8add-413b-8313-23231f0045f8':
          $meta_value = unserialize($entity->get('field_meta_test')->value);
          $this->assertEquals($meta_value['description'], $fieldValue);
          break;
      }
    }
  }

  /**
   * Tests field manipulation for metatag content.
   */
  public function testProcessPanesMetatagMultilang() {
    $node = $this->getMetatagMultilangNode();
    $cwbItem = $this->getMetatagMultilangItem();
    $mapping = $this->getMapping($cwbItem);

    $modifiedItem = $this->exporter->processGroups($node, $mapping);

    $this->assertNotEmpty($modifiedItem);
    $this->assertItemChangedMetatagMultilang($modifiedItem, $node);
  }

  /**
   * Checks if all the fields are correctly set for metatag content.
   *
   * @param array $content
   *   Content array.
   * @param \Drupal\node\NodeInterface $entity
   *   Node entity object.
   */
  public function assertItemChangedMetatagMultilang(array $content, NodeInterface $entity) {
    foreach ($content as $id => $fieldValue) {
      switch ($id) {
        case 'be66d719-ae0e-4c31-ad57-9a07ba3b1aaf':
          $this->assertEquals($entity->getTitle(), $fieldValue);
          break;

        case '66da5837-604a-45d9-a72e-484cdd963076':
          $value = $entity->get('body')->getValue()[0]['value'];
          $this->assertEquals($value, $fieldValue);
          break;

        case '836a5f14-f93e-47c7-9ec3-0ac511b104b8':
          $meta_value = unserialize($entity->get('field_meta_alt')->value);
          $this->assertEquals($meta_value['title'], $fieldValue);
          break;

        case '8ea8bea0-8a78-4a48-a04b-3d8ff6c8c568':
          $meta_value = unserialize($entity->get('field_meta_alt')->value);
          $this->assertEquals($meta_value['description'], $fieldValue);
          break;
      }
    }
  }

  /**
   * Check radio and checkbox selection value.
   *
   * @param array $value
   *   Response value array.
   * @param \Drupal\Core\Field\FieldItemListInterface $itemList
   *   Item list.
   */
  public function assertSelection(array $value, FieldItemListInterface $itemList) {
    $selected = $value[0]['id'];

    $targets = $itemList->getValue();
    $target = array_shift($targets);

    $term = Term::load($target['target_id']);
    $checkbox_value = $term->get('contentworkflowbynder_option_ids')->getValue()[0]['value'];

    $this->assertEquals($checkbox_value, $selected);
  }

  /**
   * Check paragraph text value.
   *
   * @param string $fieldValue
   *   ContentWorkflowBynder field value.
   * @param \Drupal\Core\Field\FieldItemListInterface $itemList
   *   Item list.
   * @param bool $isPop
   *   Use array_pop or not.
   * @param bool $translated
   *   Is the content translated.
   */
  public function assertParagraphText($fieldValue, FieldItemListInterface $itemList, $isPop = FALSE, $translated = FALSE) {
    $targets = $itemList->getValue();
    if ($isPop) {
      $target = array_pop($targets);
    }
    else {
      $target = array_shift($targets);
    }

    $para = Paragraph::load($target['target_id']);
    if ($translated) {
      $value = $para->getTranslation('hu')->get('field_text')->getValue()[0]['value'];
    }
    else {
      $value = $para->get('field_text')->getValue()[0]['value'];
    }

    $this->assertEquals($value, $fieldValue);
  }

}

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

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