MultiselectTest.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Eav\Test\Unit\Model\Attribute\Data;
  7. class MultiselectTest extends \PHPUnit\Framework\TestCase
  8. {
  9. /**
  10. * @var \Magento\Eav\Model\Attribute\Data\Multiselect
  11. */
  12. protected $model;
  13. protected function setUp()
  14. {
  15. $timezoneMock = $this->createMock(\Magento\Framework\Stdlib\DateTime\TimezoneInterface::class);
  16. $loggerMock = $this->createMock(\Psr\Log\LoggerInterface::class);
  17. $localeResolverMock = $this->createMock(\Magento\Framework\Locale\ResolverInterface::class);
  18. $this->model = new \Magento\Eav\Model\Attribute\Data\Multiselect(
  19. $timezoneMock,
  20. $loggerMock,
  21. $localeResolverMock
  22. );
  23. }
  24. /**
  25. * @covers \Magento\Eav\Model\Attribute\Data\Multiselect::extractValue
  26. *
  27. * @param mixed $param
  28. * @param mixed $expectedResult
  29. * @dataProvider extractValueDataProvider
  30. */
  31. public function testExtractValue($param, $expectedResult)
  32. {
  33. $requestMock = $this->createMock(\Magento\Framework\App\RequestInterface::class);
  34. $attributeMock = $this->createMock(\Magento\Eav\Model\Attribute::class);
  35. $requestMock->expects($this->once())->method('getParam')->will($this->returnValue($param));
  36. $attributeMock->expects($this->once())->method('getAttributeCode')->will($this->returnValue('attributeCode'));
  37. $this->model->setAttribute($attributeMock);
  38. $this->assertEquals($expectedResult, $this->model->extractValue($requestMock));
  39. }
  40. /**
  41. * @return array
  42. */
  43. public function extractValueDataProvider()
  44. {
  45. return [
  46. [
  47. 'param' => 'param',
  48. 'expectedResult' => ['param'],
  49. ],
  50. [
  51. 'param' => false,
  52. 'expectedResult' => false
  53. ],
  54. [
  55. 'param' => ['value'],
  56. 'expectedResult' => ['value']
  57. ]
  58. ];
  59. }
  60. /**
  61. * @covers \Magento\Eav\Model\Attribute\Data\Multiselect::outputValue
  62. *
  63. * @param string $format
  64. * @param mixed $expectedResult
  65. * @dataProvider outputValueDataProvider
  66. */
  67. public function testOutputValue($format, $expectedResult)
  68. {
  69. $entityMock = $this->createMock(\Magento\Framework\Model\AbstractModel::class);
  70. $entityMock->expects($this->once())->method('getData')->will($this->returnValue('value1,value2,'));
  71. $sourceMock = $this->createMock(\Magento\Eav\Model\Entity\Attribute\Source\AbstractSource::class);
  72. $sourceMock->expects($this->any())->method('getOptionText')->will($this->returnArgument(0));
  73. $attributeMock = $this->createMock(\Magento\Eav\Model\Attribute::class);
  74. $attributeMock->expects($this->any())->method('getSource')->will($this->returnValue($sourceMock));
  75. $this->model->setEntity($entityMock);
  76. $this->model->setAttribute($attributeMock);
  77. $this->assertEquals($expectedResult, $this->model->outputValue($format));
  78. }
  79. /**
  80. * @return array
  81. */
  82. public function outputValueDataProvider()
  83. {
  84. return [
  85. [
  86. 'format' => \Magento\Eav\Model\AttributeDataFactory::OUTPUT_FORMAT_JSON,
  87. 'expectedResult' => 'value1, value2',
  88. ],
  89. [
  90. 'format' => \Magento\Eav\Model\AttributeDataFactory::OUTPUT_FORMAT_ONELINE,
  91. 'expectedResult' => 'value1, value2'
  92. ]
  93. ];
  94. }
  95. }