BinderTest.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\Search\Test\Unit\Request;
  7. use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
  8. class BinderTest extends \PHPUnit\Framework\TestCase
  9. {
  10. /**
  11. * @var \Magento\Framework\Search\Request\Binder
  12. */
  13. private $binder;
  14. /**
  15. * SetUP method
  16. */
  17. protected function setUp()
  18. {
  19. $helper = new ObjectManager($this);
  20. $this->binder = $helper->getObject(\Magento\Framework\Search\Request\Binder::class);
  21. }
  22. /**
  23. * Test for method "build"
  24. */
  25. public function testBind()
  26. {
  27. $requestData = [
  28. 'dimensions' => ['scope' => ['value' => '$sss$']],
  29. 'queries' => [
  30. 'query' => ['value' => '$query$'],
  31. 'empty_query' => ['value' => '$empty_query$'],
  32. 'space_query' => ['value' => '$space_query$'],
  33. 'zero_value_query' => ['name' => 'zero_value', 'type' => 'filteredQuery'],
  34. ],
  35. 'filters' => [
  36. 'filter' => ['from' => '$from$', 'to' => '$to$', 'value' => '$filter$'],
  37. 'zero_value_filter' => [
  38. 'type' => 'termFilter',
  39. 'name' => 'zero_value',
  40. 'field' => 'zero_value',
  41. 'value' => '$zero_value$',
  42. ],
  43. ],
  44. 'aggregations' => ['price' => ['method' => '$method$']],
  45. 'from' => 0,
  46. 'size' => 15,
  47. ];
  48. $bindData = [
  49. 'dimensions' => ['scope' => 'default'],
  50. 'placeholder' => [
  51. '$query$' => 'match_query',
  52. '$empty_query$' => ' ',
  53. '$space_query$' => ' value',
  54. '$from$' => 'filter_from',
  55. '$to$' => 'filter_to',
  56. '$filter$' => 'filter_value',
  57. '$method$' => 'filter_method',
  58. '$zero_value$' => '0',
  59. ],
  60. 'from' => 1,
  61. 'size' => 10,
  62. ];
  63. $expectedResult = [
  64. 'dimensions' => ['scope' => ['value' => 'default']],
  65. 'queries' => [
  66. 'query' => ['value' => 'match_query', 'is_bind' => true],
  67. 'empty_query' => ['value' => '$empty_query$'],
  68. 'space_query' => ['value' => 'value', 'is_bind' => true],
  69. 'zero_value_query' => ['name' => 'zero_value', 'type' => 'filteredQuery'],
  70. ],
  71. 'filters' => [
  72. 'filter' => [
  73. 'from' => 'filter_from',
  74. 'to' => 'filter_to',
  75. 'value' => 'filter_value',
  76. 'is_bind' => true
  77. ],
  78. 'zero_value_filter' => [
  79. 'type' => 'termFilter',
  80. 'name' => 'zero_value',
  81. 'field' => 'zero_value',
  82. 'value' => '0',
  83. 'is_bind' => true,
  84. ]
  85. ],
  86. 'aggregations' => ['price' => ['method' => 'filter_method', 'is_bind' => true]],
  87. 'from' => 1,
  88. 'size' => 10,
  89. ];
  90. $result = $this->binder->bind($requestData, $bindData);
  91. $this->assertEquals($expectedResult, $result);
  92. }
  93. }