BuilderTest.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Elasticsearch\Test\Unit\Model\Adapter\Document;
  7. use Magento\Elasticsearch\Model\Adapter\Document\Builder;
  8. use Magento\Framework\TestFramework\Unit\Helper\ObjectManager as ObjectManagerHelper;
  9. /**
  10. * Unit test for Magento\Elasticsearch\Model\Adapter\Document\Builder
  11. */
  12. class BuilderTest extends \PHPUnit\Framework\TestCase
  13. {
  14. /**
  15. * @var Builder
  16. */
  17. protected $builder;
  18. /**
  19. * {@inheritdoc}
  20. */
  21. protected function setUp()
  22. {
  23. $objectManager = new ObjectManagerHelper($this);
  24. $this->builder = $objectManager->getObject(
  25. \Magento\Elasticsearch\Model\Adapter\Document\Builder::class
  26. );
  27. }
  28. /**
  29. * @return void
  30. */
  31. public function testBuildWithSimpleField()
  32. {
  33. $document = [ 'fieldName' => 'fieldValue'];
  34. $field = 'fieldName';
  35. $value = 'fieldValue';
  36. $this->builder->addField($field, $value);
  37. $result = $this->builder->build();
  38. $this->assertEquals($document, $result);
  39. }
  40. /**
  41. * @return void
  42. */
  43. public function testBuildWithTwoSimpleFields()
  44. {
  45. $document = [
  46. 'fieldNameOne' => 'fieldValueOne',
  47. 'fieldNameTwo' => 'fieldValueTwo'
  48. ];
  49. $fieldOne = 'fieldNameOne';
  50. $valueOne = 'fieldValueOne';
  51. $fieldTwo = 'fieldNameTwo';
  52. $valueTwo = 'fieldValueTwo';
  53. $this->builder->addField($fieldOne, $valueOne);
  54. $this->builder->addField($fieldTwo, $valueTwo);
  55. $result = $this->builder->build();
  56. $this->assertEquals($document, $result);
  57. }
  58. /**
  59. * @return void
  60. */
  61. public function testBuildWithSimpleFieldAndFieldsArray()
  62. {
  63. $document = [
  64. 'fieldNameOne' => 'fieldValueOne',
  65. 'fieldNameTwo' => 'changedFieldValueTwo',
  66. 'fieldThree' => 'fieldValueThree',
  67. 'fieldFour' => 'fieldValueFour'
  68. ];
  69. $this->builder->addField('fieldNameOne', 'fieldValueOne');
  70. $this->builder->addField('fieldNameTwo', 'fieldValueTwo');
  71. $this->builder->addFields(
  72. [
  73. 'fieldThree' => 'fieldValueThree',
  74. 'fieldNameTwo' => 'changedFieldValueTwo',
  75. 'fieldFour' => 'fieldValueFour',
  76. ]
  77. );
  78. $result = $this->builder->build();
  79. $this->assertEquals($document, $result);
  80. }
  81. /**
  82. * @return void
  83. */
  84. public function testBuildWithArrayField()
  85. {
  86. $document = [
  87. 'nameOfField' => [
  88. 'value1','value2'
  89. ]
  90. ];
  91. $field = 'nameOfField';
  92. $values = ['value1', 'value2'];
  93. $this->builder->addField($field, $values);
  94. $result = $this->builder->build();
  95. $this->assertEquals($document, $result);
  96. }
  97. /**
  98. * @return void
  99. */
  100. public function testBuildWithEmptyArrayField()
  101. {
  102. $document = [
  103. 'nameOfField' => []
  104. ];
  105. $field = 'nameOfField';
  106. $values = [];
  107. $this->builder->addField($field, $values);
  108. $result = $this->builder->build();
  109. $this->assertEquals($document, $result);
  110. }
  111. /**
  112. * @return void
  113. */
  114. public function testBuildTwoDocuments()
  115. {
  116. $documentOne = [
  117. 'docOneFieldOne' => 'docOneValueOne',
  118. 'docOneFieldTwo' => 'docOneValueTwo'
  119. ];
  120. $documentTwo = [
  121. 'docTwoFieldOne' => 'docTwoValueOne',
  122. 'docTwoFieldTwo' => 'docTwoValueTwo'
  123. ];
  124. $docOneFieldOne = 'docOneFieldOne';
  125. $docOneValueOne = 'docOneValueOne';
  126. $docOneFieldTwo = 'docOneFieldTwo';
  127. $docOneValueTwo = 'docOneValueTwo';
  128. $docTwoFieldOne = 'docTwoFieldOne';
  129. $docTwoValueOne = 'docTwoValueOne';
  130. $docTwoFieldTwo = 'docTwoFieldTwo';
  131. $docTwoValueTwo = 'docTwoValueTwo';
  132. $this->builder->addField($docOneFieldOne, $docOneValueOne);
  133. $this->builder->addField($docOneFieldTwo, $docOneValueTwo);
  134. $resultOne = $this->builder->build();
  135. $this->builder->addField($docTwoFieldOne, $docTwoValueOne);
  136. $this->builder->addField($docTwoFieldTwo, $docTwoValueTwo);
  137. $resultTwo = $this->builder->build();
  138. $this->assertEquals($documentOne, $resultOne);
  139. $this->assertEquals($documentTwo, $resultTwo);
  140. }
  141. }