InvoiceServiceTest.php 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. declare(strict_types=1);
  7. namespace Magento\Sales\Model\Service;
  8. use Magento\Sales\Api\Data\OrderInterface;
  9. use Magento\Sales\Model\Order;
  10. use Magento\TestFramework\Helper\Bootstrap;
  11. /**
  12. * Tests \Magento\Sales\Model\Service\InvoiceService
  13. */
  14. class InvoiceServiceTest extends \PHPUnit\Framework\TestCase
  15. {
  16. /**
  17. * @var InvoiceService
  18. */
  19. private $invoiceService;
  20. /**
  21. * @inheritdoc
  22. */
  23. protected function setUp()
  24. {
  25. $this->invoiceService = Bootstrap::getObjectManager()->create(InvoiceService::class);
  26. }
  27. /**
  28. * @param int $invoiceQty
  29. * @magentoDataFixture Magento/Sales/_files/order_configurable_product.php
  30. * @return void
  31. * @dataProvider prepareInvoiceConfigurableProductDataProvider
  32. */
  33. public function testPrepareInvoiceConfigurableProduct(int $invoiceQty): void
  34. {
  35. /** @var OrderInterface $order */
  36. $order = Bootstrap::getObjectManager()->create(Order::class)->load('100000001', 'increment_id');
  37. $orderItems = $order->getItems();
  38. foreach ($orderItems as $orderItem) {
  39. if ($orderItem->getParentItemId()) {
  40. $parentItemId = $orderItem->getParentItemId();
  41. }
  42. }
  43. $invoice = $this->invoiceService->prepareInvoice($order, [$parentItemId => $invoiceQty]);
  44. $invoiceItems = $invoice->getItems();
  45. foreach ($invoiceItems as $invoiceItem) {
  46. $this->assertEquals($invoiceQty, $invoiceItem->getQty());
  47. }
  48. }
  49. public function prepareInvoiceConfigurableProductDataProvider()
  50. {
  51. return [
  52. 'full invoice' => [2],
  53. 'partial invoice' => [1]
  54. ];
  55. }
  56. /**
  57. * @param int $invoiceQty
  58. * @magentoDataFixture Magento/Sales/_files/order.php
  59. * @return void
  60. * @dataProvider prepareInvoiceSimpleProductDataProvider
  61. */
  62. public function testPrepareInvoiceSimpleProduct(int $invoiceQty): void
  63. {
  64. /** @var OrderInterface $order */
  65. $order = Bootstrap::getObjectManager()->create(Order::class)->load('100000001', 'increment_id');
  66. $orderItems = $order->getItems();
  67. $invoiceQtys = [];
  68. foreach ($orderItems as $orderItem) {
  69. $invoiceQtys[$orderItem->getItemId()] = $invoiceQty;
  70. }
  71. $invoice = $this->invoiceService->prepareInvoice($order, $invoiceQtys);
  72. $invoiceItems = $invoice->getItems();
  73. foreach ($invoiceItems as $invoiceItem) {
  74. $this->assertEquals($invoiceQty, $invoiceItem->getQty());
  75. }
  76. }
  77. public function prepareInvoiceSimpleProductDataProvider()
  78. {
  79. return [
  80. 'full invoice' => [2],
  81. 'partial invoice' => [1]
  82. ];
  83. }
  84. }