Skip to content

Commit 48acb90

Browse files
author
Oleksii Korshenko
authored
MAGETWO-85662: [Backport 2.3] #12625: Add Current Date to update_time Field for Block and Pages #12637
2 parents d2f1d56 + 280461a commit 48acb90

File tree

6 files changed

+93
-32
lines changed

6 files changed

+93
-32
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

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)