AttributeHandlerTest.php 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. declare(strict_types=1);
  7. namespace Magento\Framework\Indexer\Test\Unit\Handler;
  8. use Magento\Framework\Indexer\Handler\AttributeHandler;
  9. use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
  10. use Magento\Framework\App\ResourceConnection\SourceProviderInterface;
  11. /**
  12. * Unit test for Magento\Framework\Indexer\Handler\AttributeHandler.
  13. */
  14. class AttributeHandlerTest extends \PHPUnit\Framework\TestCase
  15. {
  16. /**
  17. * @var SourceProviderInterface|\PHPUnit_Framework_MockObject_MockObject
  18. */
  19. private $source;
  20. /**
  21. * @var AttributeHandler
  22. */
  23. private $subject;
  24. /**
  25. * @inheritdoc
  26. */
  27. protected function setUp()
  28. {
  29. $this->source = $this->getMockBuilder(SourceProviderInterface::class)
  30. ->disableOriginalConstructor()
  31. ->setMethods(['joinAttribute'])
  32. ->getMockForAbstractClass();
  33. $objectManager = new ObjectManager($this);
  34. $this->subject = $objectManager->getObject(AttributeHandler::class);
  35. }
  36. public function testPrepareSqlWithBindAndExistingJoinAttributeMethod()
  37. {
  38. $alias = 'e';
  39. $fieldInfo = [
  40. 'name' => 'is_approved',
  41. 'origin' => 'is_approved',
  42. 'type' => 'searchable',
  43. 'dataType' => 'varchar',
  44. 'entity' => 'customer',
  45. 'bind' => 'test',
  46. ];
  47. $this->source->expects($this->once())
  48. ->method('joinAttribute')
  49. ->with(
  50. $fieldInfo['name'],
  51. $fieldInfo['entity'] . '/' . $fieldInfo['origin'],
  52. $fieldInfo['bind'],
  53. null,
  54. 'left'
  55. )
  56. ->willReturnSelf();
  57. $this->subject->prepareSql($this->source, $alias, $fieldInfo);
  58. }
  59. public function testPrepareSqlWithoutBind()
  60. {
  61. $alias = 'e';
  62. $fieldInfo = [
  63. 'name' => 'is_approved',
  64. 'origin' => 'is_approved',
  65. 'type' => 'searchable',
  66. 'dataType' => 'varchar',
  67. 'entity' => 'customer',
  68. ];
  69. $this->source->expects($this->once())
  70. ->method('addFieldToSelect')
  71. ->with('is_approved', 'left');
  72. $this->subject->prepareSql($this->source, $alias, $fieldInfo);
  73. }
  74. }