Skip to content

Commit cff91e0

Browse files
committed
AC-15047::[CE] PHPUnit 12: Upgrade Media & Asset Management related test cases | TestHelper Refactoring
1 parent e8abdc8 commit cff91e0

File tree

4 files changed

+63
-20
lines changed

4 files changed

+63
-20
lines changed

app/code/Magento/MediaStorage/Test/Unit/Helper/File/Storage/DatabaseTest.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11
<?php
22
/**
3-
<<<<<<< HEAD
4-
* Copyright 2018 Adobe
5-
=======
63
* Copyright 2015 Adobe
7-
>>>>>>> origin/2.4-develop
84
* All Rights Reserved.
95
*/
106
declare(strict_types=1);
@@ -18,11 +14,11 @@
1814
use Magento\Framework\Filesystem\Directory\ReadInterface;
1915
use Magento\Framework\Filesystem\Directory\WriteInterface;
2016
use Magento\Framework\Model\ResourceModel\Db\AbstractDb;
17+
use Magento\Framework\TestFramework\Unit\Helper\MockCreationTrait;
2118
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
2219
use Magento\MediaStorage\Helper\File\Storage\Database;
2320
use Magento\MediaStorage\Model\File\Storage;
2421
use Magento\MediaStorage\Model\File\Storage\DatabaseFactory;
25-
use Magento\Framework\Model\Test\Unit\Helper\AbstractDbTestHelper;
2622
use Magento\MediaStorage\Model\File\Storage\File;
2723
use PHPUnit\Framework\Attributes\DataProvider;
2824
use PHPUnit\Framework\MockObject\MockObject;
@@ -33,6 +29,7 @@
3329
*/
3430
class DatabaseTest extends TestCase
3531
{
32+
use MockCreationTrait;
3633
/**
3734
* @var ObjectManager
3835
*/
@@ -364,7 +361,10 @@ public function testDeleteFolder($storage, $callNum)
364361
$this->dbStorageFactoryMock->expects($this->exactly($callNum))
365362
->method('create')
366363
->willReturn($dbModelMock);
367-
$resourceModelMock = new AbstractDbTestHelper();
364+
$resourceModelMock = $this->createPartialMockWithReflection(
365+
AbstractDb::class,
366+
['deleteFolder', '_construct']
367+
);
368368
$dbModelMock->expects($this->exactly($callNum))
369369
->method('getResource')
370370
->willReturn($resourceModelMock);

app/code/Magento/MediaStorage/Test/Unit/Helper/File/StorageTest.php

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11
<?php
22
/**
3-
<<<<<<< HEAD
4-
* Copyright 2018 Adobe
5-
=======
63
* Copyright 2015 Adobe
7-
>>>>>>> origin/2.4-develop
84
* All Rights Reserved.
95
*/
106
declare(strict_types=1);
@@ -14,17 +10,18 @@
1410
use Magento\Framework\App\Config\ScopeConfigInterface;
1511
use Magento\Framework\App\Helper\Context;
1612
use Magento\Framework\Model\AbstractModel;
13+
use Magento\Framework\TestFramework\Unit\Helper\MockCreationTrait;
1714
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
1815
use Magento\MediaStorage\Helper\File\Storage;
1916
use Magento\MediaStorage\Helper\File\Storage\Database as DatabaseHelper;
2017
use Magento\MediaStorage\Model\File\Storage\File;
21-
use Magento\Framework\Model\Test\Unit\Helper\AbstractModelTestHelper;
2218
use PHPUnit\Framework\Attributes\DataProvider;
2319
use PHPUnit\Framework\MockObject\MockObject;
2420
use PHPUnit\Framework\TestCase;
2521

2622
class StorageTest extends TestCase
2723
{
24+
use MockCreationTrait;
2825
/**
2926
* @var ObjectManager
3027
*/
@@ -136,19 +133,23 @@ public function testProcessStorageFile($expected, $storage, $callNum, $callSaveF
136133
->with($filename)
137134
->willReturn($relativePath);
138135

139-
$storageModelMock = new AbstractModelTestHelper();
140-
$this->storageMock->expects($this->exactly($callNum))
141-
->method('getStorageModel')
142-
->willReturn($storageModelMock);
143136
$fileMock = $this->createPartialMock(
144137
\Magento\MediaStorage\Model\File\Storage\Database::class,
145138
['getId', '__wakeup']
146139
);
147-
$storageModelMock->setFileMock($fileMock);
148140
$fileMock->expects($this->exactly($callNum))
149141
->method('getId')
150142
->willReturn($fileId);
151143

144+
$storageModelMock = $this->createPartialMockWithReflection(
145+
AbstractModel::class,
146+
['loadByFilename']
147+
);
148+
$storageModelMock->method('loadByFilename')->willReturn($fileMock);
149+
$this->storageMock->expects($this->exactly($callNum))
150+
->method('getStorageModel')
151+
->willReturn($storageModelMock);
152+
152153
$this->filesystemStorageMock->expects($this->exactly($callSaveFileNum))
153154
->method('saveFile')
154155
->with($fileMock, true)

app/code/Magento/MediaStorage/Test/Unit/Model/File/Storage/FileTest.php

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11
<?php
22
/**
3-
<<<<<<< HEAD
43
* Copyright 2018 Adobe
5-
=======
6-
* Copyright 2021 Adobe
7-
>>>>>>> origin/2.4-develop
84
* All Rights Reserved.
95
*/
106
declare(strict_types=1);
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
<?php
2+
/**
3+
* Copyright 2025 Adobe
4+
* All Rights Reserved.
5+
*/
6+
declare(strict_types=1);
7+
8+
namespace Magento\Framework\TestFramework\Unit\Helper;
9+
10+
use PHPUnit\Framework\MockObject\MockObject;
11+
use ReflectionClass;
12+
13+
/**
14+
* Trait for creating partial mocks with reflection for PHPUnit 12 migration
15+
*
16+
* Provides helper methods for creating mocks when standard PHPUnit methods are insufficient
17+
*/
18+
trait MockCreationTrait
19+
{
20+
/**
21+
* Create a partial mock with reflection.
22+
*
23+
* Use this when you need to mock methods that don't exist in the class/interface
24+
* and cannot use standard createPartialMock() which would throw CannotUseOnlyMethodsException.
25+
*
26+
* @param string $className
27+
* @param array $methods Methods to mock
28+
* @return MockObject
29+
*/
30+
protected function createPartialMockWithReflection(string $className, array $methods): MockObject
31+
{
32+
$reflection = new ReflectionClass($this);
33+
$getMockBuilderMethod = $reflection->getMethod('getMockBuilder');
34+
$getMockBuilderMethod->setAccessible(true);
35+
$mockBuilder = $getMockBuilderMethod->invoke($this, $className);
36+
37+
$builderReflection = new ReflectionClass($mockBuilder);
38+
$methodsProperty = $builderReflection->getProperty('methods');
39+
$methodsProperty->setAccessible(true);
40+
$methodsProperty->setValue($mockBuilder, $methods);
41+
42+
$mockBuilder->disableOriginalConstructor();
43+
return $mockBuilder->getMock();
44+
}
45+
}
46+

0 commit comments

Comments
 (0)