reviewer-1.2.x-dev/tests/src/Functional/DrushTest.php

tests/src/Functional/DrushTest.php
<?php

declare(strict_types=1);

namespace Drupal\Tests\reviewer\Functional;

use Drupal\reviewer\Drush\Commands\ReviewerCommands;
use Drupal\Tests\BrowserTestBase;
use Drupal\Tests\reviewer\Traits\ReviewerCreationTrait;
use Drush\TestTraits\DrushTestTrait;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\Group;

/**
 * Test Drush commands.
 */
#[Group('reviewer')]
#[CoversClass(ReviewerCommands::class)]
class DrushTest extends BrowserTestBase {

  use DrushTestTrait {
    drush as drushTrait;
  }
  use ReviewerCreationTrait;

  /**
   * {@inheritdoc}
   */
  protected static $modules = [
    'field',
    'link',
    'node',
    'system',
    'reviewer',
    'reviewer_test',
  ];

  /**
   * {@inheritdoc}
   */
  protected $defaultTheme = 'stark';

  /**
   * {@inheritdoc}
   *
   * @throws \Exception
   */
  protected function setUp(): void {
    parent::setUp();
    $this->createContentTypes();
  }

  /**
   * Test the reviewer:check and rvc commands.
   */
  public function testCheck(): void {
    $this->drush('reviewer:check');
    $output = $this->getOutput();
    self::assertStringContainsString('- Review Test', $output);
    self::assertStringContainsString("Entity Review Test: {$this->contentTypeFail[0]->id()}", $output);
    self::assertStringNotContainsString("Entity Review Test: {$this->contentTypePass[0]->id()}", $output);
    self::assertSame(4, substr_count($output, 'Status: Failed'));
    self::assertSame(1, substr_count($output, 'Status: Error'));
    self::assertStringNotContainsString('Status: Not Run', $output);
    self::assertStringNotContainsString('Status: Pass', $output);
    self::assertStringNotContainsString('Status: Ignored', $output);

    $this->drush('rvc --show-not-run');
    $output = $this->getOutput();
    self::assertStringContainsString('- Review Test', $output);
    self::assertSame(1, substr_count($output, 'Status: Not Run'));
    self::assertSame(4, substr_count($output, 'Status: Failed'));
    self::assertSame(1, substr_count($output, 'Status: Error'));
    self::assertStringNotContainsString('Status: Pass', $output);
    self::assertStringNotContainsString('Status: Ignored', $output);

    $this->drush('reviewer:check --show-passed');
    $output = $this->getOutput();
    self::assertSame(36, substr_count($output, 'Status: Passed'));
    self::assertSame(4, substr_count($output, 'Status: Failed'));
    self::assertSame(1, substr_count($output, 'Status: Error'));
    self::assertStringNotContainsString('Status: Not Run', $output);
    self::assertStringNotContainsString('Status: Ignored', $output);

    $this->drush('reviewer:check --show-ignored');
    $output = $this->getOutput();
    self::assertSame(1, substr_count($output, 'Status: Ignored Error'));
    self::assertStringContainsString('Message: Ignored in code.', $output);
    self::assertSame(4, substr_count($output, 'Status: Failed'));
    self::assertSame(1, substr_count($output, 'Status: Error'));
    self::assertStringNotContainsString('Status: Not Run', $output);
    self::assertStringNotContainsString('Status: Pass', $output);

    $this->drush('reviewer:check --show-all');
    $output = $this->getOutput();
    self::assertSame(43, substr_count($output, 'Status:'));
    self::assertStringContainsString('Status: Not Run', $output);
    self::assertStringContainsString('Status: Pass', $output);
    self::assertStringContainsString('Status: Failed', $output);
    self::assertStringContainsString('Status: Error', $output);
    self::assertStringContainsString('Status: Ignored Error', $output);

    $this->drush("reviewer:check entity_review_test:{$this->contentTypeFail[0]->id()} --show-all");
    $output = $this->getOutput();
    self::assertStringContainsString("Entity Review Test: {$this->contentTypeFail[0]->id()}", $output);
    self::assertStringNotContainsString("Entity Review Test: {$this->contentTypePass[0]->id()}", $output);
    self::assertStringNotContainsString('- Review Test', $output);

    $this->drush("reviewer:check entity_review_test:{$this->contentTypeFail[0]->id()},{$this->contentTypePass[0]->id()} review_test --show-all");
    $output = $this->getOutput();
    self::assertStringContainsString("Entity Review Test: {$this->contentTypeFail[0]->id()}", $output);
    self::assertStringContainsString("Entity Review Test: {$this->contentTypePass[0]->id()}", $output);
    self::assertStringContainsString('- Review Test', $output);
  }

  /**
   * Test the reviewer:ignore and rvi commands.
   *
   * @todo Figure out how to test the interactive part of this command.
   */
  public function testIgnore(): void {
    try {
      $this->drush('reviewer:ignore');
    }
    catch (\Exception $e) {
      self::assertStringContainsString('--unignore option', $e->getMessage());
    }

    try {
      $this->drush('rvi');
    }
    catch (\Exception $e) {
      self::assertStringContainsString('--unignore option', $e->getMessage());
    }
  }

  /**
   * Test the reviewer:fix and rvf commands.
   *
   * @throws \Exception
   */
  public function testFix(): void {
    $this->drush('reviewer:check');
    $output = $this->getOutput();
    self::assertStringContainsString("Entity Review Test: {$this->contentTypeFail[0]->id()}", $output);
    self::assertSame(4, substr_count($output, 'Status: Failed'));

    $this->drush('reviewer:fix');
    $output = $this->getOutput();
    self::assertSame(4, substr_count($output, 'Status: Fixed'));
    self::assertStringContainsString('Message: Fixed all non-hidden field labels.', $output);

    $this->drush('reviewer:check');
    $output = $this->getOutput();
    self::assertStringNotContainsString('Status: Failed', $output);

    $this->createContentTypes();
    $this->drush('reviewer:check');
    $output = $this->getOutput();
    self::assertStringContainsString("Entity Review Test: {$this->contentTypeFail[0]->id()}", $output);
    self::assertSame(4, substr_count($output, 'Status: Failed'));

    $this->drush("rvf entity_review_test:{$this->contentTypeFail[0]->id()}");
    $output = $this->getOutput();
    self::assertSame(2, substr_count($output, 'Status: Fixed'));
    self::assertStringNotContainsString("Entity Review Test: {$this->contentTypeFail[1]->id()}", $output);
  }

  /**
   * Test the reviewer:list and rvl commands.
   */
  public function testList(): void {
    $this->drush('reviewer:list');
    $output = $this->getOutput();
    self::assertStringContainsString('ID', $output);
    self::assertStringContainsString('Label', $output);
    self::assertStringContainsString('review_test', $output);
    self::assertStringContainsString('entity_review_test', $output);
    self::assertStringContainsString('Entity Review Test', $output);

    $this->drush('rvl');
    $output = $this->getOutput();
    self::assertStringContainsString('ID', $output);
    self::assertStringContainsString('Label', $output);
    self::assertStringContainsString('review_test', $output);
    self::assertStringContainsString('entity_review_test', $output);
    self::assertStringContainsString('Entity Review Test', $output);

    $this->container->get('module_installer')->uninstall(['reviewer_test']);
    $this->drush('reviewer:list');
    $output = $this->getOutput();
    self::assertStringContainsString('No reviews available.', $output);
  }

}

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

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