public function InvoiceGeneratorTest::testMultilingual in Commerce Invoice 8.2
Tests generating invoices in multiple languages.
File
- tests/
src/ Kernel/ InvoiceGeneratorTest.php, line 178
Class
- InvoiceGeneratorTest
- Tests the invoice generator service.
Namespace
Drupal\Tests\commerce_invoice\KernelCode
public function testMultilingual() {
$variation = ProductVariation::create([
'type' => 'default',
'title' => 'Version one',
'price' => new Price('12.00', 'USD'),
]);
$variation
->addTranslation('fr', [
'title' => 'Version une',
]);
$variation
->save();
/** @var \Drupal\commerce_order\OrderItemStorageInterface $order_item_storage */
$order_item_storage = $this->container
->get('entity_type.manager')
->getStorage('commerce_order_item');
$order_item = $order_item_storage
->createFromPurchasableEntity($variation);
$order_item
->save();
$order = Order::create([
'type' => 'default',
'store_id' => $this->store
->id(),
'state' => 'draft',
'mail' => $this->user
->getEmail(),
'uid' => $this->user
->id(),
'billing_profile' => $this->profile,
'order_items' => [
$order_item,
],
]);
$order
->save();
$invoice = $this->invoiceGenerator
->generate([
$order,
], $this->store, $this->profile, [
'uid' => $this->user
->id(),
]);
$this
->assertNotNull($invoice);
$this
->assertFalse($invoice
->hasTranslation('fr'));
$invoice
->delete();
$config = ContentLanguageSettings::loadByEntityTypeBundle('commerce_invoice', 'default');
$config
->setDefaultLangcode('en');
$config
->setThirdPartySetting('commerce_invoice', 'generate_translations', TRUE);
$config
->setLanguageAlterable(FALSE);
$config
->save();
$invoice = $this->invoiceGenerator
->generate([
$order,
], $this->store, $this->profile, [
'uid' => $this->user
->id(),
]);
$this
->assertEquals('Version one', $invoice
->getItems()[0]
->label());
$this
->assertEquals('en', $invoice
->language()
->getId());
$this
->assertNotEmpty($invoice
->getData('invoice_type'));
$expected = [
'paymentTerms' => 'Payment terms',
'footerText' => 'Footer text',
];
$this
->assertEquals($expected, $invoice
->getData('invoice_type'));
$this
->assertTrue($invoice
->hasTranslation('fr'));
$fr_translation = $invoice
->getTranslation('fr');
$this
->assertEquals('fr', $fr_translation
->language()
->getId());
$this
->assertNotEmpty($fr_translation
->getData('invoice_type'));
$expected = [
'paymentTerms' => 'Termes de paiement',
'footerText' => 'Texte pied de page',
];
$this
->assertEquals($expected, $fr_translation
->getData('invoice_type'));
$fr_invoice_item = $fr_translation
->getItems()[0]
->getTranslation('fr');
$this
->assertEquals('Version une', $fr_invoice_item
->label());
}