MapTest.php 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Migration\Reader;
  7. /**
  8. * Class MapTest
  9. */
  10. class MapTest extends \PHPUnit\Framework\TestCase
  11. {
  12. /**
  13. * @var Map
  14. */
  15. protected $map;
  16. /**
  17. * @return void
  18. */
  19. public function setUp()
  20. {
  21. $validationState = $this->getMockBuilder(\Magento\Framework\App\Arguments\ValidationState::class)
  22. ->disableOriginalConstructor()
  23. ->setMethods(['isValidationRequired'])
  24. ->getMock();
  25. $validationState->expects($this->any())->method('isValidationRequired')->willReturn(true);
  26. $this->map = new Map($validationState, 'tests/unit/testsuite/Migration/_files/map.xml');
  27. }
  28. /**
  29. * @return void
  30. */
  31. public function testHasDocument()
  32. {
  33. $this->assertTrue($this->map->isDocumentMapped('source-document', MapInterface::TYPE_SOURCE));
  34. $this->assertFalse($this->map->isDocumentMapped('dest-document-ignored', MapInterface::TYPE_DEST));
  35. $this->assertFalse($this->map->isDocumentMapped('non-existent-document', MapInterface::TYPE_SOURCE));
  36. }
  37. /**
  38. * @return void
  39. */
  40. public function testHasField()
  41. {
  42. $this->assertTrue($this->map->isFieldMapped('source-document', 'field2', MapInterface::TYPE_SOURCE));
  43. $this->assertFalse($this->map->isFieldMapped('dest-document', 'field-new', MapInterface::TYPE_DEST));
  44. $this->assertFalse(
  45. $this->map->isFieldMapped('document1', 'field-non-existent', MapInterface::TYPE_SOURCE)
  46. );
  47. $this->assertFalse($this->map->isFieldMapped('document1', 'field-non-existent', MapInterface::TYPE_DEST));
  48. }
  49. /**
  50. * @return void
  51. */
  52. public function testGetDocumentMap()
  53. {
  54. $this->assertFalse($this->map->getDocumentMap('source-document-ignored', MapInterface::TYPE_SOURCE));
  55. $this->assertEquals('dest-document', $this->map->getDocumentMap(
  56. 'source-document',
  57. MapInterface::TYPE_SOURCE
  58. ));
  59. $this->assertEquals(
  60. 'document-non-existent',
  61. $this->map->getDocumentMap('document-non-existent', MapInterface::TYPE_SOURCE)
  62. );
  63. $this->assertEquals(
  64. 'document-non-existent',
  65. $this->map->getDocumentMap('document-non-existent', MapInterface::TYPE_DEST)
  66. );
  67. }
  68. /**
  69. * @throws \Migration\Exception
  70. * @return void
  71. */
  72. public function testGetFieldMap()
  73. {
  74. $this->assertFalse($this->map->getFieldMap('source-document', 'field1', MapInterface::TYPE_SOURCE));
  75. $this->assertEquals(
  76. 'not-mapped-field',
  77. $this->map->getFieldMap('source-document', 'not-mapped-field', MapInterface::TYPE_SOURCE)
  78. );
  79. $this->assertEquals(
  80. 'field2',
  81. $this->map->getFieldMap('source-document', 'field2', MapInterface::TYPE_SOURCE)
  82. );
  83. // Second run to check cached value
  84. $this->assertEquals(
  85. 'field2',
  86. $this->map->getFieldMap('source-document', 'field2', MapInterface::TYPE_SOURCE)
  87. );
  88. }
  89. /**
  90. * @throws \Migration\Exception
  91. * @return void
  92. */
  93. public function testGetFieldMapWithException()
  94. {
  95. $this->expectException('Exception');
  96. $this->expectExceptionMessage('Document has ambiguous configuration: source-document-ignored');
  97. $this->map->getFieldMap('source-document-ignored', 'field3', MapInterface::TYPE_SOURCE);
  98. }
  99. /**
  100. * @throws \Migration\Exception
  101. * @return void
  102. */
  103. public function testGetFieldMapWithException2()
  104. {
  105. $this->expectException('Exception');
  106. $this->expectExceptionMessage('Document has ambiguous configuration: dest-document-ignored');
  107. $this->map->getFieldMap('source-document5', 'field3', MapInterface::TYPE_SOURCE);
  108. }
  109. /**
  110. * @throws \Migration\Exception
  111. * @return void
  112. */
  113. public function testGetFieldMapWithException3()
  114. {
  115. $this->expectException('Exception');
  116. $this->expectExceptionMessage('Field has ambiguous configuration: dest-document5.field5');
  117. $this->map->getFieldMap('source-document5', 'field4', MapInterface::TYPE_SOURCE);
  118. }
  119. /**
  120. * @return void
  121. */
  122. public function testGetHandlerConfigs()
  123. {
  124. $handlerConfig = [
  125. [
  126. 'class' => \Migration\Handler\SetValue::class,
  127. 'params' => [
  128. 'default_value' => 10
  129. ]
  130. ]
  131. ];
  132. $this->assertEquals(
  133. $handlerConfig,
  134. $this->map->getHandlerConfigs('source-document', 'field-with-handler', MapInterface::TYPE_SOURCE)
  135. );
  136. $this->assertEquals([], $this->map->getHandlerConfigs(
  137. 'source-document',
  138. 'some-field',
  139. MapInterface::TYPE_SOURCE
  140. ));
  141. }
  142. /**
  143. * @return void
  144. */
  145. public function testIsDocumentIgnoredSource()
  146. {
  147. $this->assertTrue($this->map->isDocumentIgnored('source-document-ignored', MapInterface::TYPE_SOURCE));
  148. $this->assertTrue($this->map->isDocumentIgnored('source-document-ignored-wc', MapInterface::TYPE_SOURCE));
  149. // Second run to check cached value
  150. $this->assertTrue($this->map->isDocumentIgnored('source-document-ignored', MapInterface::TYPE_SOURCE));
  151. }
  152. /**
  153. * @return void
  154. */
  155. public function testIsDocumentIgnoredDest()
  156. {
  157. $this->assertTrue($this->map->isDocumentIgnored('dest-document-ignored', MapInterface::TYPE_DEST));
  158. $this->assertTrue($this->map->isDocumentIgnored('dest-document-ignored1', MapInterface::TYPE_DEST));
  159. // Second run to check cached value
  160. $this->assertTrue($this->map->isDocumentIgnored('dest-document-ignored', MapInterface::TYPE_DEST));
  161. }
  162. /**
  163. * @return void
  164. */
  165. public function testIsFieldDataTypeIgnored()
  166. {
  167. $this->assertTrue($this->map->isFieldDataTypeIgnored('dest-document5', 'field6', MapInterface::TYPE_SOURCE));
  168. $this->assertTrue($this->map->isFieldDataTypeIgnored('dest-document5', 'field6', MapInterface::TYPE_DEST));
  169. }
  170. }