Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
GiftMessageConfigProviderTest.php
Go to the documentation of this file.
1 <?php
7 
9 use Magento\Customer\Model\Context as CustomerContext;
11 use Magento\GiftMessage\Helper\Message as GiftMessageHelper;
13 
17 class GiftMessageConfigProviderTest extends \PHPUnit\Framework\TestCase
18 {
22  protected $model;
23 
28 
33 
38 
42  protected $httpContextMock;
43 
47  protected $storeManagerMock;
48 
52  protected $localeFormatMock;
53 
57  protected $formKeyMock;
58 
62  protected $scopeConfigMock;
63 
64  protected function setUp()
65  {
66  $this->checkoutSessionMock = $this->createMock(\Magento\Checkout\Model\Session::class);
67  $this->httpContextMock = $this->createMock(\Magento\Framework\App\Http\Context::class);
68  $this->storeManagerMock = $this->createMock(\Magento\Store\Model\StoreManagerInterface::class);
69  $this->localeFormatMock = $this->createMock(\Magento\Framework\Locale\FormatInterface::class);
70  $this->formKeyMock = $this->createMock(\Magento\Framework\Data\Form\FormKey::class);
71  $this->scopeConfigMock = $this->createMock(\Magento\Framework\App\Config\ScopeConfigInterface::class);
72  $contextMock = $this->createMock(\Magento\Framework\App\Helper\Context::class);
73  $this->cartRepositoryMock = $this->createMock(\Magento\GiftMessage\Api\CartRepositoryInterface::class);
74  $this->itemRepositoryMock = $this->createMock(\Magento\GiftMessage\Api\ItemRepositoryInterface::class);
75  $contextMock->expects($this->atLeastOnce())->method('getScopeConfig')->willReturn($this->scopeConfigMock);
76 
77  $this->model = new \Magento\GiftMessage\Model\GiftMessageConfigProvider(
78  $contextMock,
79  $this->cartRepositoryMock,
80  $this->itemRepositoryMock,
81  $this->checkoutSessionMock,
82  $this->httpContextMock,
83  $this->storeManagerMock,
84  $this->localeFormatMock,
85  $this->formKeyMock
86  );
87  }
88 
89  public function testGetConfig()
90  {
91  $orderLevel = true;
92  $itemLevel = true;
93  $isCustomerLoggedIn = true;
94  $quoteId = 42;
95  $itemId = 9000;
96  $currencyCode = 'EUR';
97  $priceFormat = [$currencyCode];
98  $storeCode = 4;
99  $messageDataMock = ['from' => 'John Doe', 'to' => 'Jane Doe'];
100  $formKey = 'ABCDEFGHIJKLMNOP';
101  $baseUrl = 'https://magento.com/';
102  $quoteItemMock = $this->createMock(\Magento\Quote\Model\Quote\Item::class);
103  $productMock = $this->createMock(\Magento\Catalog\Model\Product::class);
104  $storeMock = $this->createPartialMock(
105  \Magento\Store\Model\Store::class,
106  ['getBaseUrl', 'getCode']
107  );
108  $quoteMock = $this->createPartialMock(
109  \Magento\Quote\Model\Quote::class,
110  ['getQuoteCurrencyCode', 'getStore', 'getIsVirtual', 'getAllVisibleItems', 'getId']
111  );
112  $messageMock = $this->createMock(\Magento\GiftMessage\Model\Message::class);
113 
114  $this->scopeConfigMock->expects($this->atLeastOnce())->method('getValue')->willReturnMap(
115  [
116  [GiftMessageHelper::XPATH_CONFIG_GIFT_MESSAGE_ALLOW_ORDER, Scope::SCOPE_STORE, null, $orderLevel],
117  [GiftMessageHelper::XPATH_CONFIG_GIFT_MESSAGE_ALLOW_ITEMS, Scope::SCOPE_STORE, null, $itemLevel]
118  ]
119  );
120 
121  $this->checkoutSessionMock->expects($this->atLeastOnce())->method('getQuoteId')->willReturn($quoteId);
122  $this->cartRepositoryMock->expects($this->once())->method('get')->with($quoteId)->willReturn($messageMock);
123  $this->checkoutSessionMock->expects($this->atLeastOnce())->method('getQuote')->willReturn($quoteMock);
124  $quoteMock->expects($this->any())->method('getId')->willReturn($quoteId);
125  $quoteMock->expects($this->once())->method('getIsVirtual')->willReturn(false);
126  $messageMock->expects($this->atLeastOnce())->method('getData')->willReturn($messageDataMock);
127  $quoteMock->expects($this->once())->method('getAllVisibleItems')->willReturn([$quoteItemMock]);
128  $quoteItemMock->expects($this->once())->method('getId')->willReturn($itemId);
129  $quoteItemMock->expects($this->any())->method('getProduct')->willReturn($productMock);
130  $productMock->expects($this->any())->method('getGiftMessageAvailable')->willReturn(Boolean::VALUE_USE_CONFIG);
131  $this->itemRepositoryMock->expects($this->once())->method('get')->with($quoteId, $itemId)
132  ->willReturn($messageMock);
133  $quoteMock->expects($this->once())->method('getQuoteCurrencyCode')->willReturn($currencyCode);
134  $this->localeFormatMock->expects($this->once())->method('getPriceFormat')->with(null, $currencyCode)
135  ->willReturn($priceFormat);
136 
137  $quoteMock->expects($this->once())->method('getStore')->willReturn($storeMock);
138  $storeMock->expects($this->once())->method('getCode')->willReturn($storeCode);
139 
140  $this->httpContextMock->expects($this->once())->method('getValue')->with(CustomerContext::CONTEXT_AUTH)
141  ->willReturn($isCustomerLoggedIn);
142  $this->formKeyMock->expects($this->once())->method('getFormKey')->willReturn($formKey);
143  $this->storeManagerMock->expects($this->once())->method('getStore')->willReturn($storeMock);
144  $storeMock->expects($this->once())->method('getBaseUrl')->with(UrlInterface::URL_TYPE_LINK)
145  ->willReturn($baseUrl);
146 
147  $expectedResult = [
148  'giftMessage' => [
149  'orderLevel' => $messageDataMock,
150  'itemLevel' => [
151  $itemId => [
152  'message' => $messageDataMock,
153  ],
154  ]
155  ],
156  'isOrderLevelGiftOptionsEnabled' => $orderLevel,
157  'isItemLevelGiftOptionsEnabled' => $itemLevel,
158  'priceFormat' => [0 => $currencyCode],
159  'storeCode' => $storeCode,
160  'isCustomerLoggedIn' => $isCustomerLoggedIn,
161  'formKey' => $formKey,
162  'baseUrl' => $baseUrl
163  ];
164  $this->assertSame($expectedResult, $this->model->getConfig());
165  }
166 }
$storeCode
Definition: indexer.php:15