10 class CartTest extends \PHPUnit\Framework\TestCase
35 $this->_validItem = new \Magento\Framework\DataObject(
37 'parent_item' =>
null,
40 'name' =>
'valid item',
48 $this->_salesModel = $this->getMockForAbstractClass(
51 $factoryMock = $this->createPartialMock(\
Magento\
Payment\Model\
Cart\SalesModel\Factory::class, [
'create']);
52 $factoryMock->expects(
59 $this->returnValue($this->_salesModel)
61 $eventManagerMock = $this->getMockForAbstractClass(\
Magento\Framework\Event\ManagerInterface::class);
63 $this->_model = new \Magento\Paypal\Model\Cart($factoryMock, $eventManagerMock,
'sales model');
72 $taxContainer = new \Magento\Framework\DataObject(
73 [
'base_discount_tax_compensation_amount' => 0.2,
'base_shipping_discount_tax_compensation_amount' => 0.1]
75 $this->_salesModel->expects($this->once())->method(
'getTaxContainer')->will($this->returnValue($taxContainer));
76 $this->_salesModel->expects($this->once())->method(
'getAllItems')->will($this->returnValue(
$items));
77 $this->_salesModel->expects($this->once())->method(
'getBaseSubtotal')->will($this->returnValue(2.1));
78 $this->_salesModel->expects($this->once())->method(
'getBaseTaxAmount')->will($this->returnValue(0.1));
79 $this->_salesModel->expects($this->once())->method(
'getBaseShippingAmount')->will($this->returnValue(1.1));
80 $this->_salesModel->expects($this->once())->method(
'getBaseDiscountAmount')->will($this->returnValue(0.3));
81 $this->assertEmpty($this->_model->getAllItems());
82 $this->assertEquals(2.1, $this->_model->getSubtotal());
83 $this->assertEquals(0.1 + 0.2 + 0.1, $this->_model->getTax());
84 $this->assertEquals(1.1, $this->_model->getShipping());
85 $this->assertEquals(0.3, $this->_model->getDiscount());
97 new \Magento\Framework\DataObject(
110 new \Magento\Framework\DataObject(
115 'original_item' =>
new \
Magento\Framework\
DataObject([
'base_row_total' => 6.01]),
123 new \Magento\Framework\DataObject(
144 $this->assertEmpty($this->_model->getAllItems());
145 $this->assertEquals($expectedSubtotal, $this->_model->getSubtotal());
148 $values[
'base_discount_tax_compensation_amount'] +
149 $values[
'base_shipping_discount_tax_compensation_amount'],
150 $this->_model->getTax()
152 $this->assertEquals(
$values[
'base_shipping_amount'], $this->_model->getShipping());
153 $this->assertEquals($transferDiscount ? 0.0 :
$values[
'base_discount_amount'], $this->_model->getDiscount());
164 'base_discount_tax_compensation_amount' => 0,
165 'base_shipping_discount_tax_compensation_amount' => 0,
166 'base_subtotal' => 0,
167 'base_tax_amount' => 0,
168 'base_shipping_amount' => 0,
169 'base_discount_amount' => 6.1,
170 'base_grand_total' => 0,
176 'base_discount_tax_compensation_amount' => 1,
177 'base_shipping_discount_tax_compensation_amount' => 2,
178 'base_subtotal' => 3,
179 'base_tax_amount' => 4,
180 'base_shipping_amount' => 5,
181 'base_discount_amount' => 100,
182 'base_grand_total' => 5.5,
196 'name' => $this->_validItem->getName(),
197 'qty' => $this->_validItem->getQty(),
198 'amount' => $this->_validItem->getPrice(),
202 $this->_model->getAllItems()
204 $this->assertEquals(
$totals[
'subtotal'], $this->_model->getSubtotal());
205 $this->assertEquals(
$totals[
'tax'], $this->_model->getTax());
206 $this->assertEquals(
$totals[
'shipping'], $this->_model->getShipping());
207 $this->assertEquals(
$totals[
'discount'], $this->_model->getDiscount());
219 if ($transferShipping) {
220 $this->_model->setTransferShippingAsItem();
222 $result = $this->_model->getAmounts();
223 $expectedSubtotal += $this->_model->getTax();
224 $expectedSubtotal +=
$values[
'base_shipping_amount'];
225 if (!$transferDiscount) {
226 $expectedSubtotal -= $this->_model->getDiscount();
238 foreach ($invalidTotalsData as $dataItem) {
239 $data[] = [$dataItem[0], $dataItem[1],
true];
240 $data[] = [$dataItem[0], $dataItem[1],
false];
254 $taxContainer = new \Magento\Framework\DataObject(
256 'base_discount_tax_compensation_amount' =>
257 $values[
'base_discount_tax_compensation_amount'],
258 'base_shipping_discount_tax_compensation_amount' =>
259 $values[
'base_shipping_discount_tax_compensation_amount'],
262 $expectedSubtotal =
$values[
'base_subtotal'];
263 if ($transferDiscount) {
264 $this->_model->setTransferDiscountAsItem();
265 $expectedSubtotal -=
$values[
'base_discount_amount'];
267 $this->_salesModel->expects($this->once())->method(
'getTaxContainer')->will($this->returnValue($taxContainer));
268 $this->_salesModel->expects(
273 $this->returnValue([$this->_validItem])
275 $this->_salesModel->expects(
280 $this->returnValue(
$values[
'base_subtotal'])
282 $this->_salesModel->expects(
287 $this->returnValue(
$values[
'base_tax_amount'])
289 $this->_salesModel->expects(
292 'getBaseShippingAmount' 294 $this->returnValue(
$values[
'base_shipping_amount'])
296 $this->_salesModel->expects(
299 'getBaseDiscountAmount' 301 $this->returnValue(
$values[
'base_discount_amount'])
303 $this->_salesModel->expects(
310 $this->returnValue(
$values[
'base_grand_total'])
312 return $expectedSubtotal;
318 $this->assertEquals(
$totals, $this->_model->getAmounts());
328 $totals = [
'discount' => 0.1,
'shipping' => 0.2,
'subtotal' => 0.3,
'tax' => 0.4];
329 $taxContainer = new \Magento\Framework\DataObject(
330 [
'base_discount_tax_compensation_amount' => 0,
'base_shipping_discount_tax_compensation_amnt' => 0]
332 $this->_salesModel->expects($this->once())->method(
'getTaxContainer')->will($this->returnValue($taxContainer));
333 $this->_salesModel->expects(
338 $this->returnValue([$this->_validItem])
340 $this->_salesModel->expects(
345 $this->returnValue(
$totals[
'subtotal'])
347 $this->_salesModel->expects(
352 $this->returnValue(
$totals[
'tax'])
354 $this->_salesModel->expects(
357 'getBaseShippingAmount' 359 $this->returnValue(
$totals[
'shipping'])
361 $this->_salesModel->expects(
364 'getBaseDiscountAmount' 366 $this->returnValue(
$totals[
'discount'])
368 $this->_salesModel->expects(
382 $this->_model->addCustomItem(
'item1', 1, 2.1);
383 $this->assertFalse($this->_model->hasNegativeItemAmount());
384 $this->_model->addCustomItem(
'item1', 1, -1.3);
385 $this->assertTrue($this->_model->hasNegativeItemAmount());
__construct($name=null, array $data=[], $dataName='')
testInvalidGetAllItems($items)
invalidTotalsGetAllItemsDataProvider()
invalidGetAllItemsDataProvider()
testInvalidGetAmounts($values, $transferDiscount, $transferShipping)
invalidGetAmountsDataProvider()
testInvalidTotalsGetAllItems($values, $transferDiscount)
testHasNegativeItemAmount()
_prepareInvalidModelData($values, $transferDiscount)
if(!isset($_GET['name'])) $name