/** * Test the processing of the join config for a particular type */ public function testProcess() { $this->config->expects($this->once())->method('get')->will($this->returnValue($this->getConfig())); $collection = $this->getMockBuilder('Magento\\Framework\\Data\\Collection\\AbstractDb')->disableOriginalConstructor()->setMethods(['joinExtensionAttribute'])->getMockForAbstractClass(); $extensionAttributeJoinData = new JoinData(); $this->extensionAttributeJoinDataFactory->expects($this->once())->method('create')->willReturn($extensionAttributeJoinData); $collection->expects($this->once())->method('joinExtensionAttribute')->with($extensionAttributeJoinData); $this->joinProcessor->process($collection, 'Magento\\Catalog\\Api\\Data\\ProductInterface'); $expectedTableName = 'reviews'; $this->assertEquals($expectedTableName, $extensionAttributeJoinData->getReferenceTable()); $this->assertEquals('extension_attribute_review_id', $extensionAttributeJoinData->getReferenceTableAlias()); $this->assertEquals('product_id', $extensionAttributeJoinData->getReferenceField()); $this->assertEquals('id', $extensionAttributeJoinData->getJoinField()); $this->assertEquals([['external_alias' => 'review_id', 'internal_alias' => 'extension_attribute_review_id_db_review_id', 'with_db_prefix' => 'extension_attribute_review_id.db_review_id', 'setter' => 'setReviewId']], $extensionAttributeJoinData->getSelectFields()); }