@@ -2303,7 +2303,7 @@ public function testIsProjectFoldersSetupComplete(): void {
2303
2303
->willReturn (true );
2304
2304
2305
2305
$ service = $ this ->getOpenProjectAPIServiceMock (
2306
- ['getGroupFolderManager ' ],
2306
+ ['getGroupFolderManager ' , ' isGroupfoldersSupported ' ],
2307
2307
[
2308
2308
'userManager ' => $ userManagerMock ,
2309
2309
'groupManager ' => $ groupManagerMock ,
@@ -2314,6 +2314,8 @@ public function testIsProjectFoldersSetupComplete(): void {
2314
2314
$ folderManagerMock = $ this ->getFolderManagerMock ();
2315
2315
$ service ->method ('getGroupFolderManager ' )
2316
2316
->willReturn ($ folderManagerMock );
2317
+ $ service ->method ('isGroupfoldersSupported ' )
2318
+ ->willReturn (true );
2317
2319
$ this ->assertTrue ($ service ->isProjectFoldersSetupComplete ());
2318
2320
}
2319
2321
@@ -2505,7 +2507,7 @@ public function testIsSystemReadyForProjectFolderSetUp(): void {
2505
2507
->with ('groupfolders ' , $ userMock )
2506
2508
->willReturn (true );
2507
2509
$ service = $ this ->getOpenProjectAPIServiceMock (
2508
- ['getGroupFolderManager ' ],
2510
+ ['getGroupFolderManager ' , ' isGroupfoldersSupported ' ],
2509
2511
[
2510
2512
'userManager ' => $ userManagerMock ,
2511
2513
'groupManager ' => $ groupManagerMock ,
@@ -2520,6 +2522,8 @@ public function testIsSystemReadyForProjectFolderSetUp(): void {
2520
2522
]]);
2521
2523
$ service ->method ('getGroupFolderManager ' )
2522
2524
->willReturn ($ folderManagerMock );
2525
+ $ service ->method ('isGroupfoldersSupported ' )
2526
+ ->willReturn (true );
2523
2527
$ result = $ service ->isSystemReadyForProjectFolderSetUp ();
2524
2528
$ this ->assertTrue ($ result );
2525
2529
}
@@ -2529,18 +2533,20 @@ public function testIsSystemReadyForProjectFolderSetUp(): void {
2529
2533
*/
2530
2534
public function isSystemReadyForGroupFolderSetUpUserOrGroupExistsExceptionDataProvider (): array {
2531
2535
return [
2532
- [true , true , false , false ,'The "Group folders" app is not installed ' ],
2533
- [true , false , false , false ,'The user " ' . Application::OPEN_PROJECT_ENTITIES_NAME .'" already exists ' ],
2534
- [false , true , false , false ,'The group " ' . Application::OPEN_PROJECT_ENTITIES_NAME .'" already exists ' ],
2535
- [false , false , false , false ,'The "Group folders" app is not installed ' ],
2536
- [false , false , true , true ,'The group folder name " ' . Application::OPEN_PROJECT_ENTITIES_NAME .'" already exists ' ],
2536
+ [true , true , false , true , false ,'The "Group folders" app is not installed ' ],
2537
+ [true , true , true , false , false ,'The "Group folders" app is not supported ' ],
2538
+ [true , false , false , true , false ,'The user " ' . Application::OPEN_PROJECT_ENTITIES_NAME .'" already exists ' ],
2539
+ [false , true , false , true , false ,'The group " ' . Application::OPEN_PROJECT_ENTITIES_NAME .'" already exists ' ],
2540
+ [false , false , false , true ,false ,'The "Group folders" app is not installed ' ],
2541
+ [false , false , true , true , true ,'The group folder name " ' . Application::OPEN_PROJECT_ENTITIES_NAME .'" already exists ' ],
2537
2542
];
2538
2543
}
2539
2544
2540
2545
/**
2541
2546
* @param bool $userExists
2542
2547
* @param bool $groupExists
2543
2548
* @param bool $appEnabled
2549
+ * @param bool $appSupported
2544
2550
* @param bool $groupFolderExists
2545
2551
* @param string $exception
2546
2552
* @return void
@@ -2550,6 +2556,7 @@ public function testIsSystemReadyForGroupFolderSetUpUserOrGroupExistsException(
2550
2556
bool $ userExists ,
2551
2557
bool $ groupExists ,
2552
2558
bool $ appEnabled ,
2559
+ bool $ appSupported ,
2553
2560
bool $ groupFolderExists ,
2554
2561
string $ exception
2555
2562
): void {
@@ -2577,7 +2584,7 @@ public function testIsSystemReadyForGroupFolderSetUpUserOrGroupExistsException(
2577
2584
->with ('groupfolders ' , $ userMock )
2578
2585
->willReturn ($ appEnabled );
2579
2586
$ service = $ this ->getOpenProjectAPIServiceMock (
2580
- ['getGroupFolderManager ' ],
2587
+ ['getGroupFolderManager ' , ' isGroupfoldersSupported ' ],
2581
2588
[
2582
2589
'userManager ' => $ userManagerMock ,
2583
2590
'groupManager ' => $ groupManagerMock ,
@@ -2587,6 +2594,8 @@ public function testIsSystemReadyForGroupFolderSetUpUserOrGroupExistsException(
2587
2594
$ folderManagerMock = $ this ->getFolderManagerMock ();
2588
2595
$ service ->method ('getGroupFolderManager ' )
2589
2596
->willReturn ($ folderManagerMock );
2597
+ $ service ->method ('isGroupfoldersSupported ' )
2598
+ ->willReturn ($ appSupported );
2590
2599
$ this ->expectException (\Exception::class);
2591
2600
$ this ->expectExceptionMessage ($ exception );
2592
2601
$ service ->isSystemReadyForProjectFolderSetUp ();
@@ -4385,4 +4394,63 @@ public function testIsUserOIDCAppSupported($appInstalledAndEnabled, $classesExis
4385
4394
$ actualResult = $ service ->isUserOIDCAppSupported ();
4386
4395
$ this ->assertEquals ($ expected , $ actualResult );
4387
4396
}
4397
+
4398
+ /**
4399
+ * Data provider for testIsGroupfoldersSupported
4400
+ */
4401
+ public function dataProviderForIsGroupfoldersSupported (): array {
4402
+ return [
4403
+ 'has installed supported groupfolders apps and class exist ' => [
4404
+ 'appInstalledAndEnabled ' => true ,
4405
+ 'classesExist ' => true ,
4406
+ 'version ' => '1.0.0 ' ,
4407
+ 'expected ' => true ,
4408
+ ],
4409
+ 'has supported groupfolders apps installed but class does not exist ' => [
4410
+ 'appInstalledAndEnabled ' => true ,
4411
+ 'classesExist ' => false ,
4412
+ 'version ' => '1.0.0 ' ,
4413
+ 'expected ' => false ,
4414
+ ],
4415
+ 'has groupfolders apps not installed ' => [
4416
+ 'appInstalledAndEnabled ' => false ,
4417
+ 'classesExist ' => true ,
4418
+ 'version ' => '1.0.0 ' ,
4419
+ 'expected ' => false ,
4420
+ ],
4421
+ 'has installed unsupported groupfolders apps version ' => [
4422
+ 'appInstalledAndEnabled ' => true ,
4423
+ 'classesExist ' => true ,
4424
+ 'version ' => '0 ' ,
4425
+ 'expected ' => false ,
4426
+ ],
4427
+ 'has installed groupfolders apps higher version and all classes exist ' => [
4428
+ 'appInstalledAndEnabled ' => true ,
4429
+ 'classesExist ' => true ,
4430
+ 'version ' => '4.0.0 ' ,
4431
+ 'expected ' => true ,
4432
+ ]
4433
+ ];
4434
+ }
4435
+
4436
+ /**
4437
+ * @dataProvider dataProviderForIsGroupfoldersSupported
4438
+ */
4439
+ public function testIsGroupfoldersSupported ($ appInstalledAndEnabled , $ classesExist , $ version , $ expected ): void {
4440
+ $ mock = $ this ->getFunctionMock (__NAMESPACE__ , "class_exists " );
4441
+ $ mock ->expects ($ this ->any ())->willReturn ($ classesExist );
4442
+
4443
+ $ iAppManagerMock = $ this ->getMockBuilder (IAppManager::class)->getMock ();
4444
+ $ iAppManagerMock ->method ('getAppVersion ' )->with ('groupfolders ' )->willReturn ($ version );
4445
+
4446
+ $ service = $ this ->getOpenProjectAPIServiceMock (
4447
+ ['isGroupfoldersAppEnabled ' ],
4448
+ [
4449
+ 'appManager ' => $ iAppManagerMock ,
4450
+ ],
4451
+ );
4452
+ $ service ->method ('isGroupfoldersAppEnabled ' )->willReturn ($ appInstalledAndEnabled );
4453
+ $ actualResult = $ service ->isGroupfoldersSupported ();
4454
+ $ this ->assertEquals ($ expected , $ actualResult );
4455
+ }
4388
4456
}
0 commit comments