ShippingTest.php 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. <?php
  2. /**
  3. *
  4. * Copyright © Magento, Inc. All rights reserved.
  5. * See COPYING.txt for license details.
  6. */
  7. namespace Magento\Multishipping\Test\Unit\Block\Checkout;
  8. use Magento\Framework\Pricing\PriceCurrencyInterface;
  9. use Magento\Multishipping\Block\Checkout\Shipping;
  10. class ShippingTest extends \PHPUnit\Framework\TestCase
  11. {
  12. /**
  13. * @var Shipping
  14. */
  15. protected $model;
  16. /**
  17. * @var \PHPUnit_Framework_MockObject_MockObject
  18. */
  19. protected $multiShippingMock;
  20. /**
  21. * @var \PHPUnit_Framework_MockObject_MockObject
  22. */
  23. protected $scopeConfigMock;
  24. /**
  25. * @var \PHPUnit_Framework_MockObject_MockObject
  26. */
  27. protected $priceCurrencyMock;
  28. /**
  29. * @var \PHPUnit_Framework_MockObject_MockObject
  30. */
  31. protected $taxHelperMock;
  32. protected function setUp()
  33. {
  34. $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
  35. $this->scopeConfigMock = $this->createMock(\Magento\Framework\App\Config\ScopeConfigInterface::class);
  36. $this->multiShippingMock =
  37. $this->createMock(\Magento\Multishipping\Model\Checkout\Type\Multishipping::class);
  38. $this->priceCurrencyMock =
  39. $this->createMock(\Magento\Framework\Pricing\PriceCurrencyInterface::class);
  40. $this->taxHelperMock = $this->createMock(\Magento\Tax\Helper\Data::class);
  41. $this->model = $objectManager->getObject(
  42. \Magento\Multishipping\Block\Checkout\Shipping::class,
  43. [
  44. 'multishipping' => $this->multiShippingMock,
  45. 'scopeConfig' => $this->scopeConfigMock,
  46. 'priceCurrency' => $this->priceCurrencyMock,
  47. 'taxHelper' => $this->taxHelperMock
  48. ]
  49. );
  50. }
  51. public function testGetAddresses()
  52. {
  53. $quoteMock = $this->createMock(\Magento\Quote\Model\Quote::class);
  54. $this->multiShippingMock->expects($this->once())->method('getQuote')->will($this->returnValue($quoteMock));
  55. $quoteMock->expects($this->once())
  56. ->method('getAllShippingAddresses')->will($this->returnValue(['expected array']));
  57. $this->assertEquals(['expected array'], $this->model->getAddresses());
  58. }
  59. public function testGetAddressShippingMethod()
  60. {
  61. $addressMock = $this->createPartialMock(
  62. \Magento\Quote\Model\Quote\Address::class,
  63. ['getShippingMethod', '__wakeup']
  64. );
  65. $addressMock->expects($this->once())
  66. ->method('getShippingMethod')->will($this->returnValue('expected shipping method'));
  67. $this->assertEquals('expected shipping method', $this->model->getAddressShippingMethod($addressMock));
  68. }
  69. public function testGetShippingRates()
  70. {
  71. $addressMock = $this->createPartialMock(
  72. \Magento\Quote\Model\Quote\Address::class,
  73. ['getGroupedAllShippingRates', '__wakeup']
  74. );
  75. $addressMock->expects($this->once())
  76. ->method('getGroupedAllShippingRates')->will($this->returnValue(['expected array']));
  77. $this->assertEquals(['expected array'], $this->model->getShippingRates($addressMock));
  78. }
  79. public function testGetCarrierName()
  80. {
  81. $carrierCode = 'some carrier code';
  82. $name = 'some name';
  83. $this->scopeConfigMock->expects($this->once())->method('getValue')->with(
  84. 'carriers/' . $carrierCode . '/title',
  85. \Magento\Store\Model\ScopeInterface::SCOPE_STORE
  86. )->will($this->returnValue($name));
  87. $this->assertEquals($name, $this->model->getCarrierName($carrierCode));
  88. }
  89. public function testGetCarrierNameWithEmptyName()
  90. {
  91. $carrierCode = 'some carrier code';
  92. $this->scopeConfigMock->expects($this->once())->method('getValue')->with(
  93. 'carriers/' . $carrierCode . '/title',
  94. \Magento\Store\Model\ScopeInterface::SCOPE_STORE
  95. )->will($this->returnValue(null));
  96. $this->assertEquals($carrierCode, $this->model->getCarrierName($carrierCode));
  97. }
  98. public function testGetShippingPrice()
  99. {
  100. $addressMock = $this->createPartialMock(\Magento\Quote\Model\Quote\Address::class, ['getQuote', '__wakeup']);
  101. $quoteMock = $this->createMock(\Magento\Quote\Model\Quote::class);
  102. $storeMock = $this->createMock(\Magento\Store\Model\Store::class);
  103. $price = 100;
  104. $flag = true;
  105. $shippingPrice = 11.11;
  106. $this->taxHelperMock->expects($this->once())
  107. ->method('getShippingPrice')->with($price, $flag, $addressMock)->will($this->returnValue($shippingPrice));
  108. $addressMock->expects($this->once())->method('getQuote')->will($this->returnValue($quoteMock));
  109. $quoteMock->expects($this->once())->method('getStore')->will($this->returnValue($storeMock));
  110. $this->priceCurrencyMock->expects($this->once())
  111. ->method('convertAndFormat')
  112. ->with(
  113. $shippingPrice,
  114. true,
  115. PriceCurrencyInterface::DEFAULT_PRECISION,
  116. $storeMock
  117. );
  118. $this->model->getShippingPrice($addressMock, $price, $flag);
  119. }
  120. }