xero-8.x-2.x-dev/tests/src/Unit/TypedData/XeroDefinitionTest.php

tests/src/Unit/TypedData/XeroDefinitionTest.php
<?php

namespace Drupal\Tests\xero\Unit\TypedData;

use Drupal\Core\DependencyInjection\ContainerBuilder;
use Drupal\Tests\UnitTestCase;

/**
 * Assert that Xero TypedData definition classes are functional.
 *
 * @group xero
 */
class XeroDefinitionTest extends UnitTestCase {

  /**
   * The typed data manager.
   *
   * @var \Drupal\Core\TypedData\TypedDataManagerInterface
   */
  protected $typedDataManager;

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

    // Typed Data Manager setup.
    $this->typedDataManager = $this->createMock('\Drupal\Core\TypedData\TypedDataManager');

    // Validation constraint manager setup.
    $validation_constraint_manager = $this->createMock('\Drupal\Core\Validation\ConstraintManager');
    $validation_constraint_manager->expects($this->any())
      ->method('create')
      ->willReturn([]);
    $this->typedDataManager->expects($this->any())
      ->method('getValidationConstraintManager')
      ->willReturn($validation_constraint_manager);

    // Mock the container.
    $container = new ContainerBuilder();
    $container->set('typed_data_manager', $this->typedDataManager);
    \Drupal::setContainer($container);
  }

  /**
   * Assert that Typed Data definitions are defined correctly.
   *
   * @param string $xero_type
   *   The plugin id of the xero data type.
   * @param string $definition_name
   *   The base name of the definition class.
   * @param string $property
   *   A property check on the definition.
   *
   * @dataProvider definitionProvider
   */
  public function testDefinition($xero_type, $definition_name, $property) {

    $definition_class = '\Drupal\xero\TypedData\Definition\\' . $definition_name;

    /** @var \Drupal\Core\TypedData\ComplexDataDefinitionInterface $definition */
    $definition = $definition_class::create($xero_type);

    $this->assertArrayHasKey($property, $definition->getPropertyDefinitions());
  }

  /**
   * Provide definition class and expected output.
   *
   * @return array
   *   An array of parameters to pass ino the test function.
   */
  public static function definitionProvider() {
    return [
      ['xero_account', 'AccountDefinition', 'AccountID'],
      ['xero_address', 'AddressDefinition', 'AddressType'],
      [
        'xero_bank_transaction',
        'BankTransactionDefinition',
        'BankTransactionID',
      ],
      ['xero_bank_transfer', 'BankTransferDefinition', 'BankTransferID'],
      ['xero_branding_theme', 'BrandingThemeDefinition', 'BrandingThemeID'],
      ['xero_contact', 'ContactDefinition', 'ContactID'],
      ['xero_contact_group', 'ContactGroupDefinition', 'ContactGroupID'],
      ['xero_credit_note', 'CreditDefinition', 'CreditNoteID'],
      ['xero_currency', 'CurrencyDefinition', 'Code'],
      ['xero_detail', 'DetailDefinition', 'UnitPrice'],
      ['xero_employee', 'EmployeeDefinition', 'EmployeeID'],
      ['xero_expense', 'ExpenseDefinition', 'ExpenseClaimID'],
      ['xero_invoice', 'InvoiceDefinition', 'InvoiceID'],
      ['xero_invoice_reminder', 'InvoiceReminderDefinition', 'Enabled'],
      ['xero_item', 'ItemDefinition', 'ItemID'],
      ['xero_journal', 'JournalDefinition', 'JournalID'],
      ['xero_journal_line', 'JournalLineDefinition', 'NetAmount'],
      ['xero_line_item', 'LineItemDefinition', 'Description'],
      ['xero_link', 'LinkDefinition', 'Url'],
      [
        'xero_linked_transaction',
        'LinkedTransactionDefinition',
        'LinkedTransactionID',
      ],
      ['xero_organisation', 'OrganisationDefinition', 'Name'],
      ['xero_payment', 'PaymentDefinition', 'Reference'],
      ['xero_phone', 'PhoneDefinition', 'PhoneType'],
      ['xero_receipt', 'ReceiptDefinition', 'ReceiptID'],
      [
        'xero_repeating_invoice',
        'RepeatingInvoiceDefinition',
        'RepeatingInvoiceID',
      ],
      ['xero_schedule', 'ScheduleDefinition', 'Period'],
      ['xero_tax_component', 'TaxComponentDefinition', 'Name'],
      ['xero_tax_rate', 'TaxRateDefinition', 'Name'],
      ['xero_tracking', 'TrackingCategoryDefinition', 'Name'],
      ['xero_tracking_option', 'TrackingOptionDefinition', 'Name'],
      ['xero_user', 'UserDefinition', 'UserID'],
    ];
  }

}

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

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