Skip to content

Commit fc97826

Browse files
author
Oleksii Korshenko
authored
Merge pull request #1864 from magento-engcom/develop-prs
Public Pull Requests #12631 [2.3-develop] Add customer login url from Customer Url model to checkout config so … by @quisse #12637 [Backport 2.3] #12625: Add Current Date to update_time Field for Block and Pages by @osrecio Fixed Public Issues #12627 Referer is not added to login url in checkout config #12625 when saving a page in magento 2.2.1, 'Modified' date field is not getting updated
2 parents cf85308 + f369824 commit fc97826

File tree

8 files changed

+121
-41
lines changed

8 files changed

+121
-41
lines changed

app/code/Magento/Cms/Model/Block.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
namespace Magento\Cms\Model;
77

88
use Magento\Cms\Api\Data\BlockInterface;
9-
use Magento\Cms\Model\ResourceModel\Block as ResourceCmsBlock;
109
use Magento\Framework\DataObject\IdentityInterface;
1110
use Magento\Framework\Model\AbstractModel;
1211

@@ -57,6 +56,10 @@ protected function _construct()
5756
*/
5857
public function beforeSave()
5958
{
59+
if ($this->hasDataChanges()) {
60+
$this->setUpdateTime(null);
61+
}
62+
6063
$needle = 'block_id="' . $this->getId() . '"';
6164
if (false == strstr($this->getContent(), $needle)) {
6265
return parent::beforeSave();

app/code/Magento/Cms/Model/Page.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,11 @@
66
namespace Magento\Cms\Model;
77

88
use Magento\Cms\Api\Data\PageInterface;
9-
use Magento\Cms\Model\ResourceModel\Page as ResourceCmsPage;
9+
use Magento\Cms\Helper\Page as PageHelper;
1010
use Magento\Framework\App\Config\ScopeConfigInterface;
1111
use Magento\Framework\DataObject\IdentityInterface;
1212
use Magento\Framework\Exception\LocalizedException;
1313
use Magento\Framework\Model\AbstractModel;
14-
use Magento\Cms\Helper\Page as PageHelper;
1514

1615
/**
1716
* Cms Page Model
@@ -547,6 +546,10 @@ public function beforeSave()
547546
$originalIdentifier = $this->getOrigData('identifier');
548547
$currentIdentifier = $this->getIdentifier();
549548

549+
if ($this->hasDataChanges()) {
550+
$this->setUpdateTime(null);
551+
}
552+
550553
if (!$this->getId() || $originalIdentifier === $currentIdentifier) {
551554
return parent::beforeSave();
552555
}

app/code/Magento/Cms/Model/ResourceModel/Block.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@
77

88
use Magento\Cms\Api\Data\BlockInterface;
99
use Magento\Framework\DB\Select;
10+
use Magento\Framework\EntityManager\EntityManager;
11+
use Magento\Framework\EntityManager\MetadataPool;
1012
use Magento\Framework\Exception\LocalizedException;
1113
use Magento\Framework\Model\AbstractModel;
12-
use Magento\Framework\EntityManager\MetadataPool;
13-
use Magento\Framework\EntityManager\EntityManager;
1414
use Magento\Framework\Model\ResourceModel\Db\AbstractDb;
1515
use Magento\Framework\Model\ResourceModel\Db\Context;
1616
use Magento\Store\Model\Store;

app/code/Magento/Cms/Model/ResourceModel/Page.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,18 @@
66

77
namespace Magento\Cms\Model\ResourceModel;
88

9+
use Magento\Cms\Api\Data\PageInterface;
910
use Magento\Cms\Model\Page as CmsPage;
1011
use Magento\Framework\DB\Select;
12+
use Magento\Framework\EntityManager\EntityManager;
13+
use Magento\Framework\EntityManager\MetadataPool;
1114
use Magento\Framework\Exception\LocalizedException;
1215
use Magento\Framework\Model\AbstractModel;
13-
use Magento\Framework\EntityManager\MetadataPool;
1416
use Magento\Framework\Model\ResourceModel\Db\AbstractDb;
1517
use Magento\Framework\Model\ResourceModel\Db\Context;
1618
use Magento\Framework\Stdlib\DateTime;
1719
use Magento\Store\Model\Store;
1820
use Magento\Store\Model\StoreManagerInterface;
19-
use Magento\Framework\EntityManager\EntityManager;
20-
use Magento\Cms\Api\Data\PageInterface;
2121

2222
/**
2323
* Cms page mysql resource

app/code/Magento/Customer/Model/Checkout/ConfigProvider.php

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
use Magento\Checkout\Model\ConfigProviderInterface;
99
use Magento\Customer\Model\Url;
10+
use Magento\Framework\App\ObjectManager;
1011
use Magento\Framework\UrlInterface;
1112
use Magento\Store\Model\StoreManagerInterface;
1213
use Magento\Framework\App\Config\ScopeConfigInterface;
@@ -22,6 +23,7 @@ class ConfigProvider implements ConfigProviderInterface
2223

2324
/**
2425
* @var UrlInterface
26+
* @deprecated
2527
*/
2628
protected $urlBuilder;
2729

@@ -30,19 +32,28 @@ class ConfigProvider implements ConfigProviderInterface
3032
*/
3133
protected $scopeConfig;
3234

35+
/**
36+
* @var Url
37+
*/
38+
private $customerUrl;
39+
3340
/**
3441
* @param UrlInterface $urlBuilder
3542
* @param StoreManagerInterface $storeManager
3643
* @param ScopeConfigInterface $scopeConfig
44+
* @param Url|null $customerUrl
3745
*/
3846
public function __construct(
3947
UrlInterface $urlBuilder,
4048
StoreManagerInterface $storeManager,
41-
ScopeConfigInterface $scopeConfig
49+
ScopeConfigInterface $scopeConfig,
50+
Url $customerUrl = null
4251
) {
4352
$this->urlBuilder = $urlBuilder;
4453
$this->storeManager = $storeManager;
4554
$this->scopeConfig = $scopeConfig;
55+
$this->customerUrl = $customerUrl ?? ObjectManager::getInstance()
56+
->get(Url::class);
4657
}
4758

4859
/**
@@ -78,7 +89,7 @@ protected function isAutocompleteEnabled()
7889
*/
7990
protected function getLoginUrl()
8091
{
81-
return $this->urlBuilder->getUrl(Url::ROUTE_ACCOUNT_LOGIN);
92+
return $this->customerUrl->getLoginUrl();
8293
}
8394

8495
/**

app/code/Magento/Customer/Test/Unit/Model/Checkout/ConfigProviderTest.php

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,11 @@ class ConfigProviderTest extends \PHPUnit\Framework\TestCase
4141
*/
4242
protected $store;
4343

44+
/**
45+
* @var Url|\PHPUnit_Framework_MockObject_MockObject
46+
*/
47+
private $customerUrl;
48+
4449
protected function setUp()
4550
{
4651
$this->storeManager = $this->getMockForAbstractClass(
@@ -49,12 +54,14 @@ protected function setUp()
4954
'',
5055
false
5156
);
57+
5258
$this->urlBuilder = $this->getMockForAbstractClass(
5359
\Magento\Framework\UrlInterface::class,
5460
[],
5561
'',
5662
false
5763
);
64+
5865
$this->scopeConfig = $this->getMockForAbstractClass(
5966
\Magento\Framework\App\Config\ScopeConfigInterface::class,
6067
[],
@@ -71,10 +78,13 @@ protected function setUp()
7178
['getBaseUrl']
7279
);
7380

81+
$this->customerUrl = $this->createMock(\Magento\Customer\Model\Url::class);
82+
7483
$this->provider = new ConfigProvider(
7584
$this->urlBuilder,
7685
$this->storeManager,
77-
$this->scopeConfig
86+
$this->scopeConfig,
87+
$this->customerUrl
7888
);
7989
}
8090

@@ -83,9 +93,8 @@ public function testGetConfigWithoutRedirect()
8393
$loginUrl = 'http://url.test/customer/login';
8494
$baseUrl = 'http://base-url.test';
8595

86-
$this->urlBuilder->expects($this->exactly(2))
87-
->method('getUrl')
88-
->with(Url::ROUTE_ACCOUNT_LOGIN)
96+
$this->customerUrl->expects($this->exactly(2))
97+
->method('getLoginUrl')
8998
->willReturn($loginUrl);
9099
$this->storeManager->expects($this->once())
91100
->method('getStore')
@@ -112,9 +121,8 @@ public function testGetConfig()
112121
$loginUrl = 'http://base-url.test/customer/login';
113122
$baseUrl = 'http://base-url.test';
114123

115-
$this->urlBuilder->expects($this->exactly(2))
116-
->method('getUrl')
117-
->with(Url::ROUTE_ACCOUNT_LOGIN)
124+
$this->customerUrl->expects($this->exactly(2))
125+
->method('getLoginUrl')
118126
->willReturn($loginUrl);
119127
$this->storeManager->expects($this->once())
120128
->method('getStore')

dev/tests/integration/testsuite/Magento/Cms/Model/BlockTest.php

Lines changed: 76 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,51 @@
55
*/
66
namespace Magento\Cms\Model;
77

8+
use Magento\Cms\Model\ResourceModel\Block;
9+
use Magento\Cms\Model\BlockFactory;
10+
use Magento\Framework\ObjectManagerInterface;
11+
use Magento\Framework\Stdlib\DateTime\DateTime;
12+
use Magento\TestFramework\Helper\Bootstrap;
13+
use PHPUnit\Framework\TestCase;
14+
815
/**
916
* @magentoAppArea adminhtml
1017
*/
11-
class BlockTest extends \PHPUnit\Framework\TestCase
18+
class BlockTest extends TestCase
1219
{
20+
21+
/**
22+
* @var ObjectManagerInterface
23+
*/
24+
private $objectManager;
25+
26+
/**
27+
* @var Block
28+
*/
29+
private $blockResource;
30+
31+
/**
32+
* @var BlockFactory
33+
*/
34+
private $blockFactory;
35+
36+
/**
37+
* @var GetBlockByIdentifier
38+
*/
39+
private $blockIdentifier;
40+
41+
protected function setUp()
42+
{
43+
$this->objectManager = Bootstrap::getObjectManager();
44+
45+
/** @var BlockFactory $blockFactory */
46+
/** @var Block $blockResource */
47+
/** @var GetBlockByIdentifier $getBlockByIdentifierCommand */
48+
$this->blockResource = $this->objectManager->create(Block::class);
49+
$this->blockFactory = $this->objectManager->create(BlockFactory::class);
50+
$this->blockIdentifier = $this->objectManager->create(GetBlockByIdentifier::class);
51+
}
52+
1353
/**
1454
* Tests the get by identifier command
1555
* @param array $blockData
@@ -20,40 +60,55 @@ class BlockTest extends \PHPUnit\Framework\TestCase
2060
*/
2161
public function testGetByIdentifier(array $blockData)
2262
{
23-
$objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
63+
# Prepare and save the temporary block
64+
$tempBlock = $this->blockFactory->create();
65+
$tempBlock->setData($blockData);
66+
$this->blockResource->save($tempBlock);
2467

25-
/** @var \Magento\Cms\Model\BlockFactory $blockFactory */
26-
/** @var \Magento\Cms\Model\ResourceModel\Block $blockResource */
27-
/** @var \Magento\Cms\Model\GetBlockByIdentifier $getBlockByIdentifierCommand */
28-
$blockResource = $objectManager->create(\Magento\Cms\Model\ResourceModel\Block::class);
29-
$blockFactory = $objectManager->create(\Magento\Cms\Model\BlockFactory::class);
30-
$getBlockByIdentifierCommand = $objectManager->create(\Magento\Cms\Model\GetBlockByIdentifier::class);
68+
# Load previously created block and compare identifiers
69+
$storeId = reset($blockData['stores']);
70+
$block = $this->blockIdentifier->execute($blockData['identifier'], $storeId);
71+
$this->assertEquals($blockData['identifier'], $block->getIdentifier());
72+
}
3173

74+
/**
75+
* Tests the get by identifier command
76+
* @param array $blockData
77+
* @throws \Exception
78+
* @throws \Magento\Framework\Exception\NoSuchEntityException
79+
* @magentoDbIsolation enabled
80+
* @dataProvider testGetByIdentifierDataProvider
81+
*/
82+
public function testUpdateTime(array $blockData)
83+
{
3284
# Prepare and save the temporary block
33-
$tempBlock = $blockFactory->create();
85+
$tempBlock = $this->blockFactory->create();
3486
$tempBlock->setData($blockData);
35-
$blockResource->save($tempBlock);
87+
$this->blockResource->save($tempBlock);
3688

3789
# Load previously created block and compare identifiers
3890
$storeId = reset($blockData['stores']);
39-
$block = $getBlockByIdentifierCommand->execute($blockData['identifier'], $storeId);
40-
$this->assertEquals($blockData['identifier'], $block->getIdentifier());
91+
$block = $this->blockIdentifier->execute($blockData['identifier'], $storeId);
92+
$date = $this->objectManager->get(DateTime::class)->date();
93+
$this->assertEquals($date, $block->getUpdateTime());
4194
}
4295

4396
/**
44-
* Data provider for "testGetByIdentifier" method
97+
* Data provider for "testGetByIdentifier" and "testUpdateTime" method
4598
* @return array
4699
*/
47-
public function testGetByIdentifierDataProvider() : array
100+
public function testGetByIdentifierDataProvider(): array
48101
{
49102
return [
50-
['data' => [
51-
'title' => 'Test title',
52-
'stores' => [0],
53-
'identifier' => 'test-identifier',
54-
'content' => 'Test content',
55-
'is_active' => 1
56-
]]
103+
[
104+
'data' => [
105+
'title' => 'Test title',
106+
'stores' => [0],
107+
'identifier' => 'test-identifier',
108+
'content' => 'Test content',
109+
'is_active' => 1
110+
]
111+
]
57112
];
58113
}
59114
}

dev/tests/integration/testsuite/Magento/Cms/Model/PageTest.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
namespace Magento\Cms\Model;
77

88
use Magento\Cms\Api\PageRepositoryInterface;
9+
use Magento\Framework\Stdlib\DateTime\DateTime;
910

1011
/**
1112
* @magentoAppArea adminhtml
@@ -77,15 +78,14 @@ public function testGenerateIdentifierFromTitle($data, $expectedIdentifier)
7778
*/
7879
public function testUpdateTime()
7980
{
80-
$updateTime = '2016-09-01 00:00:00';
8181
$objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
8282
/** @var \Magento\Cms\Model\Page $page */
8383
$page = $objectManager->create(\Magento\Cms\Model\Page::class);
8484
$page->setData(['title' => 'Test', 'stores' => [1]]);
85-
$page->setUpdateTime($updateTime);
8685
$page->save();
8786
$page = $objectManager->get(PageRepositoryInterface::class)->getById($page->getId());
88-
$this->assertEquals($updateTime, $page->getUpdateTime());
87+
$date = $objectManager->get(DateTime::class)->date();
88+
$this->assertEquals($date, $page->getUpdateTime());
8989
}
9090

9191
public function generateIdentifierFromTitleDataProvider() : array

0 commit comments

Comments
 (0)