59 $this->objectFactory = $this->getMockBuilder(\
Magento\Framework\
DataObject\Factory::class)
60 ->setMethods([
'create'])
61 ->disableOriginalConstructor()
63 $this->productOptionFactory = $this->getMockBuilder(\
Magento\
Quote\Model\
Quote\ProductOptionFactory::class)
64 ->setMethods([
'create'])
65 ->disableOriginalConstructor()
67 $this->extensionFactory = $this->getMockBuilder(\
Magento\
Quote\Api\Data\ProductOptionExtensionFactory::class)
68 ->setMethods([
'create'])
69 ->disableOriginalConstructor()
71 $this->customOptionFactory = $this->getMockBuilder(
72 \
Magento\Catalog\Model\CustomOptions\CustomOptionFactory::class
74 ->setMethods([
'create'])
75 ->disableOriginalConstructor()
77 $this->cartItem = $this->getMockBuilder(\
Magento\
Quote\Api\Data\CartItemInterface::class)
78 ->disableOriginalConstructor()
79 ->setMethods([
'getOptionByCode',
'getProductOption',
'setProductOption'])
80 ->getMockForAbstractClass();
81 $this->extensibleAttribute = $this->getMockBuilder(
82 \
Magento\
Quote\Api\Data\ProductOptionExtensionInterface::class
84 ->disableOriginalConstructor()
85 ->setMethods([
'setCustomOptions',
'getCustomOptions'])
86 ->getMockForAbstractClass();
87 $this->productOption = $this->getMockBuilder(\
Magento\
Quote\Model\
Quote\ProductOption::class)
88 ->disableOriginalConstructor()
90 $this->customOption = $this->getMockBuilder(\
Magento\Catalog\Api\Data\CustomOptionInterface::class)
91 ->disableOriginalConstructor()
92 ->getMockForAbstractClass();
93 $this->buyRequest = $this->getMockBuilder(\
Magento\Framework\DataObject::class)
94 ->disableOriginalConstructor()
96 $this->serializer = $this->getMockBuilder(\
Magento\Framework\
Serialize\Serializer\Json::class)
97 ->setMethods([
'unserialize'])
98 ->getMockForAbstractClass();
101 $this->objectFactory,
102 $this->productOptionFactory,
103 $this->extensionFactory,
104 $this->customOptionFactory,
113 $this->objectFactory->expects($this->once())
115 ->willReturn($this->buyRequest);
116 $this->cartItem->expects($this->any())
117 ->method(
'getProductOption')
118 ->willReturn($this->productOption);
119 $this->productOption->expects($this->any())
120 ->method(
'getExtensionAttributes')
121 ->willReturn($this->extensibleAttribute);
122 $this->extensibleAttribute->expects($this->atLeastOnce())
123 ->method(
'getCustomOptions')
124 ->willReturn([$this->customOption]);
125 $this->customOption->expects($this->once())
126 ->method(
'getOptionId')
128 $this->customOption->expects($this->once())
129 ->method(
'getOptionValue')
132 $this->assertSame($this->buyRequest, $this->processor->convertToBuyRequest($this->cartItem));
141 $quoteItemOption = $this->getMockBuilder(\
Magento\
Quote\Model\
Quote\Item\Option::class)
142 ->disableOriginalConstructor()
144 $this->cartItem->expects($this->atLeastOnce())
145 ->method(
'getOptionByCode')
146 ->with(
'info_buyRequest')
147 ->willReturn($quoteItemOption);
148 $quoteItemOption->expects($this->any())
150 ->willReturn(
'{"options":{"' .
$optionId .
'":["5","6"]}}');
151 $this->serializer->expects($this->any())
152 ->method(
'unserialize')
153 ->willReturn(json_decode($quoteItemOption->getValue(),
true));
154 $this->customOptionFactory->expects($this->once())
156 ->willReturn($this->customOption);
157 $this->customOption->expects($this->once())
158 ->method(
'setOptionId')
160 $this->customOption->expects($this->once())
161 ->method(
'setOptionValue')
163 $this->cartItem->expects($this->atLeastOnce())
164 ->method(
'getProductOption')
166 $this->productOptionFactory->expects($this->once())
168 ->willReturn($this->productOption);
169 $this->productOption->expects($this->once())
170 ->method(
'getExtensionAttributes')
172 $this->extensionFactory->expects($this->once())
174 ->willReturn($this->extensibleAttribute);
175 $this->extensibleAttribute->expects($this->once())
176 ->method(
'setCustomOptions')
177 ->with([
$optionId => $this->customOption]);
178 $this->productOption->expects($this->once())
179 ->method(
'setExtensionAttributes')
180 ->with($this->extensibleAttribute);
181 $this->cartItem->expects($this->once())
182 ->method(
'setProductOption')
183 ->with($this->productOption);
185 $this->assertSame($this->cartItem, $this->processor->processOptions($this->cartItem));
testConvertToBuyRequest()
testProcessCustomOptions()