Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
RoundingErrorsTest.php
Go to the documentation of this file.
1 <?php
7 
15 
19 class RoundingErrorsTest extends \PHPUnit\Framework\TestCase
20 {
24  private $roundingErrorsNotification;
25 
29  private $storeManagerMock;
30 
34  private $urlBuilderMock;
35 
39  private $taxConfigMock;
40 
41  protected function setUp()
42  {
43  parent::setUp();
44 
45  $websiteMock = $this->createMock(WebsiteInterface::class);
46  $websiteMock->expects($this->any())->method('getName')->willReturn('testWebsiteName');
47  $storeMock = $this->getMockForAbstractClass(
48  StoreInterface::class,
49  [],
50  '',
51  false,
52  true,
53  true,
54  ['getWebsite', 'getName']
55  );
56  $storeMock->expects($this->any())->method('getName')->willReturn('testStoreName');
57  $storeMock->expects($this->any())->method('getWebsite')->willReturn($websiteMock);
58  $this->storeManagerMock = $this->createMock(StoreManagerInterface::class);
59  $this->storeManagerMock->expects($this->any())->method('getStores')->willReturn([$storeMock]);
60 
61  $this->urlBuilderMock = $this->createMock(UrlInterface::class);
62  $this->taxConfigMock = $this->createMock(TaxConfig::class);
63  $this->roundingErrorsNotification = (new ObjectManager($this))->getObject(
64  RoundingErrorsNotification::class,
65  [
66  'storeManager' => $this->storeManagerMock,
67  'urlBuilder' => $this->urlBuilderMock,
68  'taxConfig' => $this->taxConfigMock,
69  ]
70  );
71  }
72 
74  {
75  $this->taxConfigMock->expects($this->any())->method('isWrongDisplaySettingsIgnored')->willReturn(false);
76 
77  $this->taxConfigMock->expects($this->any())
78  ->method('getAlgorithm')->willReturn(\Magento\Tax\Model\Calculation::CALC_UNIT_BASE);
79 
80  $this->taxConfigMock->expects($this->any())
81  ->method('getPriceDisplayType')->willReturn(\Magento\Tax\Model\Config::DISPLAY_TYPE_EXCLUDING_TAX);
82  $this->taxConfigMock->expects($this->any())
83  ->method('getShippingPriceDisplayType')->willReturn(\Magento\Tax\Model\Config::DISPLAY_TYPE_EXCLUDING_TAX);
84 
85  $this->taxConfigMock->expects($this->any())->method('displayCartPricesBoth')->willReturn(false);
86  $this->taxConfigMock->expects($this->any())->method('displayCartSubtotalBoth')->willReturn(false);
87  $this->taxConfigMock->expects($this->any())->method('displayCartShippingBoth')->willReturn(false);
88  $this->taxConfigMock->expects($this->any())->method('displaySalesPricesBoth')->willReturn(false);
89  $this->taxConfigMock->expects($this->any())->method('displaySalesSubtotalBoth')->willReturn(false);
90 
91  $this->taxConfigMock->expects($this->any())->method('displaySalesShippingBoth')->willReturn(true);
92 
93  $this->assertFalse($this->roundingErrorsNotification->isDisplayed());
94  }
95 
96  public function testIsDisplayedNotDisplayed()
97  {
98  $this->taxConfigMock->expects($this->any())->method('isWrongDisplaySettingsIgnored')->willReturn(false);
99 
100  $this->taxConfigMock->expects($this->any())
101  ->method('getAlgorithm')->willReturn(\Magento\Tax\Model\Calculation::CALC_ROW_BASE);
102 
103  $this->taxConfigMock->expects($this->any())
104  ->method('getPriceDisplayType')->willReturn(\Magento\Tax\Model\Config::DISPLAY_TYPE_EXCLUDING_TAX);
105  $this->taxConfigMock->expects($this->any())
106  ->method('getShippingPriceDisplayType')->willReturn(\Magento\Tax\Model\Config::DISPLAY_TYPE_EXCLUDING_TAX);
107 
108  $this->taxConfigMock->expects($this->any())->method('displayCartPricesBoth')->willReturn(false);
109  $this->taxConfigMock->expects($this->any())->method('displayCartSubtotalBoth')->willReturn(false);
110  $this->taxConfigMock->expects($this->any())->method('displayCartShippingBoth')->willReturn(false);
111  $this->taxConfigMock->expects($this->any())->method('displaySalesPricesBoth')->willReturn(false);
112  $this->taxConfigMock->expects($this->any())->method('displaySalesSubtotalBoth')->willReturn(false);
113  $this->taxConfigMock->expects($this->any())->method('displaySalesShippingBoth')->willReturn(false);
114 
115  $this->assertFalse($this->roundingErrorsNotification->isDisplayed());
116  }
117 
119  {
120  $this->taxConfigMock->expects($this->any())->method('isWrongDisplaySettingsIgnored')->willReturn(true);
121  $this->assertFalse($this->roundingErrorsNotification->isDisplayed());
122  }
123 
124  public function testGetText()
125  {
126  $this->taxConfigMock->expects($this->any())->method('isWrongDisplaySettingsIgnored')->willReturn(false);
127 
128  $this->taxConfigMock->expects($this->any())->method('displaySalesShippingBoth')->willReturn(true);
129 
130  $this->urlBuilderMock->expects($this->any())
131  ->method('getUrl')
132  ->with('tax/tax/ignoreTaxNotification', ['section' => 'price_display'])
133  ->willReturn('http://example.com');
134  $this->roundingErrorsNotification->isDisplayed();
135  $this->assertEquals(
136  '<strong>Your current tax configuration may result in rounding errors. '
137  . '</strong><p>Store(s) affected: testWebsiteName (testStoreName)</p><p>Click on the link to '
138  . '<a href="http://example.com">ignore this notification</a></p>',
139  $this->roundingErrorsNotification->getText()
140  );
141  }
142 }
const DISPLAY_TYPE_EXCLUDING_TAX
Definition: Config.php:102