onlyone-8.x-1.x-dev/tests/src/Traits/OnlyOneUnitTestTrait.php

tests/src/Traits/OnlyOneUnitTestTrait.php
<?php

namespace Drupal\Tests\onlyone\Traits;

/**
 * Trait for common function to Unit tests.
 */
trait OnlyOneUnitTestTrait {

  /**
   * Returns an array of content types objects.
   *
   * Each index determine a set of content types.
   *
   * @return array
   *   An array of content types objects.
   */
  public function getContentTypesObjectList() {

    $content_types = [
      // Test 1.
      [
        'page' => [
          (object) [
            'language' => 'en',
            'total' => 1,
            'configured' => TRUE,
            'name' => 'Basic Page',
          ],
          (object) [
            'language' => 'es',
            'total' => 1,
            'configured' => TRUE,
            'name' => 'Basic Page',
          ],
        ],
        'blog' => [
          (object) [
            'language' => '',
            'total' => 0,
            'configured' => TRUE,
            'name' => 'Blog Post',
          ],
        ],
        'car' => [
          (object) [
            'language' => 'und',
            'total' => 1,
            'configured' => FALSE,
            'name' => 'Car',
          ],
          (object) [
            'language' => 'xzz',
            'total' => 2,
            'configured' => FALSE,
            'name' => 'Car',
          ],
          (object) [
            'language' => 'en',
            'total' => 1,
            'configured' => FALSE,
            'name' => 'Car',
          ],
        ],
        'article' => [
          (object) [
            'language' => 'und',
            'total' => 1,
            'configured' => FALSE,
            'name' => 'Article',
          ],
          (object) [
            'language' => 'en',
            'total' => 2,
            'configured' => FALSE,
            'name' => 'Article',
          ],
          (object) [
            'language' => 'es',
            'total' => 1,
            'configured' => FALSE,
            'name' => 'Article',
          ],
        ],
      ],
      // Test 2.
      [
        'blog' => [
          (object) [
            'language' => 'en',
            'total' => 1,
            'configured' => TRUE,
            'name' => 'Blog Post',
          ],
        ],
        'car' => [
          (object) [
            'language' => '',
            'total' => 0,
            'configured' => FALSE,
            'name' => 'Car',
          ],
        ],
      ],
      // Test 3.
      [
        'page' => [
          (object) [
            'language' => 'en',
            'total' => 1,
            'configured' => TRUE,
            'name' => 'Basic Page',
          ],
          (object) [
            'language' => 'es',
            'total' => 1,
            'configured' => TRUE,
            'name' => 'Basic Page',
          ],
        ],
        'car' => [
          (object) [
            'language' => '',
            'total' => 0,
            'configured' => TRUE,
            'name' => 'Car',
          ],
        ],
        'article' => [
          (object) [
            'language' => 'es',
            'total' => 3,
            'configured' => FALSE,
            'name' => 'Article',
          ],
        ],
      ],
      // Test 4.
      [
        'page' => [
          (object) ['total' => 1, 'configured' => TRUE, 'name' => 'Basic Page'],
        ],
        'blog' => [
          (object) ['total' => 2, 'configured' => TRUE, 'name' => 'Blog Post'],
        ],
        'car' => [
          (object) ['total' => 0, 'configured' => FALSE, 'name' => 'Car'],
        ],
        'article' => [
          (object) ['total' => 5, 'configured' => FALSE, 'name' => 'Article'],
        ],
      ],
      // Test 5.
      [
        'blog' => [
          (object) ['total' => 0, 'configured' => TRUE, 'name' => 'Blog Post'],
        ],
        'car' => [
          (object) ['total' => 1, 'configured' => FALSE, 'name' => 'Car'],
        ],
      ],
      // Test 6.
      [
        'page' => [
          (object) ['total' => 1, 'configured' => TRUE, 'name' => 'Basic Page'],
        ],
        'car' => [
          (object) ['total' => 5, 'configured' => TRUE, 'name' => 'Car'],
        ],
        'article' => [
          (object) ['total' => 3, 'configured' => FALSE, 'name' => 'Article'],
        ],
      ],
    ];

    // Getting the language labels.
    $language_labels = array_column($this->getLanguageMap(), 1, 0);

    // Adding the total nodes information to the array of expected values.
    for ($i = 0; $i < 6; $i++) {
      foreach ($content_types[$i] as $conten_type => $languages) {
        foreach ($languages as $language => $values) {
          // Adding the total nodes information for multilingual sites.
          if ($i < 3) {
            $total_nodes = $values->total
            ? $this->getStringTranslationStub()->formatPlural(
            $values->total,
            '@language: @total Node',
            '@language: @total Nodes',
            [
              '@language' => $language_labels[$values->language],
              '@total' => $values->total,
            ]
            )
            : $this->getStringTranslationStub()->translate('0 Nodes');
          }
          else {
            // Adding the total nodes information for non-multilingual sites.
            $total_nodes = $values->total ? $this->getStringTranslationStub()->formatPlural($values->total, '@total Node', '@total Nodes', ['@total' => $values->total]) : $this->getStringTranslationStub()->translate('0 Nodes');
          }
          // Adding the total nodes information.
          $content_types[$i][$conten_type][$language]->total_nodes = $total_nodes;
        }
      }
    }

    return $content_types;
  }

  /**
   * Returns an array of language labels.
   *
   * @return array
   *   An array of languages labels keyed by language code.
   */
  public function getLanguageMap() {
    // The language map.
    $language_map = [
      ['en', 'En'],
      ['es', 'Es'],
      ['', 'Not specified'],
      ['und', 'Not specified'],
      ['xzz', 'Not applicable'],
    ];

    return $language_map;
  }

  /**
   * Returns a content type label list.
   *
   * @return array
   *   An associative array with the content type machine name as key
   *   and it label as value.
   */
  public function getContentTypesList() {
    // The content types list.
    $content_types_list = [
      'page' => 'Basic Page',
      'blog' => 'Blog Post',
      'car' => 'Car',
      'article' => 'Article',
    ];

    return $content_types_list;
  }

}

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

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