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);
77 $this->model = new \Magento\GiftMessage\Model\GiftMessageConfigProvider(
79 $this->cartRepositoryMock,
80 $this->itemRepositoryMock,
81 $this->checkoutSessionMock,
82 $this->httpContextMock,
83 $this->storeManagerMock,
84 $this->localeFormatMock,
93 $isCustomerLoggedIn =
true;
96 $currencyCode =
'EUR';
97 $priceFormat = [$currencyCode];
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']
108 $quoteMock = $this->createPartialMock(
109 \
Magento\Quote\Model\Quote::class,
110 [
'getQuoteCurrencyCode',
'getStore',
'getIsVirtual',
'getAllVisibleItems',
'getId']
112 $messageMock = $this->createMock(\
Magento\GiftMessage\Model\Message::class);
114 $this->scopeConfigMock->expects($this->atLeastOnce())->method(
'getValue')->willReturnMap(
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]
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);
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);
137 $quoteMock->expects($this->once())->method(
'getStore')->willReturn($storeMock);
138 $storeMock->expects($this->once())->method(
'getCode')->willReturn(
$storeCode);
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);
145 ->willReturn($baseUrl);
149 'orderLevel' => $messageDataMock,
152 'message' => $messageDataMock,
156 'isOrderLevelGiftOptionsEnabled' => $orderLevel,
157 'isItemLevelGiftOptionsEnabled' => $itemLevel,
158 'priceFormat' => [0 => $currencyCode],
160 'isCustomerLoggedIn' => $isCustomerLoggedIn,
161 'formKey' => $formKey,
162 'baseUrl' => $baseUrl
164 $this->assertSame($expectedResult, $this->model->getConfig());