35 private $metadataPool;
40 private $storeManager;
50 private $statusBaseSelectProcessor;
54 $this->eavConfig = $this->getMockBuilder(Config::class)->disableOriginalConstructor()->getMock();
55 $this->metadataPool = $this->getMockBuilder(MetadataPool::class)->disableOriginalConstructor()->getMock();
56 $this->storeManager = $this->getMockBuilder(StoreManagerInterface::class)->getMock();
57 $this->select = $this->getMockBuilder(Select::class)->disableOriginalConstructor()->getMock();
59 $this->statusBaseSelectProcessor = (
new ObjectManager($this))->getObject(StatusBaseSelectProcessor::class, [
60 'eavConfig' => $this->eavConfig,
61 'metadataPool' => $this->metadataPool,
62 'storeManager' => $this->storeManager,
66 public function testProcess()
68 $linkField =
'link_field';
69 $backendTable =
'backend_table';
73 $metadata = $this->createMock(EntityMetadataInterface::class);
74 $metadata->expects($this->once())
75 ->method(
'getLinkField')
76 ->willReturn($linkField);
77 $this->metadataPool->expects($this->once())
78 ->method(
'getMetadata')
79 ->with(ProductInterface::class)
80 ->willReturn($metadata);
83 $statusAttribute = $this->getMockBuilder(AttributeInterface::class)
84 ->setMethods([
'getBackendTable',
'getAttributeId'])
86 $statusAttribute->expects($this->atLeastOnce())
87 ->method(
'getBackendTable')
88 ->willReturn($backendTable);
89 $statusAttribute->expects($this->atLeastOnce())
90 ->method(
'getAttributeId')
91 ->willReturn($attributeId);
92 $this->eavConfig->expects($this->once())
93 ->method(
'getAttribute')
95 ->willReturn($statusAttribute);
97 $storeMock = $this->getMockBuilder(\
Magento\
Store\Api\Data\StoreInterface::class)->getMock();
99 $this->storeManager->expects($this->once())
101 ->willReturn($storeMock);
103 $storeMock->expects($this->once())
107 $this->select->expects($this->at(0))
110 [
'status_global_attr' => $backendTable],
111 "status_global_attr.{$linkField} = " 113 .
" AND status_global_attr.attribute_id = {$attributeId}" 118 $this->select->expects($this->at(1))
121 [
'status_attr' => $backendTable],
123 .
" AND status_attr.attribute_id = {$attributeId}" 124 .
" AND status_attr.store_id = {$currentStoreId}",
128 $this->select->expects($this->at(2))
133 $this->assertEquals($this->select, $this->statusBaseSelectProcessor->process($this->select));
const PRODUCT_TABLE_ALIAS