9 use \Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
53 $this->subjectMock = $this->getMockBuilder(\
Magento\Quote\Model\Cart\TotalsConverter::class)
54 ->disableOriginalConstructor()
57 $this->totalSegmentExtensionFactoryMock = $this->getMockBuilder(
58 \
Magento\Quote\Api\Data\TotalSegmentExtensionFactory::class
59 )->disableOriginalConstructor()
62 $this->detailsFactoryMock = $this->getMockBuilder(
63 \
Magento\Tax\Api\Data\GrandTotalDetailsInterfaceFactory::class
65 ->disableOriginalConstructor()
66 ->setMethods([
'create'])
69 $this->ratesFactoryMock = $this->getMockBuilder(\
Magento\Tax\Api\Data\GrandTotalRatesInterfaceFactory::class)
70 ->disableOriginalConstructor()
71 ->setMethods([
'create'])
74 $this->taxConfigMock = $this->getMockBuilder(\
Magento\Tax\Model\Config::class)
75 ->disableOriginalConstructor()
78 $serializer = $this->getMockBuilder(\
Magento\Framework\Serialize\Serializer\Json::class)
79 ->disableOriginalConstructor()
86 return json_encode(
$value);
91 ->method(
'unserialize')
94 return json_decode(
$value,
true);
99 $this->model = $this->objectManagerHelper->getObject(
100 \
Magento\Tax\Model\Quote\GrandTotalDetailsPlugin::class,
102 'totalSegmentExtensionFactory' => $this->totalSegmentExtensionFactoryMock,
103 'ratesFactory' => $this->ratesFactoryMock,
104 'detailsFactory' => $this->detailsFactoryMock,
105 'taxConfig' => $this->taxConfigMock,
117 $taxTotalMock = $this->getMockBuilder(\
Magento\Quote\Model\Quote\Address\Total::class)
118 ->disableOriginalConstructor()
121 $taxTotalMock->expects($this->any())
125 return $taxTotalMock;
134 $taxRateMock = $this->getMockBuilder(\
Magento\Tax\Api\Data\GrandTotalRatesInterface::class)
137 $this->ratesFactoryMock->expects($this->once())
140 ->willReturn($taxRateMock);
142 $taxRateMock->expects($this->once())
143 ->method(
'setPercent')
146 $taxRateMock->expects($this->once())
159 $taxDetailsMock = $this->getMockBuilder(\
Magento\Tax\Api\Data\GrandTotalDetailsInterface::class)
162 $this->detailsFactoryMock->expects($this->once())
164 ->willReturn($taxDetailsMock);
166 $taxDetailsMock->expects($this->once())
167 ->method(
'setAmount')
168 ->with($taxDetails[
'amount'])
171 $taxDetailsMock->expects($this->once())
173 ->with($taxDetails[
'rates'])
176 $taxDetailsMock->expects($this->once())
177 ->method(
'setGroupId')
181 return $taxDetailsMock;
197 'rates' => [$taxRateMock],
202 'full_info' => json_encode([
211 'tax' => $taxTotalMock,
214 $extensionAttributeMock = $this->getMockBuilder(
215 \
Magento\Quote\Api\Data\TotalSegmentExtensionInterface::class
218 'setTaxGrandtotalDetails',
221 )->getMockForAbstractClass();
222 $extensionAttributeMock->expects($this->once())
223 ->method(
'setTaxGrandtotalDetails')
224 ->with([$taxDetailsMock])
227 $taxSegmentMock = $this->getMockBuilder(\
Magento\Quote\Model\Cart\TotalSegment::class)
228 ->disableOriginalConstructor()
230 $taxSegmentMock->expects($this->once())
231 ->method(
'getExtensionAttributes')
232 ->willReturn($extensionAttributeMock);
233 $taxSegmentMock->expects($this->once())
234 ->method(
'setExtensionAttributes')
235 ->with($extensionAttributeMock)
239 'tax' => $taxSegmentMock,
242 $result = $this->model->afterProcess($this->subjectMock, $totalSegments, $addressTotals);
243 $this->assertEquals($totalSegments,
$result);
setupTaxRateFactoryMock(array $taxRate)
setupTaxTotal(array $data)
setupTaxDetails(array $taxDetails)
$totalSegmentExtensionFactoryMock