NameResolverTest.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Analytics\Test\Unit\ReportXml\DB;
  7. use Magento\Analytics\ReportXml\DB\NameResolver;
  8. use Magento\Framework\TestFramework\Unit\Helper\ObjectManager as ObjectManagerHelper;
  9. class NameResolverTest extends \PHPUnit\Framework\TestCase
  10. {
  11. /**
  12. * @var NameResolver|\PHPUnit_Framework_MockObject_MockObject
  13. */
  14. private $nameResolverMock;
  15. /**
  16. * @var ObjectManagerHelper
  17. */
  18. private $objectManagerHelper;
  19. /**
  20. * @var NameResolver
  21. */
  22. private $nameResolver;
  23. /**
  24. * @return void
  25. */
  26. protected function setUp()
  27. {
  28. $this->nameResolverMock = $this->getMockBuilder(NameResolver::class)
  29. ->disableOriginalConstructor()
  30. ->setMethods(['getName'])
  31. ->getMock();
  32. $this->objectManagerHelper = new ObjectManagerHelper($this);
  33. $this->nameResolver = $this->objectManagerHelper->getObject(NameResolver::class);
  34. }
  35. public function testGetName()
  36. {
  37. $elementConfigMock = [
  38. 'name' => 'sales_order',
  39. 'alias' => 'sales',
  40. ];
  41. $this->assertSame('sales_order', $this->nameResolver->getName($elementConfigMock));
  42. }
  43. /**
  44. * @param array $elementConfig
  45. * @param string|null $elementAlias
  46. *
  47. * @dataProvider getAliasDataProvider
  48. */
  49. public function testGetAlias($elementConfig, $elementAlias)
  50. {
  51. $elementName = 'elementName';
  52. $this->nameResolverMock
  53. ->expects($this->once())
  54. ->method('getName')
  55. ->with($elementConfig)
  56. ->willReturn($elementName);
  57. $this->assertSame($elementAlias ?: $elementName, $this->nameResolverMock->getAlias($elementConfig));
  58. }
  59. /**
  60. * @return array
  61. */
  62. public function getAliasDataProvider()
  63. {
  64. return [
  65. 'ElementConfigWithAliases' => [
  66. ['alias' => 'sales', 'name' => 'sales_order'],
  67. 'sales',
  68. ],
  69. 'ElementConfigWithoutAliases' => [
  70. ['name' => 'sales_order'],
  71. null,
  72. ]
  73. ];
  74. }
  75. }