9 use AspectMock\Proxy\Verifier;
10 use AspectMock\Test as AspectMock;
47 $this->setMockResolverClass();
49 $this->setMockResolverProperties($resolver, [
"example" . DIRECTORY_SEPARATOR .
"paths"]);
50 $this->assertEquals([
"example" . DIRECTORY_SEPARATOR .
"paths"], $resolver->getModulesPath());
59 $this->mockForceGenerate(
false);
60 $this->setMockResolverClass(
false,
null,
null,
null, [
"example" =>
"example" . DIRECTORY_SEPARATOR .
"paths"]);
62 $this->setMockResolverProperties($resolver,
null, [0 =>
"Magento_example"]);
65 "example" . DIRECTORY_SEPARATOR .
"paths",
66 "example" . DIRECTORY_SEPARATOR .
"paths",
67 "example" . DIRECTORY_SEPARATOR .
"paths" 69 $resolver->getModulesPath()
79 $this->mockForceGenerate(
false);
80 $mockResolver = $this->setMockResolverClass(
82 [0 =>
"magento_example"],
85 [
"example" =>
"example" . DIRECTORY_SEPARATOR .
"paths"]
88 $this->setMockResolverProperties($resolver,
null,
null);
91 "example" . DIRECTORY_SEPARATOR .
"paths",
92 "example" . DIRECTORY_SEPARATOR .
"paths",
93 "example" . DIRECTORY_SEPARATOR .
"paths" 95 $resolver->getModulesPath()
99 $magentoBaseCodePath = MAGENTO_BP;
102 $modulePath = defined(
'TESTS_MODULE_PATH') ? TESTS_MODULE_PATH : TESTS_BP;
104 $mockResolver->verifyInvoked(
'globRelevantPaths', [$modulePath,
'']);
105 $mockResolver->verifyInvoked(
107 [$magentoBaseCodePath . DIRECTORY_SEPARATOR .
"vendor" ,
'Test' . DIRECTORY_SEPARATOR .
'Mftf']
109 $mockResolver->verifyInvoked(
112 $magentoBaseCodePath . DIRECTORY_SEPARATOR .
"app" . DIRECTORY_SEPARATOR .
"code",
113 'Test' . DIRECTORY_SEPARATOR .
'Mftf' 124 $this->setMockResolverClass(
false, [
"Magento_TestModule"],
null,
null, [], [
'otherPath']);
126 $this->setMockResolverProperties($resolver,
null,
null,
null);
127 $this->assertEquals([
'otherPath'], $resolver->getModulesPath());
130 'including custom module',
131 [
'module' =>
'otherPath']
141 $this->setMockResolverClass(
146 function ($arg1, $arg2) {
148 $mockValue = [
"somePath" =>
"somePath"];
150 $mockValue = [
"lastPath" =>
"lastPath"];
156 $this->setMockResolverProperties($resolver,
null,
null, [
"somePath"]);
157 $this->assertEquals([
"lastPath",
"lastPath"], $resolver->getModulesPath());
161 [
'module' =>
'somePath']
172 $this->mockForceGenerate(
false);
175 $this->setMockResolverClass(
false,
null, [
"example" . DIRECTORY_SEPARATOR .
"paths"], []);
177 $this->setMockResolverProperties($resolver,
null,
null);
180 $this->expectException(TestFrameworkException::class);
181 $resolver->getModulesPath();
190 $this->mockForceGenerate(
true);
193 $mockResolver = $this->setMockResolverClass();
195 $this->setMockResolverProperties($resolver,
null,
null);
196 $resolver->getModulesPath();
197 $mockResolver->verifyNeverInvoked(
"getAdminToken");
200 $this->addToAssertionCount(1);
209 $this->mockForceGenerate(
false);
212 unset($_ENV[
'MAGENTO_ADMIN_USERNAME']);
215 $mockResolver = $this->setMockResolverClass();
219 $this->expectException(TestFrameworkException::class);
220 $resolver->getModulesPath();
229 $this->mockForceGenerate(
false);
232 $mockResolver = $this->setMockResolverClass();
236 $this->expectException(TestFrameworkException::class);
237 $resolver->getModulesPath();
252 private function setMockResolverClass(
254 $mockGetModules =
null,
255 $mockCustomMethods =
null,
257 $mockRelativePaths =
null,
258 $mockCustomModules =
null 260 $property = new \ReflectionProperty(ModuleResolver::class,
'instance');
261 $property->setAccessible(
true);
262 $property->setValue(
null);
265 if (isset($mockToken)) {
266 $mockMethods[
'getAdminToken'] = $mockToken;
268 if (isset($mockGetModules)) {
269 $mockMethods[
'getEnabledModules'] = $mockGetModules;
271 if (isset($mockCustomMethods)) {
272 $mockMethods[
'applyCustomModuleMethods'] = $mockCustomMethods;
274 if (isset($mockGlob)) {
275 $mockMethods[
'globRelevantWrapper'] = $mockGlob;
277 if (isset($mockRelativePaths)) {
278 $mockMethods[
'globRelevantPaths'] = $mockRelativePaths;
280 if (isset($mockCustomModules)) {
281 $mockMethods[
'getCustomModulePaths'] = $mockCustomModules;
285 $mockResolver = AspectMock::double(
286 ModuleResolver::class,
289 $instance = AspectMock::double(
290 ObjectManager::class,
291 [
'create' => $mockResolver->make(),
'get' =>
null]
294 AspectMock::double(ObjectManagerFactory::class, [
'getObjectManager' => $instance]);
296 return $mockResolver;
308 private function setMockResolverProperties($instance, $mockPaths =
null, $mockModules =
null, $mockBlacklist = [])
310 $property = new \ReflectionProperty(ModuleResolver::class,
'enabledModulePaths');
311 $property->setAccessible(
true);
312 $property->setValue($instance, $mockPaths);
314 $property = new \ReflectionProperty(ModuleResolver::class,
'enabledModules');
315 $property->setAccessible(
true);
316 $property->setValue($instance, $mockModules);
318 $property = new \ReflectionProperty(ModuleResolver::class,
'moduleBlacklist');
319 $property->setAccessible(
true);
320 $property->setValue($instance, $mockBlacklist);
329 private function mockForceGenerate($forceGenerate)
331 $mockConfig = AspectMock::double(
332 MftfApplicationConfig::class,
333 [
'forceGenerateEnabled' => $forceGenerate]
335 $instance = AspectMock::double(
336 ObjectManager::class,
337 [
'create' => $mockConfig->make(),
'get' =>
null]
339 AspectMock::double(ObjectManagerFactory::class, [
'getObjectManager' => $instance]);
349 if (!isset($_ENV[
'MAGENTO_ADMIN_USERNAME'])) {
350 $_ENV[
'MAGENTO_ADMIN_USERNAME'] =
"admin";
testGetAdminTokenWithBadResponse()
testGetAdminTokenNotCalledWhenForce()
testGetModulePathsNoAdminToken()
testGetCustomModulePath()
testGetModulePathsAlreadySet()
testGetModulePathsBlacklist()
static tearDownAfterClass()
testGetModulePathsLocations()
testGetAdminTokenWithMissingEnv()
testGetModulePathsAggregate()