Skip to content

Commit ae54f81

Browse files
authored
Merge branch 'develop' into imported-magento-magento2-functional-testing-framework-840
2 parents bbec23a + 77bd22e commit ae54f81

File tree

16 files changed

+147
-142
lines changed

16 files changed

+147
-142
lines changed

composer.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,9 @@
2525
"csharpru/vault-php": "^4.2.1",
2626
"csharpru/vault-php-guzzle6-transport": "^2.0",
2727
"hoa/console": "~3.0",
28-
"monolog/monolog": "^1.17",
28+
"monolog/monolog": "^2.3",
2929
"mustache/mustache": "~2.5",
30+
"nikic/php-parser": "^4.4",
3031
"php-webdriver/webdriver": "^1.9.0",
3132
"spomky-labs/otphp": "^10.0",
3233
"symfony/console": "^4.4",
@@ -35,8 +36,7 @@
3536
"symfony/mime": "^5.0",
3637
"symfony/process": "^4.4",
3738
"vlucas/phpdotenv": "^2.4",
38-
"weew/helpers-array": "^1.3",
39-
"nikic/php-parser": "^4.4"
39+
"weew/helpers-array": "^1.3"
4040
},
4141
"require-dev": {
4242
"brainmaestro/composer-git-hooks": "^2.3.1",

composer.lock

Lines changed: 30 additions & 20 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dev/tests/unit/Magento/FunctionalTestFramework/Config/Reader/FilesystemTest.php

Lines changed: 49 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,23 @@
33
* Copyright © Magento, Inc. All rights reserved.
44
* See COPYING.txt for license details.
55
*/
6+
declare(strict_types=1);
7+
68
namespace tests\unit\Magento\FunctionalTestFramework\Config\Reader;
79

10+
use Magento\FunctionalTestingFramework\Config\ConverterInterface;
811
use Magento\FunctionalTestingFramework\Config\FileResolver\Module;
912
use Magento\FunctionalTestingFramework\Config\Reader\Filesystem;
13+
use Magento\FunctionalTestingFramework\Config\SchemaLocatorInterface;
1014
use Magento\FunctionalTestingFramework\Config\ValidationState;
1115
use Magento\FunctionalTestingFramework\Util\Iterator\File;
16+
use PHPUnit\Framework\MockObject\MockObject;
1217
use PHPUnit\Framework\TestCase;
13-
use AspectMock\Test as AspectMock;
1418
use tests\unit\Util\TestLoggingUtil;
1519

1620
class FilesystemTest extends TestCase
1721
{
1822
/**
19-
* Before test functionality
2023
* @return void
2124
*/
2225
public function setUp(): void
@@ -25,79 +28,80 @@ public function setUp(): void
2528
}
2629

2730
/**
28-
* Test Reading Empty Files
2931
* @throws \Exception
3032
*/
3133
public function testEmptyXmlFile()
3234
{
33-
// create mocked items and read the file
34-
$someFile = $this->setMockFile("somepath.xml", "");
35-
$filesystem = $this->createPseudoFileSystem($someFile);
36-
$filesystem->read();
35+
$filesystem = $this->getFilesystem($this->getFileIterator('somepath.xml', ''));
36+
$this->assertEquals([], $filesystem->read());
3737

38-
// validate log statement
3938
TestLoggingUtil::getInstance()->validateMockLogStatement(
40-
"warning",
41-
"XML File is empty.",
42-
["File" => "somepath.xml"]
39+
'warning',
40+
'XML File is empty.',
41+
['File' => 'somepath.xml']
4342
);
4443
}
4544

4645
/**
47-
* Function used to set mock for File created in test
46+
* Retrieve mocked file iterator
4847
*
4948
* @param string $fileName
5049
* @param string $content
51-
* @return object
50+
* @return File|MockObject
5251
* @throws \Exception
5352
*/
54-
public function setMockFile($fileName, $content)
53+
public function getFileIterator(string $fileName, string $content): File
5554
{
56-
$file = AspectMock::double(
57-
File::class,
58-
[
59-
'current' => "",
60-
'count' => 1,
61-
'getFilename' => $fileName
62-
]
63-
)->make();
55+
$iterator = new \ArrayIterator([$content]);
56+
57+
$file = $this->createMock(File::class);
58+
59+
$file->method('current')
60+
->willReturn($content);
61+
$file->method('getFilename')
62+
->willReturn($fileName);
63+
$file->method('count')
64+
->willReturn(1);
65+
66+
$file->method('next')
67+
->willReturnCallback(function () use ($iterator): void {
68+
$iterator->next();
69+
});
6470

65-
//set mocked data property for File
66-
$property = new \ReflectionProperty(File::class, 'data');
67-
$property->setAccessible(true);
68-
$property->setValue($file, [$fileName => $content]);
71+
$file->method('valid')
72+
->willReturnCallback(function () use ($iterator): bool {
73+
return $iterator->valid();
74+
});
6975

7076
return $file;
7177
}
7278

7379
/**
74-
* Function used to set mock for filesystem class during test
80+
* Get real instance of Filesystem class with mocked dependencies
7581
*
76-
* @param string $fileList
77-
* @return object
78-
* @throws \Exception
82+
* @param File $fileIterator
83+
* @return Filesystem
7984
*/
80-
public function createPseudoFileSystem($fileList)
85+
public function getFilesystem(File $fileIterator): Filesystem
8186
{
82-
$filesystem = AspectMock::double(Filesystem::class)->make();
83-
84-
//set resolver to use mocked resolver
85-
$mockFileResolver = AspectMock::double(Module::class, ['get' => $fileList])->make();
86-
$property = new \ReflectionProperty(Filesystem::class, 'fileResolver');
87-
$property->setAccessible(true);
88-
$property->setValue($filesystem, $mockFileResolver);
89-
90-
//set validator to use mocked validator
91-
$mockValidation = AspectMock::double(ValidationState::class, ['isValidationRequired' => false])->make();
92-
$property = new \ReflectionProperty(Filesystem::class, 'validationState');
93-
$property->setAccessible(true);
94-
$property->setValue($filesystem, $mockValidation);
87+
$fileResolver = $this->createMock(Module::class);
88+
$fileResolver->method('get')
89+
->willReturn($fileIterator);
90+
$validationState = $this->createMock(ValidationState::class);
91+
$validationState->method('isValidationRequired')
92+
->willReturn(false);
93+
$filesystem = new Filesystem(
94+
$fileResolver,
95+
$this->createMock(ConverterInterface::class),
96+
$this->createMock(SchemaLocatorInterface::class),
97+
$validationState,
98+
''
99+
);
95100

96101
return $filesystem;
97102
}
98103

99104
/**
100-
* After class functionality
101105
* @return void
102106
*/
103107
public static function tearDownAfterClass(): void

dev/tests/unit/Magento/FunctionalTestFramework/StaticCheck/AnnotationsCheckTest.php

Lines changed: 19 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -3,32 +3,27 @@
33
* Copyright © Magento, Inc. All rights reserved.
44
* See COPYING.txt for license details.
55
*/
6+
declare(strict_types=1);
67

78
namespace tests\unit\Magento\FunctionalTestFramework\StaticCheck;
89

9-
use AspectMock\Test as AspectMock;
1010
use Magento\FunctionalTestingFramework\StaticCheck\AnnotationsCheck;
1111
use Magento\FunctionalTestingFramework\Test\Objects\TestObject;
12-
use tests\unit\Util\MagentoTestCase;
1312
use ReflectionClass;
13+
use tests\unit\Util\MagentoTestCase;
1414

1515
class AnnotationsCheckTest extends MagentoTestCase
1616
{
1717
/** @var AnnotationsCheck */
1818
private $staticCheck;
1919

20-
/** @var ReflectionClass*/
20+
/** @var ReflectionClass */
2121
private $staticCheckClass;
2222

2323
public function setUp(): void
2424
{
2525
$this->staticCheck = new AnnotationsCheck();
26-
$this->staticCheckClass = new \ReflectionClass($this->staticCheck);
27-
}
28-
29-
public function tearDown(): void
30-
{
31-
AspectMock::clean();
26+
$this->staticCheckClass = new ReflectionClass($this->staticCheck);
3227
}
3328

3429
public function testValidateRequiredAnnotationsNoError()
@@ -56,11 +51,9 @@ public function testValidateRequiredAnnotationsNoError()
5651
];
5752
$expected = [];
5853

59-
// mock test object
60-
$test = AspectMock::double(
61-
TestObject::class,
62-
['getAnnotations' => $annotations, 'getName' => 'AnnotationsCheckTest']
63-
)->make();
54+
$test = $this->createMock(TestObject::class);
55+
56+
$test->expects($this->once())->method('getAnnotations')->willReturn($annotations);
6457

6558
$validateRequiredAnnotations = $this->staticCheckClass->getMethod('validateRequiredAnnotations');
6659
$validateRequiredAnnotations->setAccessible(true);
@@ -99,11 +92,10 @@ public function testValidateRequiredAnnotationsMissing()
9992
]
10093
];
10194

102-
// mock test object
103-
$test = AspectMock::double(
104-
TestObject::class,
105-
['getAnnotations' => $annotations, 'getName' => 'AnnotationsCheckTest']
106-
)->make();
95+
$test = $this->createMock(TestObject::class);
96+
97+
$test->expects($this->once())->method('getAnnotations')->willReturn($annotations);
98+
$test->expects($this->once())->method('getName')->willReturn('AnnotationsCheckTest');
10799

108100
$validateRequiredAnnotations = $this->staticCheckClass->getMethod('validateRequiredAnnotations');
109101
$validateRequiredAnnotations->setAccessible(true);
@@ -137,11 +129,10 @@ public function testValidateRequiredAnnotationsMissingNoTestCaseId()
137129
]
138130
];
139131

140-
// mock test object
141-
$test = AspectMock::double(
142-
TestObject::class,
143-
['getAnnotations' => $annotations, 'getName' => 'AnnotationsCheckTest']
144-
)->make();
132+
$test = $this->createMock(TestObject::class);
133+
134+
$test->expects($this->once())->method('getAnnotations')->willReturn($annotations);
135+
$test->expects($this->once())->method('getName')->willReturn('AnnotationsCheckTest');
145136

146137
$validateRequiredAnnotations = $this->staticCheckClass->getMethod('validateRequiredAnnotations');
147138
$validateRequiredAnnotations->setAccessible(true);
@@ -179,11 +170,10 @@ public function testValidateRequiredAnnotationsEmpty()
179170
]
180171
];
181172

182-
// mock test object
183-
$test = AspectMock::double(
184-
TestObject::class,
185-
['getAnnotations' => $annotations, 'getName' => 'AnnotationsCheckTest']
186-
)->make();
173+
$test = $this->createMock(TestObject::class);
174+
175+
$test->expects($this->once())->method('getAnnotations')->willReturn($annotations);
176+
$test->expects($this->once())->method('getName')->willReturn('AnnotationsCheckTest');
187177

188178
$validateRequiredAnnotations = $this->staticCheckClass->getMethod('validateRequiredAnnotations');
189179
$validateRequiredAnnotations->setAccessible(true);

0 commit comments

Comments
 (0)