eventbrite_one_way_sync-1.0.0/src/SelfTest/EndToEndTest.php

src/SelfTest/EndToEndTest.php
<?php

namespace Drupal\eventbrite_one_way_sync\SelfTest;

use Drupal\eventbrite_one_way_sync\Utilities\DependencyInjection;

/**
 * Test the whole system, called by ./scripts/test-running-environment.sh.
 */
class EndToEndTest implements EndToEndTestInterface {

  use DependencyInjection;

  /**
   * {@inheritdoc}
   */
  public function run(callable|null $log = NULL) {
    if (!$log) {
      $log = function ($x) {
        print_r($x . PHP_EOL);
      };
    }

    $log('Starting end-to-end test');

    $dummy_eventbrite_id = $this->config()->selfTestDummyAccount();

    $log('Run smoke test on dummy account');

    $this->smokeTest()->run($dummy_eventbrite_id);

    $this->idempotentImport(1, $log);
    $this->idempotentImport(2, $log);

    $log('Run webhook test');

    $this->webhookReceiverRequestResponseTest()->run('eventbrite_one_way_sync');

    $log('Confirm queue has 4 items');

    $this->assertQueue(4);

    $log('Run cron');

    $this->app()->hookCron();

    $log('Confirm queue has zero items');

    $this->assertQueue(0);

    $this->idempotentImport(3, $log);
    $this->idempotentImport(4, $log);
    $this->webhookReceiverRequestResponseTest()->run('eventbrite_one_way_sync');

    $log('Confirm queue has 4 items');

    $this->assertQueue(4);

    $log('Run cron');

    $this->app()->hookCron();

    $log('Confirm queue has zero items');

    $this->assertQueue(0);
  }

  /**
   * Throw an exception if there are not a specific number of items in queue.
   *
   * @param int $cycle
   *   Which count are we at.
   * @param callable $log
   *   A logging function.
   */
  public function idempotentImport(int $cycle, callable $log) {
    $dummy_eventbrite_id = $this->config()->selfTestDummyAccount();

    $log('Import existing to queue (try ' . $cycle . ')');

    $this->app()->session($dummy_eventbrite_id)
      ->importExistingToQueue();

    $log('Confirm queue has 4 items');

    $this->assertQueue(4);
  }

  /**
   * Throw an exception if there are not a specific number of items in queue.
   *
   * @param int $expected_count
   *   The number of items we are expecing.
   */
  public function assertQueue(int $expected_count) {
    $count = $this->database()->countQueue();
    if ($count != $expected_count) {
      throw new \Exception('The queue has ' . $count . ' items, not the expected ' . $expected_count);
    }
  }

}

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

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