diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Category/Save.php b/app/code/Magento/Catalog/Controller/Adminhtml/Category/Save.php
index 492bf1c021cf04c071528821f2e966f506e6a17b..b8fe7df8189de416ae51edffb5ea914c4f035974 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Category/Save.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Category/Save.php
@@ -6,7 +6,7 @@
 namespace Magento\Catalog\Controller\Adminhtml\Category;
 
 use Magento\Store\Model\StoreManagerInterface;
-use \Magento\Catalog\Api\Data\CategoryAttributeInterface;
+use Magento\Catalog\Api\Data\CategoryAttributeInterface;
 
 /**
  * Class Save
@@ -70,14 +70,15 @@ class Save extends \Magento\Catalog\Controller\Adminhtml\Category
         \Magento\Framework\Controller\Result\JsonFactory $resultJsonFactory,
         \Magento\Framework\View\LayoutFactory $layoutFactory,
         StoreManagerInterface $storeManager,
-        \Magento\Eav\Model\Config $eavConfig
+        \Magento\Eav\Model\Config $eavConfig = null
     ) {
         parent::__construct($context);
         $this->resultRawFactory = $resultRawFactory;
         $this->resultJsonFactory = $resultJsonFactory;
         $this->layoutFactory = $layoutFactory;
         $this->storeManager = $storeManager;
-        $this->eavConfig = $eavConfig;
+        $this->eavConfig = $eavConfig
+            ?: \Magento\Framework\App\ObjectManager::getInstance()->get(\Magento\Eav\Model\Config::class);
     }
 
     /**
@@ -233,9 +234,10 @@ class Save extends \Magento\Catalog\Controller\Adminhtml\Category
     }
 
     /**
-     * @param array $data Category data
-     * @return mixed
-     * @throws \Magento\Framework\Exception\LocalizedException
+     * Sets image attribute data to false if image was removed
+     *
+     * @param array $data
+     * @return array
      */
     public function imagePreprocessing(array $data)
     {
diff --git a/app/code/Magento/Catalog/Model/Category/Attribute/Backend/Image.php b/app/code/Magento/Catalog/Model/Category/Attribute/Backend/Image.php
index efd3a4afb4a60d72490698b3c9453cec3609b4e7..4d5a811211bf75b81a1e983f740e43971fce604c 100644
--- a/app/code/Magento/Catalog/Model/Category/Attribute/Backend/Image.php
+++ b/app/code/Magento/Catalog/Model/Category/Attribute/Backend/Image.php
@@ -48,34 +48,29 @@ class Image extends \Magento\Eav\Model\Entity\Attribute\Backend\AbstractBackend
      */
     private $imageUploader;
 
-    /**
-     * @var \Magento\Framework\ObjectManagerInterface
-     */
-    private $objectManager;
-
     /**
      * @param \Psr\Log\LoggerInterface $logger
      * @param \Magento\Framework\Filesystem $filesystem
      * @param \Magento\MediaStorage\Model\File\UploaderFactory $fileUploaderFactory
-     * @param \Magento\Framework\ObjectManagerInterface $objectManager
      */
     public function __construct(
         \Psr\Log\LoggerInterface $logger,
         \Magento\Framework\Filesystem $filesystem,
-        \Magento\MediaStorage\Model\File\UploaderFactory $fileUploaderFactory,
-        \Magento\Framework\ObjectManagerInterface $objectManager
+        \Magento\MediaStorage\Model\File\UploaderFactory $fileUploaderFactory
     ) {
         $this->_filesystem = $filesystem;
         $this->_fileUploaderFactory = $fileUploaderFactory;
         $this->_logger = $logger;
-        $this->objectManager = $objectManager;
     }
 
     /**
+     * Gets image name from $value array.
+     * Will return empty string in a case when $value is not an array
+     *
      * @param array $value Attribute value
      * @return string
      */
-    protected function getUploadedImageName($value)
+    private function getUploadedImageName($value)
     {
         if (is_array($value) && isset($value[0]['name'])) {
             return $value[0]['name'];
@@ -86,6 +81,7 @@ class Image extends \Magento\Eav\Model\Entity\Attribute\Backend\AbstractBackend
 
     /**
      * Avoiding saving potential upload data to DB
+     * Will set empty image attribute value if image was not uploaded
      *
      * @param \Magento\Framework\DataObject $object
      * @return $this
@@ -113,7 +109,8 @@ class Image extends \Magento\Eav\Model\Entity\Attribute\Backend\AbstractBackend
     private function getImageUploader()
     {
         if ($this->imageUploader === null) {
-            $this->imageUploader = $this->objectManager->get(\Magento\Catalog\CategoryImageUpload::class);
+            $this->imageUploader = \Magento\Framework\App\ObjectManager::getInstance()
+                ->get(\Magento\Catalog\CategoryImageUpload::class);
         }
 
         return $this->imageUploader;
diff --git a/app/code/Magento/Catalog/Model/Category/DataProvider.php b/app/code/Magento/Catalog/Model/Category/DataProvider.php
index 8ea60d54ec5564e7cea09c61ff7546283d3183de..aefd31e21ad62f8469837a801581170581555c6a 100644
--- a/app/code/Magento/Catalog/Model/Category/DataProvider.php
+++ b/app/code/Magento/Catalog/Model/Category/DataProvider.php
@@ -370,11 +370,13 @@ class DataProvider extends \Magento\Ui\DataProvider\AbstractDataProvider
     }
 
     /**
+     * Converts category image data to acceptable for rendering format
+     *
      * @param \Magento\Catalog\Model\Category $category
      * @param array $categoryData
      * @return array
      */
-    protected function convertValues($category, $categoryData)
+    private function convertValues($category, $categoryData)
     {
         foreach ($category->getAttributes() as $attributeCode => $attribute) {
             if (!isset($categoryData[$attributeCode])) {
diff --git a/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Category/Image/UploadTest.php b/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Category/Image/UploadTest.php
index 40c40a17b8e52ec0cb0115db65bc11d1f0e9ae51..e49da3972e0a0c998d3511c524c3312be42afaa5 100644
--- a/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Category/Image/UploadTest.php
+++ b/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Category/Image/UploadTest.php
@@ -5,27 +5,26 @@
  */
 namespace Magento\Catalog\Test\Unit\Controller\Adminhtml\Category\Image;
 
-use \Magento\Catalog\Controller\Adminhtml\Category\Image\Upload as Model;
-use \Magento\Framework\App\Request\Http as Request;
-use \Magento\Catalog\Model\ImageUploader;
-use \Magento\Framework\Controller\ResultFactory;
-use \Magento\Framework\DataObject;
-use \Magento\Backend\App\Action\Context;
+use Magento\Catalog\Controller\Adminhtml\Category\Image\Upload as Model;
+use Magento\Framework\App\Request\Http as Request;
+use Magento\Catalog\Model\ImageUploader;
+use Magento\Framework\Controller\ResultFactory;
+use Magento\Framework\DataObject;
+use Magento\Backend\App\Action\Context;
 
 /**
  * Class UploadTest
- * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
  */
 class UploadTest extends \PHPUnit_Framework_TestCase
 {
-    protected $objectManager;
+    private $objectManager;
 
     protected function setUp()
     {
         $this->objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
     }
 
-    public function uploadedImageNameProvider()
+    public function executeDataProvider()
     {
         return [
             ['image1', 'image1'],
@@ -35,12 +34,12 @@ class UploadTest extends \PHPUnit_Framework_TestCase
     }
 
     /**
-     * @param $name
-     * @param $savedName
+     * @param string $name
+     * @param string $savedName
      *
-     * @dataProvider uploadedImageNameProvider
+     * @dataProvider executeDataProvider
      */
-    public function testExecuteShouldSaveUploadedImageWithSpecifiedNameToTmpFolder($name, $savedName)
+    public function testExecute($name, $savedName)
     {
         $request = $this->objectManager->getObject(Request::class);
 
diff --git a/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Category/SaveTest.php b/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Category/SaveTest.php
index 9ef502b9640cac5d1c17606244f61015e0c2bbd0..58557e25d970b442fe1bdeaac494d7b215c64472 100644
--- a/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Category/SaveTest.php
+++ b/app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Category/SaveTest.php
@@ -16,67 +16,67 @@ class SaveTest extends \PHPUnit_Framework_TestCase
     /**
      * @var \Magento\Backend\Model\View\Result\RedirectFactory|\PHPUnit_Framework_MockObject_MockObject
      */
-    protected $resultRedirectFactoryMock;
+    private $resultRedirectFactoryMock;
 
     /**
      * @var \Magento\Framework\Controller\Result\RawFactory|\PHPUnit_Framework_MockObject_MockObject
      */
-    protected $resultRawFactoryMock;
+    private $resultRawFactoryMock;
 
     /**
      * @var \Magento\Framework\Controller\Result\JsonFactory|\PHPUnit_Framework_MockObject_MockObject
      */
-    protected $resultJsonFactoryMock;
+    private $resultJsonFactoryMock;
 
     /**
      * @var \Magento\Framework\View\LayoutFactory|\PHPUnit_Framework_MockObject_MockObject
      */
-    protected $layoutFactoryMock;
+    private $layoutFactoryMock;
 
     /**
      * @var \Magento\Backend\App\Action\Context|\PHPUnit_Framework_MockObject_MockObject
      */
-    protected $contextMock;
+    private $contextMock;
 
     /**
      * @var \Magento\Framework\View\Page\Title|\PHPUnit_Framework_MockObject_MockObject
      */
-    protected $titleMock;
+    private $titleMock;
 
     /**
      * @var \Magento\Framework\App\RequestInterface|\PHPUnit_Framework_MockObject_MockObject
      */
-    protected $requestMock;
+    private $requestMock;
 
     /**
      * @var \Magento\Framework\ObjectManagerInterface|\PHPUnit_Framework_MockObject_MockObject
      */
-    protected $objectManagerMock;
+    private $objectManagerMock;
 
     /**
      * @var \Magento\Framework\Event\ManagerInterface|\PHPUnit_Framework_MockObject_MockObject
      */
-    protected $eventManagerMock;
+    private $eventManagerMock;
 
     /**
      * @var \Magento\Framework\App\ResponseInterface|\PHPUnit_Framework_MockObject_MockObject
      */
-    protected $responseMock;
+    private $responseMock;
 
     /**
      * @var \Magento\Framework\Message\ManagerInterface|\PHPUnit_Framework_MockObject_MockObject
      */
-    protected $messageManagerMock;
+    private $messageManagerMock;
 
     /**
      * @var \Magento\Framework\TestFramework\Unit\Helper\ObjectManager
      */
-    protected $objectManager;
+    private $objectManager;
 
     /**
      * @var \Magento\Catalog\Controller\Adminhtml\Category\Save
      */
-    protected $save;
+    private $save;
 
     /**
      * Set up
@@ -581,7 +581,10 @@ class SaveTest extends \PHPUnit_Framework_TestCase
         ];
     }
 
-    public function attributeValueDataProvider()
+    /**
+     * @return array
+     */
+    public function imagePreprocessingDataProvider()
     {
         return [
             [['attribute1' => null, 'attribute2' => 123]],
@@ -590,11 +593,11 @@ class SaveTest extends \PHPUnit_Framework_TestCase
     }
 
     /**
-     * @dataProvider attributeValueDataProvider
+     * @dataProvider imagePreprocessingDataProvider
      *
-     * @param $data
+     * @param array $data
      */
-    public function testImagePreprocessingShouldSetAttributesWithImageBackendToFalse($data)
+    public function testImagePreprocessingWithoutValue($data)
     {
         $eavConfig = $this->getMock(\Magento\Eav\Model\Config::class, ['getEntityType'], [], '', false);
 
@@ -630,7 +633,7 @@ class SaveTest extends \PHPUnit_Framework_TestCase
         ], $result);
     }
 
-    public function testImagePreprocessingShouldNotSetValueToFalseWhenValueSet()
+    public function testImagePreprocessingWithValue()
     {
         $eavConfig = $this->getMock(\Magento\Eav\Model\Config::class, ['getEntityType'], [], '', false);
 
diff --git a/app/code/Magento/Catalog/Test/Unit/Model/Category/Attribute/Backend/ImageTest.php b/app/code/Magento/Catalog/Test/Unit/Model/Category/Attribute/Backend/ImageTest.php
index 2bd41e6bca343fc399a11e620cdead60cc47c2ee..aa78fea89668773a2864741526d07c3e76aae1d1 100644
--- a/app/code/Magento/Catalog/Test/Unit/Model/Category/Attribute/Backend/ImageTest.php
+++ b/app/code/Magento/Catalog/Test/Unit/Model/Category/Attribute/Backend/ImageTest.php
@@ -5,29 +5,27 @@
  */
 namespace Magento\Catalog\Test\Unit\Model\Category\Attribute\Backend;
 
-use \Magento\Catalog\Model\Category\Attribute\Backend\Image as Model;
-
 class ImageTest extends \PHPUnit_Framework_TestCase
 {
     /**
      * @var \Magento\Eav\Model\Entity\Attribute\AbstractAttribute
      */
-    protected $attribute;
+    private $attribute;
 
     /**
      * @var \Magento\Framework\TestFramework\Unit\Helper\ObjectManager
      */
-    protected $objectManager;
+    private $objectManager;
 
     /**
      * @var \Magento\Catalog\Model\ImageUploader
      */
-    protected $imageUploader;
+    private $imageUploader;
 
     /**
      * @var \Psr\Log\LoggerInterface
      */
-    protected $logger;
+    private $logger;
 
     protected function setUp()
     {
@@ -66,7 +64,10 @@ class ImageTest extends \PHPUnit_Framework_TestCase
         );
     }
 
-    public function deletionValueProvider()
+    /**
+     * @return array
+     */
+    public function deletedValueDataProvider()
     {
         return [
             [false],
@@ -75,13 +76,13 @@ class ImageTest extends \PHPUnit_Framework_TestCase
     }
 
     /**
-     * @dataProvider deletionValueProvider
+     * @dataProvider deletedValueDataProvider
      *
-     * @param $value
+     * @param array $value
      */
-    public function testBeforeSaveShouldSetAttributeValueToBlankWhenImageValueRequiresDeletion($value)
+    public function testBeforeSaveValueDeletion($value)
     {
-        $model = $this->objectManager->getObject(Model::class);
+        $model = $this->objectManager->getObject(\Magento\Catalog\Model\Category\Attribute\Backend\Image::class);
         $model->setAttribute($this->attribute);
 
         $object = new \Magento\Framework\DataObject([
@@ -93,7 +94,10 @@ class ImageTest extends \PHPUnit_Framework_TestCase
         $this->assertEquals('', $object->getTestAttribute());
     }
 
-    public function invalidValueProvider()
+    /**
+     * @return array
+     */
+    public function invalidValueDataProvider()
     {
         $closure = function () {
             return false;
@@ -109,13 +113,13 @@ class ImageTest extends \PHPUnit_Framework_TestCase
     }
 
     /**
-     * @dataProvider invalidValueProvider
+     * @dataProvider invalidValueDataProvider
      *
-     * @param $value
+     * @param array $value
      */
-    public function testBeforeSaveShouldSetAttributeValueToBlankWhenImageValueInvalid($value)
+    public function testBeforeSaveValueInvalid($value)
     {
-        $model = $this->objectManager->getObject(Model::class);
+        $model = $this->objectManager->getObject(\Magento\Catalog\Model\Category\Attribute\Backend\Image::class);
         $model->setAttribute($this->attribute);
 
         $object = new \Magento\Framework\DataObject([
@@ -127,9 +131,9 @@ class ImageTest extends \PHPUnit_Framework_TestCase
         $this->assertEquals('', $object->getTestAttribute());
     }
 
-    public function testBeforeSaveShouldSetAttributeValueToUploadedImageName()
+    public function testBeforeSaveAttributeFileName()
     {
-        $model = $this->objectManager->getObject(Model::class);
+        $model = $this->objectManager->getObject(\Magento\Catalog\Model\Category\Attribute\Backend\Image::class);
         $model->setAttribute($this->attribute);
 
         $object = new \Magento\Framework\DataObject([
@@ -143,27 +147,27 @@ class ImageTest extends \PHPUnit_Framework_TestCase
         $this->assertEquals('test123.jpg', $object->getTestAttribute());
     }
 
-    public function testBeforeSaveShouldSetAttributeUploadInformationToTemporaryAttribute()
+    public function testBeforeSaveTemporaryAttribute()
     {
-        $model = $this->objectManager->getObject(Model::class);
+        $model = $this->objectManager->getObject(\Magento\Catalog\Model\Category\Attribute\Backend\Image::class);
         $model->setAttribute($this->attribute);
 
         $object = new \Magento\Framework\DataObject([
             'test_attribute' => [
-                ['name' => 'test123.jpg', 'tmp_name' => 'abc123', 'url' => 'http://www.test.com/test123.jpg']
+                ['name' => 'test123.jpg', 'tmp_name' => 'abc123', 'url' => 'http://www.example.com/test123.jpg']
             ]
         ]);
 
         $model->beforeSave($object);
 
         $this->assertEquals([
-            ['name' => 'test123.jpg', 'tmp_name' => 'abc123', 'url' => 'http://www.test.com/test123.jpg']
+            ['name' => 'test123.jpg', 'tmp_name' => 'abc123', 'url' => 'http://www.example.com/test123.jpg']
         ], $object->getData('_additional_data_test_attribute'));
     }
 
-    public function testBeforeSaveShouldNotModifyAttributeValueWhenStringValue()
+    public function testBeforeSaveAttributeStringValue()
     {
-        $model = $this->objectManager->getObject(Model::class);
+        $model = $this->objectManager->getObject(\Magento\Catalog\Model\Category\Attribute\Backend\Image::class);
         $model->setAttribute($this->attribute);
 
         $object = new \Magento\Framework\DataObject([
@@ -173,23 +177,13 @@ class ImageTest extends \PHPUnit_Framework_TestCase
         $model->beforeSave($object);
 
         $this->assertEquals('test123.jpg', $object->getTestAttribute());
-    }
-
-    public function testBeforeSaveShouldNotSetAdditionalDataWhenStringValue()
-    {
-        $model = $this->objectManager->getObject(Model::class);
-        $model->setAttribute($this->attribute);
-
-        $object = new \Magento\Framework\DataObject([
-            'test_attribute' => 'test123.jpg'
-        ]);
-
-        $model->beforeSave($object);
-
         $this->assertNull($object->getData('_additional_data_test_attribute'));
     }
 
-    protected function setUpModelForAfterSave()
+    /**
+     * @return \Magento\Catalog\Model\Category\Attribute\Backend\Image
+     */
+    private function setUpModelForAfterSave()
     {
         $objectManagerMock = $this->getMock(
             \Magento\Framework\App\ObjectManager::class,
@@ -211,15 +205,16 @@ class ImageTest extends \PHPUnit_Framework_TestCase
                 return $this->objectManager->get($class, $params);
             }));
 
-        $model = $this->objectManager->getObject(Model::class, [
+        $model = $this->objectManager->getObject(\Magento\Catalog\Model\Category\Attribute\Backend\Image::class, [
             'objectManager' => $objectManagerMock,
             'logger' => $this->logger
         ]);
+        $this->objectManager->setBackwardCompatibleProperty($model, 'imageUploader', $this->imageUploader);
 
         return $model->setAttribute($this->attribute);
     }
 
-    public function attributeValidValueProvider()
+    public function attributeValueDataProvider()
     {
         return [
             [[['name' => 'test1234.jpg']]],
@@ -230,11 +225,11 @@ class ImageTest extends \PHPUnit_Framework_TestCase
     }
 
     /**
-     * @dataProvider attributeValidValueProvider
+     * @dataProvider attributeValueDataProvider
      *
-     * @param $value
+     * @param array $value
      */
-    public function testAfterSaveShouldUploadImageWhenAdditionalDataSet($value)
+    public function testAfterSaveWithAdditionalData($value)
     {
         $model = $this->setUpModelForAfterSave();
 
@@ -242,36 +237,38 @@ class ImageTest extends \PHPUnit_Framework_TestCase
             ->method('moveFileFromTmp')
             ->with($this->equalTo('test1234.jpg'));
 
-        $object = new \Magento\Framework\DataObject([
-            'test_attribute' => $value,
-            '_additional_data_test_attribute' => [
-                ['name' => 'test1234.jpg']
+        $object = new \Magento\Framework\DataObject(
+            [
+                'test_attribute' => $value,
+                '_additional_data_test_attribute' => [['name' => 'test1234.jpg']]
             ]
-        ]);
+        );
 
         $model->afterSave($object);
     }
 
     /**
-     * @dataProvider attributeValidValueProvider
+     * @dataProvider attributeValueDataProvider
      *
-     * @param $value
+     * @param array $value
      */
-    public function testAfterSaveShouldNotUploadImageWhenAdditionalDataNotSet($value)
+    public function testAfterSaveWithoutAdditionalData($value)
     {
         $model = $this->setUpModelForAfterSave();
 
         $this->imageUploader->expects($this->never())
             ->method('moveFileFromTmp');
 
-        $object = new \Magento\Framework\DataObject([
-            'test_attribute' => $value
-        ]);
+        $object = new \Magento\Framework\DataObject(
+            [
+                'test_attribute' => $value
+            ]
+        );
 
         $model->afterSave($object);
     }
 
-    public function testAfterSaveShouldCreateCriticalLogEntryOnUploadExceptions()
+    public function testAfterSaveWithExceptions()
     {
         $model = $this->setUpModelForAfterSave();
 
@@ -285,11 +282,11 @@ class ImageTest extends \PHPUnit_Framework_TestCase
             ->method('critical')
             ->with($this->equalTo($exception));
 
-        $object = new \Magento\Framework\DataObject([
-            '_additional_data_test_attribute' => [
-                ['name' => 'test1234.jpg']
+        $object = new \Magento\Framework\DataObject(
+            [
+                '_additional_data_test_attribute' => [['name' => 'test1234.jpg']]
             ]
-        ]);
+        );
 
         $model->afterSave($object);
     }
diff --git a/app/code/Magento/Catalog/Test/Unit/Model/CategoryTest.php b/app/code/Magento/Catalog/Test/Unit/Model/CategoryTest.php
index 66403d39648901fb1c7f63b735dc1639ca462f87..ce4cc93b0181b7e2a3002c8c103cb7ae247259ba 100644
--- a/app/code/Magento/Catalog/Test/Unit/Model/CategoryTest.php
+++ b/app/code/Magento/Catalog/Test/Unit/Model/CategoryTest.php
@@ -9,7 +9,7 @@
 namespace Magento\Catalog\Test\Unit\Model;
 
 use Magento\Catalog\Model\Indexer;
-use Magento\Catalog\Model\Category as Model;
+use Magento\Catalog\Model\Category;
 
 /**
  * @SuppressWarnings(PHPMD.TooManyFields)
@@ -17,83 +17,125 @@ use Magento\Catalog\Model\Category as Model;
  */
 class CategoryTest extends \PHPUnit_Framework_TestCase
 {
-    /** @var \Magento\Catalog\Model\Category */
-    protected $category;
+    /**
+     * @var \Magento\Catalog\Model\Category
+     */
+    private $category;
 
-    /** @var \Magento\Framework\Model\Context|\PHPUnit_Framework_MockObject_MockObject */
-    protected $context;
+    /**
+     * @var \Magento\Framework\Model\Context|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $context;
 
-    /** @var \Magento\Framework\Event\ManagerInterface|\PHPUnit_Framework_MockObject_MockObject */
-    protected $eventManager;
+    /**
+     * @var \Magento\Framework\Event\ManagerInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $eventManager;
 
-    /** @var \Magento\Framework\App\CacheInterface|\PHPUnit_Framework_MockObject_MockObject */
-    protected $cacheManager;
+    /**
+     * @var \Magento\Framework\App\CacheInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $cacheManager;
 
-    /** @var \Magento\Framework\Registry|\PHPUnit_Framework_MockObject_MockObject */
-    protected $registry;
+    /**
+     * @var \Magento\Framework\Registry|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $registry;
 
-    /** @var \Magento\Store\Model\StoreManagerInterface|\PHPUnit_Framework_MockObject_MockObject */
-    protected $storeManager;
+    /**
+     * @var \Magento\Store\Model\StoreManagerInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $storeManager;
 
-    /** @var \Magento\Catalog\Model\ResourceModel\Category\Tree|\PHPUnit_Framework_MockObject_MockObject */
-    protected $categoryTreeResource;
+    /**
+     * @var \Magento\Catalog\Model\ResourceModel\Category\Tree|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $categoryTreeResource;
 
-    /** @var \PHPUnit_Framework_MockObject_MockObject */
-    protected $categoryTreeFactory;
+    /**
+     * @var \PHPUnit_Framework_MockObject_MockObject
+     */
+    private $categoryTreeFactory;
 
-    /** @var \Magento\Catalog\Api\CategoryRepositoryInterface|\PHPUnit_Framework_MockObject_MockObject */
-    protected $categoryRepository;
+    /**
+     * @var \Magento\Catalog\Api\CategoryRepositoryInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $categoryRepository;
 
-    /** @var \PHPUnit_Framework_MockObject_MockObject */
-    protected $storeCollectionFactory;
+    /**
+     * @var \PHPUnit_Framework_MockObject_MockObject
+     */
+    private $storeCollectionFactory;
 
-    /** @var \Magento\Framework\UrlInterface|\PHPUnit_Framework_MockObject_MockObject */
-    protected $url;
+    /**
+     * @var \Magento\Framework\UrlInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $url;
 
-    /** @var \PHPUnit_Framework_MockObject_MockObject */
-    protected $productCollectionFactory;
+    /**
+     * @var \PHPUnit_Framework_MockObject_MockObject
+     */
+    private $productCollectionFactory;
 
-    /** @var \Magento\Catalog\Model\Config|\PHPUnit_Framework_MockObject_MockObject */
-    protected $catalogConfig;
+    /**
+     * @var \Magento\Catalog\Model\Config|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $catalogConfig;
 
-    /** @var \Magento\Framework\Filter\FilterManager|\PHPUnit_Framework_MockObject_MockObject */
-    protected $filterManager;
+    /**
+     * @var \Magento\Framework\Filter\FilterManager|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $filterManager;
 
-    /** @var \Magento\Catalog\Model\Indexer\Category\Flat\State|\PHPUnit_Framework_MockObject_MockObject */
-    protected $flatState;
+    /**
+     * @var \Magento\Catalog\Model\Indexer\Category\Flat\State|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $flatState;
 
-    /** @var \Magento\Framework\Indexer\IndexerInterface|\PHPUnit_Framework_MockObject_MockObject */
-    protected $flatIndexer;
+    /**
+     * @var \Magento\Framework\Indexer\IndexerInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $flatIndexer;
 
-    /** @var \Magento\Framework\Indexer\IndexerInterface|\PHPUnit_Framework_MockObject_MockObject */
-    protected $productIndexer;
+    /**
+     * @var \Magento\Framework\Indexer\IndexerInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $productIndexer;
 
-    /** @var \Magento\CatalogUrlRewrite\Model\CategoryUrlPathGenerator|\PHPUnit_Framework_MockObject_MockObject */
-    protected $categoryUrlPathGenerator;
+    /**
+     * @var \Magento\CatalogUrlRewrite\Model\CategoryUrlPathGenerator|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $categoryUrlPathGenerator;
 
-    /** @var \Magento\UrlRewrite\Model\UrlFinderInterface|\PHPUnit_Framework_MockObject_MockObject */
-    protected $urlFinder;
+    /**
+     * @var \Magento\UrlRewrite\Model\UrlFinderInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $urlFinder;
 
-    /** @var \Magento\Framework\Model\ResourceModel\AbstractResource|\PHPUnit_Framework_MockObject_MockObject */
-    protected $resource;
+    /**
+     * @var \Magento\Framework\Model\ResourceModel\AbstractResource|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $resource;
 
-    /** @var \Magento\Framework\Indexer\IndexerRegistry|\PHPUnit_Framework_MockObject_MockObject */
-    protected $indexerRegistry;
+    /**
+     * @var \Magento\Framework\Indexer\IndexerRegistry|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $indexerRegistry;
 
     /**
-     * @var \PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Catalog\Api\CategoryAttributeRepositoryInterface|\PHPUnit_Framework_MockObject_MockObject
      */
-    protected $metadataServiceMock;
+    private $metadataServiceMock;
 
     /**
      * @var \PHPUnit_Framework_MockObject_MockObject
      */
-    protected $attributeValueFactory;
+    private $attributeValueFactory;
 
     /**
      * @var \Magento\Framework\TestFramework\Unit\Helper\ObjectManager
      */
-    protected $objectManager;
+    private $objectManager;
 
     protected function setUp()
     {
@@ -496,21 +538,24 @@ class CategoryTest extends \PHPUnit_Framework_TestCase
         );
     }
 
-    public function imageAttributeNameAndUrlProvider()
+    /**
+     * @return array
+     */
+    public function getImageWithAttributeCodeDataProvider()
     {
         return [
-            ['testimage', 'http://www.test123.com/catalog/category/testimage'],
+            ['testimage', 'http://www.example.com/catalog/category/testimage'],
             [false, false]
         ];
     }
 
     /**
-     * @param $value
-     * @param $url
+     * @param string|bool $value
+     * @param string|bool $url
      *
-     * @dataProvider imageAttributeNameAndUrlProvider
+     * @dataProvider getImageWithAttributeCodeDataProvider
      */
-    public function testGetImageUrlShouldGenerateMediaUrlForSpecifiedAttributeValue($value, $url)
+    public function testGetImageWithAttributeCode($value, $url)
     {
         $storeManager = $this->getMock(\Magento\Store\Model\StoreManager::class, ['getStore'], [], '', false);
         $store = $this->getMock(\Magento\Store\Model\Store::class, ['getBaseUrl'], [], '', false);
@@ -522,11 +567,15 @@ class CategoryTest extends \PHPUnit_Framework_TestCase
         $store->expects($this->any())
             ->method('getBaseUrl')
             ->with(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA)
-            ->will($this->returnValue('http://www.test123.com/'));
+            ->will($this->returnValue('http://www.example.com/'));
 
-        $model = $this->objectManager->getObject(Model::class, [
-            'storeManager' => $storeManager
-        ]);
+        /** @var \Magento\Catalog\Model\Category $model */
+        $model = $this->objectManager->getObject(
+            \Magento\Catalog\Model\Category::class,
+            [
+                'storeManager' => $storeManager
+            ]
+        );
 
         $model->setData('attribute1', $value);
 
@@ -535,7 +584,7 @@ class CategoryTest extends \PHPUnit_Framework_TestCase
         $this->assertEquals($url, $result);
     }
 
-    public function testGetImageUrlShouldGenerateMediaUrlForImageAttributeValue()
+    public function testGetImageWithoutAttributeCode()
     {
         $storeManager = $this->getMock(\Magento\Store\Model\StoreManager::class, ['getStore'], [], '', false);
         $store = $this->getMock(\Magento\Store\Model\Store::class, ['getBaseUrl'], [], '', false);
@@ -547,9 +596,10 @@ class CategoryTest extends \PHPUnit_Framework_TestCase
         $store->expects($this->any())
             ->method('getBaseUrl')
             ->with(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA)
-            ->will($this->returnValue('http://www.test123.com/'));
+            ->will($this->returnValue('http://www.example.com/'));
 
-        $model = $this->objectManager->getObject(Model::class, [
+        /** @var \Magento\Catalog\Model\Category $model */
+        $model = $this->objectManager->getObject(\Magento\Catalog\Model\Category::class, [
             'storeManager' => $storeManager
         ]);
 
@@ -557,6 +607,6 @@ class CategoryTest extends \PHPUnit_Framework_TestCase
 
         $result = $model->getImageUrl();
 
-        $this->assertEquals('http://www.test123.com/catalog/category/myimage', $result);
+        $this->assertEquals('http://www.example.com/catalog/category/myimage', $result);
     }
 }
diff --git a/app/code/Magento/Ui/view/base/web/js/form/element/file-uploader.js b/app/code/Magento/Ui/view/base/web/js/form/element/file-uploader.js
index 5d06886fe91bd613134845706ab0ede28b277829..917dc62f9f49b148d58ad62c671eb6fbeeff8beb 100644
--- a/app/code/Magento/Ui/view/base/web/js/form/element/file-uploader.js
+++ b/app/code/Magento/Ui/view/base/web/js/form/element/file-uploader.js
@@ -299,16 +299,15 @@ define([
          */
         onBeforeFileUpload: function (e, data) {
             var file     = data.files[0],
-                allowed  = this.isFileAllowed(file);
+                allowed  = this.isFileAllowed(file),
+                target   = $(e.target);
 
             if (allowed.passed) {
-                var $target = $(e.target);
-
-                $target.on('fileuploadsend', function(event, postData) {
+                target.on('fileuploadsend', function (event, postData) {
                     postData.data.set('param_name', this.paramName);
                 }.bind(data));
 
-                $target.fileupload('process', data).done(function () {
+                target.fileupload('process', data).done(function () {
                     data.submit();
                 });
             } else {