class TaxTypePluginTest in Drupal Commerce Connector for AvaTax 8
Tests the tax type plugin.
@group commerce_avatax
Hierarchy
- class \Drupal\KernelTests\KernelTestBase extends \PHPUnit\Framework\TestCase implements ServiceProviderInterface uses AssertContentTrait, AssertLegacyTrait, AssertHelperTrait, ConfigTestTrait, PhpunitCompatibilityTrait, RandomGeneratorTrait, TestRequirementsTrait
- class \Drupal\KernelTests\Core\Entity\EntityKernelTestBase uses DeprecatedServicePropertyTrait, UserCreationTrait
- class \Drupal\Tests\commerce\Kernel\CommerceKernelTestBase uses StoreCreationTrait, DeprecationSuppressionTrait
- class \Drupal\Tests\commerce_order\Kernel\OrderKernelTestBase
- class \Drupal\Tests\commerce_avatax\Kernel\TaxTypePluginTest implements ServiceModifierInterface
- class \Drupal\Tests\commerce_order\Kernel\OrderKernelTestBase
- class \Drupal\Tests\commerce\Kernel\CommerceKernelTestBase uses StoreCreationTrait, DeprecationSuppressionTrait
- class \Drupal\KernelTests\Core\Entity\EntityKernelTestBase uses DeprecatedServicePropertyTrait, UserCreationTrait
Expanded class hierarchy of TaxTypePluginTest
File
- tests/
src/ Kernel/ TaxTypePluginTest.php, line 29
Namespace
Drupal\Tests\commerce_avatax\KernelView source
class TaxTypePluginTest extends OrderKernelTestBase implements ServiceModifierInterface {
const CONFIG_NAME = 'commerce_avatax.settings';
/**
* The tax type.
*
* @var \Drupal\commerce_tax\Entity\TaxTypeInterface
*/
protected $taxType;
/**
* {@inheritdoc}
*/
public static $modules = [
'path',
'commerce_tax',
'commerce_avatax',
];
/**
* A sample order.
*
* @var \Drupal\commerce_order\Entity\OrderInterface
*/
protected $order;
/**
* {@inheritdoc}
*/
protected function setUp() : void {
parent::setUp();
$this
->installEntitySchema('profile');
$this
->installEntitySchema('commerce_order');
$this
->installEntitySchema('commerce_order_item');
$this
->installEntitySchema('commerce_product');
$this
->installEntitySchema('commerce_product_variation');
$this
->installConfig([
'commerce_product',
'commerce_order',
'commerce_avatax',
]);
$user = $this
->createUser([
'mail' => $this
->randomString() . '@example.com',
]);
// Turn off title generation to allow explicit values to be used.
$variation_type = ProductVariationType::load('default');
$variation_type
->setGenerateTitle(FALSE);
$variation_type
->save();
$product = Product::create([
'type' => 'default',
'title' => 'Default testing product',
]);
$product
->save();
$variation1 = ProductVariation::create([
'type' => 'default',
'sku' => 'TEST_' . strtolower($this
->randomMachineName()),
'title' => $this
->randomString(),
'status' => 1,
'price' => new Price('12.00', 'USD'),
]);
$variation1
->save();
$product
->addVariation($variation1)
->save();
$profile = Profile::create([
'type' => 'customer',
'address' => [
'country_code' => 'US',
'postal_code' => '53177',
'locality' => 'Milwaukee',
'address_line1' => 'Pabst Blue Ribbon Dr',
'administrative_area' => 'WI',
'given_name' => 'Frederick',
'family_name' => 'Pabst',
],
'uid' => $user
->id(),
]);
$profile
->save();
$profile = $this
->reloadEntity($profile);
/** @var \Drupal\commerce_order\Entity\Order $order */
$order = Order::create([
'type' => 'default',
'state' => 'draft',
'mail' => $user
->getEmail(),
'uid' => $user
->id(),
'ip_address' => '127.0.0.1',
'order_number' => '6',
'billing_profile' => $profile,
'store_id' => $this->store
->id(),
]);
/** @var \Drupal\commerce_order\Entity\OrderItemInterface $order_item */
$order_item = OrderItem::create([
'type' => 'default',
'quantity' => 1,
'unit_price' => new Price('12.00', 'USD'),
'purchased_entity' => $variation1,
]);
$order_item
->save();
$order
->addItem($order_item);
$order
->setRefreshState(Order::REFRESH_SKIP);
$order
->save();
$this->order = $this
->reloadEntity($order);
$this->taxType = TaxType::load('avatax');
// This will ensure our config changes are taken into account.
$this->container
->set('commerce_avatax.avatax_lib', NULL);
}
/**
* {@inheritdoc}
*/
public function alter(ContainerBuilder $container) {
$container
->removeDefinition('test.http_client.middleware');
}
/**
* Tests the default configuration assertions.
*
* Need to ensure DEFAULT is the company code.
*/
public function testPluginConfiguration() {
$config = $this
->config(self::CONFIG_NAME)
->get();
unset($config['_core']);
$this
->assertEquals([
'account_id' => '',
'api_mode' => 'development',
'company_code' => 'DEFAULT',
'customer_code_field' => 'mail',
'disable_commit' => FALSE,
'disable_tax_calculation' => FALSE,
'license_key' => '',
'logging' => FALSE,
'shipping_tax_code' => 'FR020100',
'address_validation' => [
'enable' => FALSE,
'countries' => [],
'postal_code_match' => FALSE,
],
], $config);
}
/**
* Assert that the request array doesn't have "lines" when billing is empty.
*/
public function testNoLinesWhenBillingEmpty() {
$avatax_lib = $this->container
->get('commerce_avatax.avatax_lib');
$this->order
->get('billing_profile')
->setValue(NULL);
$this
->assertTrue($this->taxType
->getPlugin()
->applies($this->order));
$request = $avatax_lib
->prepareTransactionsCreate($this->order);
$this
->assertEmpty($request['lines']);
}
/**
* Tests applying.
*/
public function testApply() {
list($order_item) = $this->order
->getItems();
$this
->mockResponse([
new Response(200, [], Json::encode([
'lines' => [
[
'lineNumber' => $order_item
->uuid(),
'tax' => 5.25,
'details' => [
[
'taxName' => 'CA STATE TAX',
],
],
],
],
])),
]);
$plugin = $this->taxType
->getPlugin();
$this
->assertTrue($plugin
->applies($this->order));
$plugin
->apply($this->order);
$adjustments = $this->order
->collectAdjustments();
$this
->assertCount(1, $adjustments);
$adjustment = reset($adjustments);
$this
->assertEquals('tax', $adjustment
->getType());
$this
->assertEquals('CA STATE TAX', $adjustment
->getLabel());
$this
->assertEquals('avatax|avatax', $adjustment
->getSourceId());
$this
->assertEquals(new Price('5.25', 'USD'), $adjustment
->getAmount());
// Disable the tax calculation and ensure the tax type plugin no longer
// applies.
$this
->config(self::CONFIG_NAME)
->set('disable_tax_calculation', TRUE)
->save();
$this
->assertFalse($plugin
->applies($this->order));
}
/**
* Tests that the transaction type is correct when applying the adjustment.
*
* @link https://developer.avalara.com/avatax/dev-guide/transactions/should-i-commit/
*/
public function testTransactionType() {
$this
->mockResponse([
new Response(200, [], Json::encode([
'lines' => [
[
'lineNumber' => 1,
'tax' => 5.25,
],
],
])),
], [
function (callable $handler) {
return function (RequestInterface $request, array $options) use ($handler) {
$body = $request
->getBody()
->getContents();
$body = Json::decode($body);
\Drupal::state()
->set('avatax_request_body', $body);
return $handler($request, $options);
};
},
]);
$this->taxType
->getPlugin()
->apply($this->order);
$request_body = $this->container
->get('state')
->get('avatax_request_body');
$this
->assertNotEmpty($request_body);
$this
->assertEquals('SalesOrder', $request_body['type'], 'Request transaction type is correct.');
}
/**
* Tests that a transaction is committed when an order is placed.
*/
public function testCommitTransaction() {
$this
->mockResponse([
new Response(200, [], Json::encode([
'lines' => [
[
'lineNumber' => 1,
'tax' => 5.25,
],
],
])),
new Response(200, [], Json::encode([
'lines' => [
[
'lineNumber' => 1,
'tax' => 5.25,
],
],
])),
], [
function (callable $handler) {
return function (RequestInterface $request, array $options) use ($handler) {
$count = \Drupal::state()
->get('avatax_request_count', 0);
$count++;
\Drupal::state()
->set('avatax_request_count', $count);
if ($count == 2) {
$body = $request
->getBody()
->getContents();
$body = Json::decode($body);
\Drupal::state()
->set('avatax_commit_request_body', $body);
}
return $handler($request, $options);
};
},
]);
$this->taxType
->getPlugin()
->apply($this->order);
$adjustments = $this->order
->collectAdjustments();
$this
->assertCount(1, $adjustments);
$transition = $this->order
->getState()
->getTransitions()['place'];
$this->order
->getState()
->applyTransition($transition);
$this->order
->save();
$this
->assertEquals(2, $this->container
->get('state')
->get('avatax_request_count'));
$body = $this->container
->get('state')
->get('avatax_commit_request_body');
$this
->assertEquals('SalesInvoice', $body['type']);
$this
->assertTrue($body['commit']);
}
/**
* Tests that a transaction is not committed when configured to skip.
*/
public function testDisableCommitTransaction() {
$this
->config(self::CONFIG_NAME)
->set('disable_commit', TRUE)
->save();
$this
->mockResponse([
new Response(200, [], Json::encode([
'lines' => [
[
'lineNumber' => 1,
'tax' => 5.25,
],
],
])),
new Response(200, [], Json::encode([
'lines' => [
[
'lineNumber' => 1,
'tax' => 5.25,
],
],
])),
], [
function (callable $handler) {
return function (RequestInterface $request, array $options) use ($handler) {
$count = \Drupal::state()
->get('avatax_request_count', 0);
$count++;
\Drupal::state()
->set('avatax_request_count', $count);
return $handler($request, $options);
};
},
]);
$this->taxType
->getPlugin()
->apply($this->order);
$adjustments = $this->order
->collectAdjustments();
$this
->assertCount(1, $adjustments);
$transition = $this->order
->getState()
->getTransitions()['place'];
$this->order
->getState()
->applyTransition($transition);
$this->order
->save();
$this
->assertEquals(1, $this->container
->get('state')
->get('avatax_request_count'));
}
/**
* Tests the case code resolver.
*/
public function testTaxCodeResolver() {
$avatax_lib = $this->container
->get('commerce_avatax.avatax_lib');
$request_body = $avatax_lib
->prepareTransactionsCreate($this->order);
$this
->assertNull($request_body['lines'][0]['taxCode']);
$variation2 = ProductVariation::create([
'type' => 'default',
'sku' => 'TEST_' . strtolower($this
->randomMachineName()),
'title' => $this
->randomString(),
'status' => 1,
'price' => new Price('12.00', 'USD'),
'avatax_tax_code' => 'TESTCODE123',
]);
$variation2
->save();
$order_item = OrderItem::create([
'type' => 'default',
'quantity' => 1,
'unit_price' => new Price('12.00', 'USD'),
'purchased_entity' => $variation2,
]);
$order_item
->save();
$this->order
->addItem($order_item);
$this->order
->save();
$request_body = $avatax_lib
->prepareTransactionsCreate($this->order);
$this
->assertNull($request_body['lines'][0]['taxCode']);
$this
->assertEquals('TESTCODE123', $request_body['lines'][1]['taxCode']);
}
/**
* Tests that order adjustments are correctly sent.
*/
public function testOrderAdjustments() {
$this->order
->addAdjustment(new Adjustment([
'type' => 'custom',
'label' => 'Custom adjustment',
'amount' => new Price('4.00', 'USD'),
'source_id' => '1',
]));
$this->order
->setRefreshState(Order::REFRESH_SKIP);
$this->order
->save();
$order_items = $this->order
->getItems();
$order_item = reset($order_items);
$lines = [
[
'lineNumber' => $order_item
->uuid(),
'tax' => 5.25,
],
[
'lineNumber' => 2,
'tax' => 2.0,
],
];
$this
->mockResponse([
new Response(200, [], Json::encode([
'lines' => $lines,
])),
]);
$this->taxType
->getPlugin()
->apply($this->order);
$tax_adjustments = $this->order
->collectAdjustments([
'tax',
]);
$tax_adjustment_total = NULL;
foreach ($tax_adjustments as $adjustment) {
$this
->assertEquals('Sales tax', $adjustment
->getLabel());
$this
->assertEquals('avatax|avatax', $adjustment
->getSourceId());
$tax_adjustment_total = $tax_adjustment_total ? $tax_adjustment_total
->add($adjustment
->getAmount()) : $adjustment
->getAmount();
}
$this
->assertCount(2, $tax_adjustments);
$this
->assertEquals(new Price('7.25', 'USD'), $tax_adjustment_total);
}
/**
* Test that the correct customerCode is sent for anonymous users.
*/
public function testCustomerCodeAnonymous() {
$avatax_lib = $this->container
->get('commerce_avatax.avatax_lib');
$this->order
->setEmail('');
$request_body = $avatax_lib
->prepareTransactionsCreate($this->order);
$this
->assertEquals('anonymous-' . $this->order
->id(), $request_body['customerCode']);
}
/**
* Test that the email is sent as the customerCode by default.
*/
public function testCustomerCodeEmail() {
$avatax_lib = $this->container
->get('commerce_avatax.avatax_lib');
$request_body = $avatax_lib
->prepareTransactionsCreate($this->order);
$this
->assertEquals($this->order
->getEmail(), $request_body['customerCode']);
}
/**
* Test that the uid is sent as the customerCode when configured to do so.
*/
public function testCustomerCodeUid() {
$this
->config(self::CONFIG_NAME)
->set('customer_code_field', 'uid')
->save();
$avatax_lib = $this->container
->get('commerce_avatax.avatax_lib');
$request_body = $avatax_lib
->prepareTransactionsCreate($this->order);
$this
->assertEquals($this->order
->getCustomerId(), $request_body['customerCode']);
}
/**
* Test that the tax exemption type|number are correctly sent.
*/
public function testTaxExemptions() {
$avatax_lib = $this->container
->get('commerce_avatax.avatax_lib');
$request_body = $avatax_lib
->prepareTransactionsCreate($this->order);
$this
->assertArrayNotHasKey('ExemptionNo', $request_body);
$this
->assertArrayNotHasKey('CustomerUsageType', $request_body);
$customer = $this->order
->getCustomer();
$customer
->set('avatax_tax_exemption_number', 'XX');
$customer
->save();
$request_body = $avatax_lib
->prepareTransactionsCreate($this->order);
$this
->assertArrayHasKey('ExemptionNo', $request_body);
$this
->assertEquals('XX', $request_body['ExemptionNo']);
$this
->assertArrayNotHasKey('CustomerUsageType', $request_body);
$customer
->set('avatax_tax_exemption_type', 'A');
$customer
->save();
$request_body = $avatax_lib
->prepareTransactionsCreate($this->order);
$this
->assertArrayHasKey('CustomerUsageType', $request_body);
$this
->assertEquals('A', $request_body['CustomerUsageType']);
}
/**
* Test that the request is correctly cached.
*/
public function testRequestCaching() {
$response = [
'lines' => [
[
'lineNumber' => 1,
'tax' => 5.25,
],
],
];
$this
->mockResponse([
new Response(200, [], Json::encode($response)),
], [
function (callable $handler) {
return function (RequestInterface $request, array $options) use ($handler) {
$count = \Drupal::state()
->get('avatax_request_count', 0);
$count++;
\Drupal::state()
->set('avatax_request_count', $count);
return $handler($request, $options);
};
},
]);
$plugin = $this->taxType
->getPlugin();
$this
->assertTrue($plugin
->applies($this->order));
$plugin
->apply($this->order);
$cached_data = \Drupal::cache('commerce_avatax')
->get('transactions_create:' . $this->order
->id())->data;
$this
->assertEquals($response, $cached_data['response']);
$plugin
->apply($this->order);
$this
->assertEquals(1, $this->container
->get('state')
->get('avatax_request_count'));
$order_items = $this->order
->getItems();
$order_items[0]
->setQuantity(2);
$order_items[0]
->save();
$plugin
->apply($this->order);
$this
->assertEquals(2, $this->container
->get('state')
->get('avatax_request_count'));
}
/**
* Test voiding a transaction.
*/
public function testVoidTransaction() {
$this
->mockResponse([
new Response(200, [], Json::encode([
'lines' => [
[
'lineNumber' => 1,
'tax' => 5.25,
],
],
])),
new Response(200, [], Json::encode([
'lines' => [
[
'lineNumber' => 1,
'tax' => 5.25,
],
],
])),
new Response(200, [], Json::encode([
'lines' => [
[
'lineNumber' => 1,
'tax' => 5.25,
],
],
])),
], [
function (callable $handler) {
return function (RequestInterface $request, array $options) use ($handler) {
$count = \Drupal::state()
->get('avatax_request_count', 0);
$count++;
\Drupal::state()
->set('avatax_request_count', $count);
$body = $request
->getBody()
->getContents();
\Drupal::state()
->set('avatax_request_body_' . $count, Json::decode($body));
return $handler($request, $options);
};
},
]);
$plugin = $this->taxType
->getPlugin();
$plugin
->apply($this->order);
$transition = $this->order
->getState()
->getTransitions()['cancel'];
$this->order
->getState()
->applyTransition($transition);
$this->order
->save();
$this
->assertEquals(2, $this->container
->get('state')
->get('avatax_request_count'));
$request_body = $this->container
->get('state')
->get('avatax_request_body_2');
$this
->assertEquals([
'code' => 'DocVoided',
], $request_body);
$this->order
->removeItem($this->order
->getItems()[0]);
$this->order
->delete();
$this
->assertEquals(3, $this->container
->get('state')
->get('avatax_request_count'));
$request_body = $this->container
->get('state')
->get('avatax_request_body_3');
$this
->assertEquals([
'code' => 'DocVoided',
], $request_body);
}
/**
* Mock responses.
*
* @param \Psr\Http\Message\ResponseInterface[] $responses
* An array of mocked responses.
* @param array $middlewares
* An array of callable handlers.
*
* @throws \Exception
*/
protected function mockResponse(array $responses = [], array $middlewares = []) {
$mock_handler = new MockHandler($responses);
$mock_handler_stack = HandlerStack::create($mock_handler);
foreach ($middlewares as $middleware) {
$mock_handler_stack
->push($middleware);
}
$config = $this
->config(self::CONFIG_NAME);
$mock_client = new Client([
'handler' => $mock_handler_stack,
'base_uri' => 'https://sandbox-rest.avatax.com/',
'headers' => [
'Authorization' => 'Basic ' . base64_encode($config
->get('account_id') . ':' . $config
->get('license_key')),
'Content-Type' => 'application/json',
'x-Avalara-UID' => 'a0o33000003waOC',
'x-Avalara-Client' => 'Test Client',
],
]);
$this->container
->get('commerce_avatax.avatax_lib')
->setClient($mock_client);
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
AssertContentTrait:: |
protected | property | The current raw content. | |
AssertContentTrait:: |
protected | property | The drupalSettings value from the current raw $content. | |
AssertContentTrait:: |
protected | property | The XML structure parsed from the current raw $content. | 1 |
AssertContentTrait:: |
protected | property | The plain-text content of raw $content (text nodes). | |
AssertContentTrait:: |
protected | function | Passes if the raw text IS found escaped on the loaded page, fail otherwise. | |
AssertContentTrait:: |
protected | function | Asserts that a field exists with the given name or ID. | |
AssertContentTrait:: |
protected | function | Asserts that a field exists with the given ID and value. | |
AssertContentTrait:: |
protected | function | Asserts that a field exists with the given name and value. | |
AssertContentTrait:: |
protected | function | Asserts that a field exists in the current page by the given XPath. | |
AssertContentTrait:: |
protected | function | Asserts that a checkbox field in the current page is checked. | |
AssertContentTrait:: |
protected | function | Asserts that a field exists in the current page with a given Xpath result. | |
AssertContentTrait:: |
protected | function | Passes if a link with the specified label is found. | |
AssertContentTrait:: |
protected | function | Passes if a link containing a given href (part) is found. | |
AssertContentTrait:: |
protected | function | Asserts that each HTML ID is used for just a single element. | |
AssertContentTrait:: |
protected | function | Passes if the raw text IS NOT found escaped on the loaded page, fail otherwise. | |
AssertContentTrait:: |
protected | function | Asserts that a field does not exist with the given name or ID. | |
AssertContentTrait:: |
protected | function | Asserts that a field does not exist with the given ID and value. | |
AssertContentTrait:: |
protected | function | Asserts that a field does not exist with the given name and value. | |
AssertContentTrait:: |
protected | function | Asserts that a field does not exist or its value does not match, by XPath. | |
AssertContentTrait:: |
protected | function | Asserts that a checkbox field in the current page is not checked. | |
AssertContentTrait:: |
protected | function | Passes if a link with the specified label is not found. | |
AssertContentTrait:: |
protected | function | Passes if a link containing a given href (part) is not found. | |
AssertContentTrait:: |
protected | function | Passes if a link containing a given href is not found in the main region. | |
AssertContentTrait:: |
protected | function | Asserts that a select option in the current page does not exist. | |
AssertContentTrait:: |
protected | function | Asserts that a select option in the current page is not checked. | |
AssertContentTrait:: |
protected | function | Triggers a pass if the perl regex pattern is not found in raw content. | |
AssertContentTrait:: |
protected | function | Passes if the raw text is NOT found on the loaded page, fail otherwise. | |
AssertContentTrait:: |
protected | function | Passes if the page (with HTML stripped) does not contains the text. | |
AssertContentTrait:: |
protected | function | Pass if the page title is not the given string. | |
AssertContentTrait:: |
protected | function | Passes if the text is found MORE THAN ONCE on the text version of the page. | |
AssertContentTrait:: |
protected | function | Asserts that a select option in the current page exists. | |
AssertContentTrait:: |
protected | function | Asserts that a select option with the visible text exists. | |
AssertContentTrait:: |
protected | function | Asserts that a select option in the current page is checked. | |
AssertContentTrait:: |
protected | function | Asserts that a select option in the current page is checked. | |
AssertContentTrait:: |
protected | function | Asserts that a select option in the current page exists. | |
AssertContentTrait:: |
protected | function | Triggers a pass if the Perl regex pattern is found in the raw content. | |
AssertContentTrait:: |
protected | function | Passes if the raw text IS found on the loaded page, fail otherwise. | |
AssertContentTrait:: |
protected | function | Passes if the page (with HTML stripped) contains the text. | |
AssertContentTrait:: |
protected | function | Helper for assertText and assertNoText. | |
AssertContentTrait:: |
protected | function | Asserts that a Perl regex pattern is found in the plain-text content. | |
AssertContentTrait:: |
protected | function | Asserts themed output. | |
AssertContentTrait:: |
protected | function | Pass if the page title is the given string. | |
AssertContentTrait:: |
protected | function | Passes if the text is found ONLY ONCE on the text version of the page. | |
AssertContentTrait:: |
protected | function | Helper for assertUniqueText and assertNoUniqueText. | |
AssertContentTrait:: |
protected | function | Builds an XPath query. | |
AssertContentTrait:: |
protected | function | Helper: Constructs an XPath for the given set of attributes and value. | |
AssertContentTrait:: |
protected | function | Searches elements using a CSS selector in the raw content. | |
AssertContentTrait:: |
protected | function | Get all option elements, including nested options, in a select. | |
AssertContentTrait:: |
protected | function | Gets the value of drupalSettings for the currently-loaded page. | |
AssertContentTrait:: |
protected | function | Gets the current raw content. | |
AssertContentTrait:: |
protected | function | Get the selected value from a select field. | |
AssertContentTrait:: |
protected | function | Retrieves the plain-text content from the current raw content. | |
AssertContentTrait:: |
protected | function | Get the current URL from the cURL handler. | 1 |
AssertContentTrait:: |
protected | function | Parse content returned from curlExec using DOM and SimpleXML. | |
AssertContentTrait:: |
protected | function | Removes all white-space between HTML tags from the raw content. | |
AssertContentTrait:: |
protected | function | Sets the value of drupalSettings for the currently-loaded page. | |
AssertContentTrait:: |
protected | function | Sets the raw content (e.g. HTML). | |
AssertContentTrait:: |
protected | function | Performs an xpath search on the contents of the internal browser. | |
AssertHelperTrait:: |
protected static | function | Casts MarkupInterface objects into strings. | |
AssertLegacyTrait:: |
protected | function | Deprecated Scheduled for removal in Drupal 10.0.0. Use self::assertTrue() instead. | |
AssertLegacyTrait:: |
protected | function | Deprecated Scheduled for removal in Drupal 10.0.0. Use self::assertEquals() instead. | |
AssertLegacyTrait:: |
protected | function | Deprecated Scheduled for removal in Drupal 10.0.0. Use self::assertSame() instead. | |
AssertLegacyTrait:: |
protected | function | Deprecated Scheduled for removal in Drupal 10.0.0. Use self::assertEquals() instead. | |
AssertLegacyTrait:: |
protected | function | Deprecated Scheduled for removal in Drupal 10.0.0. Use self::assertNotEquals() instead. | |
AssertLegacyTrait:: |
protected | function | Deprecated Scheduled for removal in Drupal 10.0.0. Use self::assertNotSame() instead. | |
AssertLegacyTrait:: |
protected | function | Deprecated Scheduled for removal in Drupal 10.0.0. Use self::assertTrue() instead. | |
AssertLegacyTrait:: |
protected | function | ||
CommerceKernelTestBase:: |
protected | property | The default store. | 1 |
CommerceKernelTestBase:: |
protected | function |
Overrides KernelTestBase:: |
|
ConfigTestTrait:: |
protected | function | Returns a ConfigImporter object to import test configuration. | |
ConfigTestTrait:: |
protected | function | Copies configuration objects from source storage to target storage. | |
DeprecatedServicePropertyTrait:: |
public | function | Allows to access deprecated/removed properties. | |
DeprecationSuppressionTrait:: |
protected | function | Restores the original error handler. | |
DeprecationSuppressionTrait:: |
protected | function | Sets an error handler to suppress specified deprecation messages. | |
EntityKernelTestBase:: |
protected | property | The list of deprecated services. | |
EntityKernelTestBase:: |
protected | property | The entity type manager service. | 1 |
EntityKernelTestBase:: |
protected | property | A list of generated identifiers. | |
EntityKernelTestBase:: |
protected | property | The state service. | |
EntityKernelTestBase:: |
protected | function | Creates a user. | |
EntityKernelTestBase:: |
protected | function | Generates a random ID avoiding collisions. | |
EntityKernelTestBase:: |
protected | function | Returns the entity_test hook invocation info. | |
EntityKernelTestBase:: |
protected | function | Installs a module and refreshes services. | |
EntityKernelTestBase:: |
protected | function | Refresh services. | 1 |
EntityKernelTestBase:: |
protected | function | Reloads the given entity from the storage and returns it. | |
EntityKernelTestBase:: |
protected | function | Uninstalls a module and refreshes services. | |
KernelTestBase:: |
protected | property | Back up and restore any global variables that may be changed by tests. | |
KernelTestBase:: |
protected | property | Back up and restore static class properties that may be changed by tests. | |
KernelTestBase:: |
protected | property | Contains a few static class properties for performance. | |
KernelTestBase:: |
protected | property | ||
KernelTestBase:: |
protected | property | @todo Move into Config test base class. | 7 |
KernelTestBase:: |
protected static | property | An array of config object names that are excluded from schema checking. | |
KernelTestBase:: |
protected | property | ||
KernelTestBase:: |
protected | property | ||
KernelTestBase:: |
protected | property | Do not forward any global state from the parent process to the processes that run the actual tests. | |
KernelTestBase:: |
protected | property | The app root. | |
KernelTestBase:: |
protected | property | Kernel tests are run in separate processes because they allow autoloading of code from extensions. Running the test in a separate process isolates this behavior from other tests. Subclasses should not override this property. | |
KernelTestBase:: |
protected | property | ||
KernelTestBase:: |
protected | property | Set to TRUE to strict check all configuration saved. | 6 |
KernelTestBase:: |
protected | property | The virtual filesystem root directory. | |
KernelTestBase:: |
protected | function | 1 | |
KernelTestBase:: |
protected | function | Bootstraps a basic test environment. | |
KernelTestBase:: |
private | function | Bootstraps a kernel for a test. | |
KernelTestBase:: |
protected | function | Configuration accessor for tests. Returns non-overridden configuration. | |
KernelTestBase:: |
protected | function | Disables modules for this test. | |
KernelTestBase:: |
protected | function | Enables modules for this test. | |
KernelTestBase:: |
protected | function | Gets the config schema exclusions for this test. | |
KernelTestBase:: |
protected | function | Returns the Database connection info to be used for this test. | 1 |
KernelTestBase:: |
public | function | ||
KernelTestBase:: |
private | function | Returns Extension objects for $modules to enable. | |
KernelTestBase:: |
private static | function | Returns the modules to enable for this test. | |
KernelTestBase:: |
protected | function | Initializes the FileCache component. | |
KernelTestBase:: |
protected | function | Installs default configuration for a given list of modules. | |
KernelTestBase:: |
protected | function | Installs the storage schema for a specific entity type. | |
KernelTestBase:: |
protected | function | Installs database tables from a module schema definition. | |
KernelTestBase:: |
protected | function | Returns whether the current test method is running in a separate process. | |
KernelTestBase:: |
protected | function | ||
KernelTestBase:: |
public | function |
Registers test-specific services. Overrides ServiceProviderInterface:: |
26 |
KernelTestBase:: |
protected | function | Renders a render array. | 1 |
KernelTestBase:: |
protected | function | Sets the install profile and rebuilds the container to update it. | |
KernelTestBase:: |
protected | function | Sets an in-memory Settings variable. | |
KernelTestBase:: |
public static | function | 1 | |
KernelTestBase:: |
protected | function | Sets up the filesystem, so things like the file directory. | 2 |
KernelTestBase:: |
protected | function | Stops test execution. | |
KernelTestBase:: |
public | function | @after | |
KernelTestBase:: |
protected | function | Dumps the current state of the virtual filesystem to STDOUT. | |
KernelTestBase:: |
public | function | Prevents serializing any properties. | |
PhpunitCompatibilityTrait:: |
public | function | Returns a mock object for the specified class using the available method. | |
PhpunitCompatibilityTrait:: |
public | function | Compatibility layer for PHPUnit 6 to support PHPUnit 4 code. | |
RandomGeneratorTrait:: |
protected | property | The random generator. | |
RandomGeneratorTrait:: |
protected | function | Gets the random generator for the utility methods. | |
RandomGeneratorTrait:: |
protected | function | Generates a unique random string containing letters and numbers. | 1 |
RandomGeneratorTrait:: |
public | function | Generates a random PHP object. | |
RandomGeneratorTrait:: |
public | function | Generates a pseudo-random string of ASCII characters of codes 32 to 126. | |
RandomGeneratorTrait:: |
public | function | Callback for random string validation. | |
StorageCopyTrait:: |
protected static | function | Copy the configuration from one storage to another and remove stale items. | |
StoreCreationTrait:: |
protected | function | Creates a store for the test. | |
TaxTypePluginTest:: |
public static | property |
Modules to enable. Overrides OrderKernelTestBase:: |
|
TaxTypePluginTest:: |
protected | property | A sample order. | |
TaxTypePluginTest:: |
protected | property | The tax type. | |
TaxTypePluginTest:: |
public | function |
Modifies existing service definitions. Overrides ServiceModifierInterface:: |
|
TaxTypePluginTest:: |
constant | |||
TaxTypePluginTest:: |
protected | function | Mock responses. | |
TaxTypePluginTest:: |
protected | function |
Overrides OrderKernelTestBase:: |
|
TaxTypePluginTest:: |
public | function | Tests applying. | |
TaxTypePluginTest:: |
public | function | Tests that a transaction is committed when an order is placed. | |
TaxTypePluginTest:: |
public | function | Test that the correct customerCode is sent for anonymous users. | |
TaxTypePluginTest:: |
public | function | Test that the email is sent as the customerCode by default. | |
TaxTypePluginTest:: |
public | function | Test that the uid is sent as the customerCode when configured to do so. | |
TaxTypePluginTest:: |
public | function | Tests that a transaction is not committed when configured to skip. | |
TaxTypePluginTest:: |
public | function | Assert that the request array doesn't have "lines" when billing is empty. | |
TaxTypePluginTest:: |
public | function | Tests that order adjustments are correctly sent. | |
TaxTypePluginTest:: |
public | function | Tests the default configuration assertions. | |
TaxTypePluginTest:: |
public | function | Test that the request is correctly cached. | |
TaxTypePluginTest:: |
public | function | Tests the case code resolver. | |
TaxTypePluginTest:: |
public | function | Test that the tax exemption type|number are correctly sent. | |
TaxTypePluginTest:: |
public | function | Tests that the transaction type is correct when applying the adjustment. | |
TaxTypePluginTest:: |
public | function | Test voiding a transaction. | |
TestRequirementsTrait:: |
private | function | Checks missing module requirements. | |
TestRequirementsTrait:: |
protected | function | Check module requirements for the Drupal use case. | 1 |
TestRequirementsTrait:: |
protected static | function | Returns the Drupal root directory. | |
UserCreationTrait:: |
protected | function | Checks whether a given list of permission names is valid. Aliased as: drupalCheckPermissions | |
UserCreationTrait:: |
protected | function | Creates an administrative role. Aliased as: drupalCreateAdminRole | |
UserCreationTrait:: |
protected | function | Creates a role with specified permissions. Aliased as: drupalCreateRole | |
UserCreationTrait:: |
protected | function | Create a user with a given set of permissions. Aliased as: drupalCreateUser | |
UserCreationTrait:: |
protected | function | Grant permissions to a user role. Aliased as: drupalGrantPermissions | |
UserCreationTrait:: |
protected | function | Switch the current logged in user. Aliased as: drupalSetCurrentUser | |
UserCreationTrait:: |
protected | function | Creates a random user account and sets it as current user. Aliased as: drupalSetUpCurrentUser |