Skip to content

Commit de25d59

Browse files
author
Hayder Sharhan
committed
Merge remote-tracking branches 'remotes/jack/MAGETWO-53808', 'remotes/jack/MAGETWO-54355', 'remotes/jack/MAGETWO-54580', 'remotes/jack/MAGETWO-55950-Automate-Create-new-Email-Template-test', 'remotes/jack/MAGETWO-56197-Write-functional-test-for-MAGETWO-47822' and 'remotes/jack/MAGETWO-56868-Product-Images-Save-Problem' into jack-kanban2-pr
7 parents 522fad0 + 859e96a + 7f1d9d2 + 18b5d6d + 449b261 + 2d9f595 + 37c4b9d commit de25d59

File tree

18 files changed

+463
-2
lines changed

18 files changed

+463
-2
lines changed

app/code/Magento/Catalog/Controller/Adminhtml/Product/Action/Attribute/Save.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ public function execute()
132132
$attributesData[$attributeCode] = $value;
133133
} elseif ($attribute->getFrontendInput() == 'multiselect') {
134134
// Check if 'Change' checkbox has been checked by admin for this attribute
135-
$isChanged = (bool)$this->getRequest()->getPost($attributeCode . '_checkbox');
135+
$isChanged = (bool)$this->getRequest()->getPost('toggle_' . $attributeCode);
136136
if (!$isChanged) {
137137
unset($attributesData[$attributeCode]);
138138
continue;

app/code/Magento/Catalog/Model/Product.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1468,7 +1468,10 @@ public function getMediaGalleryImages()
14681468
if (!$this->hasData('media_gallery_images') && is_array($this->getMediaGallery('images'))) {
14691469
$images = $this->_collectionFactory->create();
14701470
foreach ($this->getMediaGallery('images') as $image) {
1471-
if ((isset($image['disabled']) && $image['disabled']) || empty($image['value_id'])) {
1471+
if ((isset($image['disabled']) && $image['disabled'])
1472+
|| empty($image['value_id'])
1473+
|| $images->getItemById($image['value_id']) != null
1474+
) {
14721475
continue;
14731476
}
14741477
$image['url'] = $this->getMediaConfig()->getMediaUrl($image['file']);

app/code/Magento/Catalog/Test/Unit/Model/ProductTest.php

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,16 @@ class ProductTest extends \PHPUnit_Framework_TestCase
185185
*/
186186
private $extensionAttributesFactory;
187187

188+
/**
189+
* @var \Magento\Framework\Filesystem
190+
*/
191+
private $filesystemMock;
192+
193+
/**
194+
* @var \Magento\Framework\Data\CollectionFactory
195+
*/
196+
private $collectionFactoryMock;
197+
188198
/**
189199
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
190200
*/
@@ -374,6 +384,12 @@ protected function setUp()
374384
$this->extensionAttributesFactory = $this->getMockBuilder(ExtensionAttributesFactory::class)
375385
->disableOriginalConstructor()
376386
->getMock();
387+
$this->filesystemMock = $this->getMockBuilder(\Magento\Framework\Filesystem::class)
388+
->disableOriginalConstructor()
389+
->getMock();
390+
$this->collectionFactoryMock = $this->getMockBuilder(\Magento\Framework\Data\CollectionFactory::class)
391+
->disableOriginalConstructor()
392+
->getMock();
377393
$this->mediaConfig = $this->getMock(\Magento\Catalog\Model\Product\Media\Config::class, [], [], '', false);
378394
$this->objectManagerHelper = new ObjectManagerHelper($this);
379395

@@ -402,6 +418,8 @@ protected function setUp()
402418
'mediaGalleryEntryConverterPool' => $this->mediaGalleryEntryConverterPoolMock,
403419
'linkRepository' => $this->productLinkRepositoryMock,
404420
'catalogProductMediaConfig' => $this->mediaConfig,
421+
'_filesystem' => $this->filesystemMock,
422+
'_collectionFactory' => $this->collectionFactoryMock,
405423
'data' => ['id' => 1]
406424
]
407425
);
@@ -1230,6 +1248,71 @@ public function testSetMediaGalleryEntries()
12301248
$this->assertEquals($expectedResult, $this->model->getMediaGallery());
12311249
}
12321250

1251+
public function testGetMediaGalleryImagesMerging()
1252+
{
1253+
$mediaEntries = [
1254+
'images' => [
1255+
[
1256+
'value_id' => 1,
1257+
'file' => 'imageFile.jpg',
1258+
'media_type' => 'image',
1259+
],
1260+
[
1261+
'value_id' => 1,
1262+
'file' => 'imageFile.jpg',
1263+
],
1264+
[
1265+
'value_id' => 2,
1266+
'file' => 'smallImageFile.jpg',
1267+
'media_type' => 'image',
1268+
],
1269+
]
1270+
];
1271+
$expectedImageDataObject = new \Magento\Framework\DataObject([
1272+
'value_id' => 1,
1273+
'file' => 'imageFile.jpg',
1274+
'media_type' => 'image',
1275+
'url' => 'http://magento.dev/pub/imageFile.jpg',
1276+
'id' => 1,
1277+
'path' => '/var/www/html/pub/imageFile.jpg',
1278+
]);
1279+
$expectedSmallImageDataObject = new \Magento\Framework\DataObject([
1280+
'value_id' => 2,
1281+
'file' => 'smallImageFile.jpg',
1282+
'media_type' => 'image',
1283+
'url' => 'http://magento.dev/pub/smallImageFile.jpg',
1284+
'id' => 2,
1285+
'path' => '/var/www/html/pub/smallImageFile.jpg',
1286+
]);
1287+
1288+
$directoryMock = $this->getMockBuilder(\Magento\Framework\Filesystem\Directory\ReadInterface::class)
1289+
->disableOriginalConstructor()
1290+
->getMock();
1291+
$this->filesystemMock->expects($this->once())->method('getDirectoryRead')->willReturn($directoryMock);
1292+
$this->model->setData('media_gallery', $mediaEntries);
1293+
$imagesCollectionMock = $this->getMockBuilder(\Magento\Framework\Data\Collection::class)
1294+
->disableOriginalConstructor()
1295+
->getMock();
1296+
$this->collectionFactoryMock->expects($this->once())->method('create')->willReturn($imagesCollectionMock);
1297+
$imagesCollectionMock->expects($this->at(2))->method('getItemById')->with(1)->willReturn($expectedImageDataObject);
1298+
$this->mediaConfig->expects($this->at(0))
1299+
->method('getMediaUrl')
1300+
->willReturn('http://magento.dev/pub/imageFile.jpg');
1301+
$directoryMock->expects($this->at(0))
1302+
->method('getAbsolutePath')
1303+
->willReturn('/var/www/html/pub/imageFile.jpg');
1304+
$this->mediaConfig->expects($this->at(2))
1305+
->method('getMediaUrl')
1306+
->willReturn('http://magento.dev/pub/smallImageFile.jpg');
1307+
$directoryMock->expects($this->at(1))
1308+
->method('getAbsolutePath')
1309+
->willReturn('/var/www/html/pub/smallImageFile.jpg');
1310+
$imagesCollectionMock->expects($this->at(1))->method('addItem')->with($expectedImageDataObject);
1311+
$imagesCollectionMock->expects($this->at(4))->method('addItem')->with($expectedSmallImageDataObject);
1312+
1313+
$this->model->getMediaGalleryImages();
1314+
}
1315+
12331316
public function testGetCustomAttributes()
12341317
{
12351318
$priceCode = 'price';

app/code/Magento/Newsletter/Model/Subscriber.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -442,6 +442,7 @@ public function subscribe($email)
442442
$this->setStatusChanged(true);
443443

444444
try {
445+
/* Save model before sending out email */
445446
$this->save();
446447
if ($isConfirmNeed === true
447448
&& $isOwnSubscribes === false

app/code/Magento/Search/view/frontend/web/form-mini.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,9 @@ define([
7979
}.bind(this));
8080

8181
this.element.on('blur', $.proxy(function () {
82+
if (!this.searchLabel.hasClass('active')) {
83+
return;
84+
}
8285

8386
setTimeout($.proxy(function () {
8487
if (this.autoComplete.is(':hidden')) {
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?php
2+
/**
3+
* Copyright © 2016 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
namespace Magento\Config\Test\Block\System\Config;
8+
9+
use Magento\Mtf\Block\Form;
10+
use Magento\Mtf\Client\Locator;
11+
12+
/**
13+
* Admin Security form in admin configurations.
14+
*
15+
* this class needs to be created becuase we need to check for the availability of Admin account sharing settings, This is not possible using the form block class only
16+
*/
17+
class AdminForm extends Form
18+
{
19+
protected $AdminAccountSharingField = "#admin_security_admin_account_sharing";
20+
21+
public function AdminAccountSharingAvailability() {
22+
return $this->_rootElement->find($this->AdminAccountSharingField, Locator::SELECTOR_CSS)->isVisible();
23+
}
24+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
<?php
2+
/**
3+
* Copyright © 2016 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
namespace Magento\Config\Test\Constraint;
8+
9+
use Magento\Mtf\Constraint\AbstractConstraint;
10+
use Magento\Config\Test\Page\Adminhtml\AdminAccountSharing;
11+
12+
/**
13+
* Assert Admin account sharing is available in Stores>Configuration>advanced>admin grid.
14+
*/
15+
class AssertAdminAccountSharing extends AbstractConstraint
16+
{
17+
/**
18+
* Assert Admin account sharing is available in Stores>Configuration>advanced>admin grid.
19+
* @param AdminAccountSharing $adminAccountSharing
20+
*/
21+
public function processAssert(AdminAccountSharing $adminAccountSharing)
22+
{
23+
\PHPUnit_Framework_Assert::assertTrue(
24+
$adminAccountSharing->getAdminForm()->AdminAccountSharingAvailability(),
25+
'Admin Account Sharing Option is not available'
26+
);
27+
}
28+
29+
/**
30+
* Returns a string representation of the object.
31+
*
32+
* @return string
33+
*/
34+
public function toString()
35+
{
36+
return 'Admin account sharing is available is present in in Stores>Configuration>advanced>admin grid.';
37+
}
38+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../vendor/magento/mtf/etc/pages.xsd">
3+
<page name="AdminAccountSharing" area="Adminhtml" mca="admin/system_config/edit/section/admin/" module="Magento_Config">
4+
<block name="adminForm" class="Magento\Config\Test\Block\System\Config\AdminForm" locator="[id='page:main-container']" strategy="css selector" />
5+
</page>
6+
</config>
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
<?php
2+
/**
3+
* Copyright © 2016 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
namespace Magento\Config\Test\TestCase;
8+
9+
use Magento\Mtf\TestCase\Injectable;
10+
use Magento\Config\Test\Page\Adminhtml\AdminAccountSharing;
11+
12+
/**
13+
* Steps:
14+
* 1. Log in to Admin.
15+
* 2. Go to Stores>Configuration>Advanced>admin>Security.
16+
* 3. * 7. Verify admin Acoount Sharing option availability.
17+
*
18+
* @group Config_(PS)
19+
* @ZephyrId MAGETWO-47822
20+
*/
21+
class VerifyAdminAccountSharingEntityTest extends Injectable
22+
{
23+
/* tags */
24+
const MVP = 'yes';
25+
const DOMAIN = 'PS';
26+
const TEST_TYPE = 'extended_acceptance_test';
27+
/* end tags */
28+
29+
/**
30+
* Admin account settings page.
31+
*
32+
* @var adminAccountSharing
33+
*/
34+
private $adminAccountSharing;
35+
36+
/**
37+
* @param AdminAccountSharing $adminAccountSharing
38+
*/
39+
public function __inject(
40+
AdminAccountSharing $adminAccountSharing
41+
) {
42+
$this->adminAccountSharing = $adminAccountSharing;
43+
}
44+
45+
/**
46+
* Create Verify Admin Account Sharing test.
47+
*
48+
* @return void
49+
*/
50+
public function test()
51+
{
52+
$this->adminAccountSharing->open();
53+
sleep(10);
54+
}
55+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<!--
3+
/**
4+
* Copyright © 2016 Magento. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd">
9+
<testCase name="Magento\Config\Test\TestCase\VerifyAdminAccountSharingEntityTest" summary="Verify admin account sharing option availability" ticketId="MAGETWO-47822">
10+
<variation name="VerifyAdminAccountSharingEntityTestVariation1" summary="Verify Admin Account Sharing is available by default">
11+
<constraint name="Magento\Config\Test\Constraint\AssertAdminAccountSharing" />
12+
</variation>
13+
</testCase>
14+
</config>

0 commit comments

Comments
 (0)