Skip to content

Commit 360364f

Browse files
committed
MAGETWO-33727: Wrong parameter for getting base url for 'media' path in "Image" form element. #1025
- Import UrlInterface to short line to under 120 characters - Add integration test to catch regression - Modify unit test to catch regression
1 parent 59c1d9d commit 360364f

File tree

3 files changed

+56
-7
lines changed
  • dev/tests
    • integration/testsuite/Magento/Framework/Data/Form/Element
    • unit/testsuite/Magento/Framework/Data/Form/Element
  • lib/internal/Magento/Framework/Data/Form/Element

3 files changed

+56
-7
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<?php
2+
/**
3+
* Copyright © 2015 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
/**
7+
* Tests for \Magento\Framework\Data\Form\Element\Image
8+
*/
9+
namespace Magento\Framework\Data\Form\Element;
10+
11+
class ImageTest extends \PHPUnit_Framework_TestCase
12+
{
13+
/**
14+
* @var \Magento\Framework\Data\Form\Element\Image
15+
*/
16+
protected $imageElement;
17+
18+
protected function setUp()
19+
{
20+
$objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
21+
/** @var $elementFactory \Magento\Framework\Data\Form\ElementFactory */
22+
$elementFactory = $objectManager->create('Magento\Framework\Data\Form\ElementFactory');
23+
$this->imageElement = $elementFactory->create('Magento\Framework\Data\Form\Element\Image', []);
24+
$form = $objectManager->create('Magento\Framework\Data\Form');
25+
$this->imageElement->setForm($form);
26+
}
27+
28+
public function testGetElementHtml()
29+
{
30+
$filePath = 'some/path/to/file.jpg';
31+
$this->imageElement->setValue($filePath);
32+
$html = $this->imageElement->getElementHtml();
33+
34+
$this->assertContains('media/' . $filePath, $html);
35+
}
36+
}

dev/tests/unit/testsuite/Magento/Framework/Data/Form/Element/ImageTest.php

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,20 @@
99
*/
1010
namespace Magento\Framework\Data\Form\Element;
1111

12+
use Magento\Framework\UrlInterface;
13+
1214
class ImageTest extends \PHPUnit_Framework_TestCase
1315
{
1416
/**
1517
* @var \PHPUnit_Framework_MockObject_MockObject
1618
*/
1719
protected $_objectManagerMock;
1820

21+
/**
22+
* @var \PHPUnit_Framework_MockObject_MockObject
23+
*/
24+
protected $urlBuilder;
25+
1926
/**
2027
* @var \Magento\Framework\Data\Form\Element\Image
2128
*/
@@ -32,12 +39,12 @@ protected function setUp()
3239
false
3340
);
3441
$escaperMock = $this->getMock('\Magento\Framework\Escaper', [], [], '', false);
35-
$urlBuilderMock = $this->getMock('\Magento\Framework\Url', [], [], '', false);
42+
$this->urlBuilder = $this->getMock('\Magento\Framework\Url', [], [], '', false);
3643
$this->_image = new \Magento\Framework\Data\Form\Element\Image(
3744
$factoryMock,
3845
$collectionFactoryMock,
3946
$escaperMock,
40-
$urlBuilderMock
47+
$this->urlBuilder
4148
);
4249
$formMock = new \Magento\Framework\Object();
4350
$formMock->getHtmlIdPrefix('id_prefix');
@@ -81,12 +88,16 @@ public function testGetElementHtmlWithoutValue()
8188
public function testGetElementHtmlWithValue()
8289
{
8390
$this->_image->setValue('test_value');
91+
$this->urlBuilder->expects($this->once())
92+
->method('getBaseUrl')
93+
->with(['_type' => UrlInterface::URL_TYPE_MEDIA])
94+
->willReturn('http://localhost/media/');
8495
$html = $this->_image->getElementHtml();
8596
$this->assertContains('class="input-file"', $html);
8697
$this->assertContains('<input', $html);
8798
$this->assertContains('type="file"', $html);
8899
$this->assertContains('value="test_value"', $html);
89-
$this->assertContains('<a href="test_value" onclick="imagePreview(\'_image\'); return false;"', $html);
100+
$this->assertContains('<a href="http://localhost/media/test_value" onclick="imagePreview(\'_image\'); return false;"', $html);
90101
$this->assertContains('<input type="checkbox"', $html);
91102
}
92103
}

lib/internal/Magento/Framework/Data/Form/Element/Image.php

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,25 +11,27 @@
1111
*/
1212
namespace Magento\Framework\Data\Form\Element;
1313

14+
use Magento\Framework\UrlInterface;
15+
1416
class Image extends \Magento\Framework\Data\Form\Element\AbstractElement
1517
{
1618
/**
17-
* @var \Magento\Framework\UrlInterface
19+
* @var UrlInterface
1820
*/
1921
protected $_urlBuilder;
2022

2123
/**
2224
* @param \Magento\Framework\Data\Form\Element\Factory $factoryElement
2325
* @param \Magento\Framework\Data\Form\Element\CollectionFactory $factoryCollection
2426
* @param \Magento\Framework\Escaper $escaper
25-
* @param \Magento\Framework\UrlInterface $urlBuilder
27+
* @param UrlInterface $urlBuilder
2628
* @param array $data
2729
*/
2830
public function __construct(
2931
\Magento\Framework\Data\Form\Element\Factory $factoryElement,
3032
\Magento\Framework\Data\Form\Element\CollectionFactory $factoryCollection,
3133
\Magento\Framework\Escaper $escaper,
32-
\Magento\Framework\UrlInterface $urlBuilder,
34+
UrlInterface $urlBuilder,
3335
$data = []
3436
) {
3537
$this->_urlBuilder = $urlBuilder;
@@ -50,7 +52,7 @@ public function getElementHtml()
5052
$url = $this->_getUrl();
5153

5254
if (!preg_match("/^http\:\/\/|https\:\/\//", $url)) {
53-
$url = $this->_urlBuilder->getBaseUrl(['_type' => \Magento\Framework\UrlInterface::URL_TYPE_MEDIA]) . $url;
55+
$url = $this->_urlBuilder->getBaseUrl(['_type' => UrlInterface::URL_TYPE_MEDIA]) . $url;
5456
}
5557

5658
$html = '<a href="' .

0 commit comments

Comments
 (0)