@@ -2299,7 +2299,7 @@ public function testIsProjectFoldersSetupComplete(): void {
2299
2299
->willReturn (true );
2300
2300
2301
2301
$ service = $ this ->getOpenProjectAPIServiceMock (
2302
- ['getGroupFolderManager ' ],
2302
+ ['getGroupFolderManager ' , ' isGroupfoldersSupported ' ],
2303
2303
[
2304
2304
'userManager ' => $ userManagerMock ,
2305
2305
'groupManager ' => $ groupManagerMock ,
@@ -2310,6 +2310,8 @@ public function testIsProjectFoldersSetupComplete(): void {
2310
2310
$ folderManagerMock = $ this ->getFolderManagerMock ();
2311
2311
$ service ->method ('getGroupFolderManager ' )
2312
2312
->willReturn ($ folderManagerMock );
2313
+ $ service ->method ('isGroupfoldersSupported ' )
2314
+ ->willReturn (true );
2313
2315
$ this ->assertTrue ($ service ->isProjectFoldersSetupComplete ());
2314
2316
}
2315
2317
@@ -2501,7 +2503,7 @@ public function testIsSystemReadyForProjectFolderSetUp(): void {
2501
2503
->with ('groupfolders ' , $ userMock )
2502
2504
->willReturn (true );
2503
2505
$ service = $ this ->getOpenProjectAPIServiceMock (
2504
- ['getGroupFolderManager ' ],
2506
+ ['getGroupFolderManager ' , ' isGroupfoldersSupported ' ],
2505
2507
[
2506
2508
'userManager ' => $ userManagerMock ,
2507
2509
'groupManager ' => $ groupManagerMock ,
@@ -2516,6 +2518,8 @@ public function testIsSystemReadyForProjectFolderSetUp(): void {
2516
2518
]]);
2517
2519
$ service ->method ('getGroupFolderManager ' )
2518
2520
->willReturn ($ folderManagerMock );
2521
+ $ service ->method ('isGroupfoldersSupported ' )
2522
+ ->willReturn (true );
2519
2523
$ result = $ service ->isSystemReadyForProjectFolderSetUp ();
2520
2524
$ this ->assertTrue ($ result );
2521
2525
}
@@ -2525,18 +2529,20 @@ public function testIsSystemReadyForProjectFolderSetUp(): void {
2525
2529
*/
2526
2530
public function isSystemReadyForGroupFolderSetUpUserOrGroupExistsExceptionDataProvider (): array {
2527
2531
return [
2528
- [true , true , false , false ,'The "Group folders" app is not installed ' ],
2529
- [true , false , false , false ,'The user " ' . Application::OPEN_PROJECT_ENTITIES_NAME .'" already exists ' ],
2530
- [false , true , false , false ,'The group " ' . Application::OPEN_PROJECT_ENTITIES_NAME .'" already exists ' ],
2531
- [false , false , false , false ,'The "Group folders" app is not installed ' ],
2532
- [false , false , true , true ,'The group folder name " ' . Application::OPEN_PROJECT_ENTITIES_NAME .'" already exists ' ],
2532
+ [true , true , false , true , false ,'The "Group folders" app is not installed ' ],
2533
+ [true , true , true , false , false ,'The "Group folders" app is not supported ' ],
2534
+ [true , false , false , true , false ,'The user " ' . Application::OPEN_PROJECT_ENTITIES_NAME .'" already exists ' ],
2535
+ [false , true , false , true , false ,'The group " ' . Application::OPEN_PROJECT_ENTITIES_NAME .'" already exists ' ],
2536
+ [false , false , false , true ,false ,'The "Group folders" app is not installed ' ],
2537
+ [false , false , true , true , true ,'The group folder name " ' . Application::OPEN_PROJECT_ENTITIES_NAME .'" already exists ' ],
2533
2538
];
2534
2539
}
2535
2540
2536
2541
/**
2537
2542
* @param bool $userExists
2538
2543
* @param bool $groupExists
2539
2544
* @param bool $appEnabled
2545
+ * @param bool $appSupported
2540
2546
* @param bool $groupFolderExists
2541
2547
* @param string $exception
2542
2548
* @return void
@@ -2546,6 +2552,7 @@ public function testIsSystemReadyForGroupFolderSetUpUserOrGroupExistsException(
2546
2552
bool $ userExists ,
2547
2553
bool $ groupExists ,
2548
2554
bool $ appEnabled ,
2555
+ bool $ appSupported ,
2549
2556
bool $ groupFolderExists ,
2550
2557
string $ exception
2551
2558
): void {
@@ -2573,7 +2580,7 @@ public function testIsSystemReadyForGroupFolderSetUpUserOrGroupExistsException(
2573
2580
->with ('groupfolders ' , $ userMock )
2574
2581
->willReturn ($ appEnabled );
2575
2582
$ service = $ this ->getOpenProjectAPIServiceMock (
2576
- ['getGroupFolderManager ' ],
2583
+ ['getGroupFolderManager ' , ' isGroupfoldersSupported ' ],
2577
2584
[
2578
2585
'userManager ' => $ userManagerMock ,
2579
2586
'groupManager ' => $ groupManagerMock ,
@@ -2583,6 +2590,8 @@ public function testIsSystemReadyForGroupFolderSetUpUserOrGroupExistsException(
2583
2590
$ folderManagerMock = $ this ->getFolderManagerMock ();
2584
2591
$ service ->method ('getGroupFolderManager ' )
2585
2592
->willReturn ($ folderManagerMock );
2593
+ $ service ->method ('isGroupfoldersSupported ' )
2594
+ ->willReturn ($ appSupported );
2586
2595
$ this ->expectException (\Exception::class);
2587
2596
$ this ->expectExceptionMessage ($ exception );
2588
2597
$ service ->isSystemReadyForProjectFolderSetUp ();
@@ -4316,4 +4325,63 @@ public function testIsOIDCUser($backend, $oidcUser, $expected): void {
4316
4325
$ result = $ service ->isOIDCUser ();
4317
4326
$ this ->assertEquals ($ expected , $ result );
4318
4327
}
4328
+
4329
+ /**
4330
+ * Data provider for testIsGroupfoldersSupported
4331
+ */
4332
+ public function dataProviderForIsGroupfoldersSupported (): array {
4333
+ return [
4334
+ 'has installed supported groupfolders apps and class exist ' => [
4335
+ 'appInstalledAndEnabled ' => true ,
4336
+ 'classesExist ' => true ,
4337
+ 'version ' => '1.0.0 ' ,
4338
+ 'expected ' => true ,
4339
+ ],
4340
+ 'has supported groupfolders apps installed but class does not exist ' => [
4341
+ 'appInstalledAndEnabled ' => true ,
4342
+ 'classesExist ' => false ,
4343
+ 'version ' => '1.0.0 ' ,
4344
+ 'expected ' => false ,
4345
+ ],
4346
+ 'has groupfolders apps not installed ' => [
4347
+ 'appInstalledAndEnabled ' => false ,
4348
+ 'classesExist ' => true ,
4349
+ 'version ' => '1.0.0 ' ,
4350
+ 'expected ' => false ,
4351
+ ],
4352
+ 'has installed unsupported groupfolders apps version ' => [
4353
+ 'appInstalledAndEnabled ' => true ,
4354
+ 'classesExist ' => true ,
4355
+ 'version ' => '0 ' ,
4356
+ 'expected ' => false ,
4357
+ ],
4358
+ 'has installed groupfolders apps higher version and all classes exist ' => [
4359
+ 'appInstalledAndEnabled ' => true ,
4360
+ 'classesExist ' => true ,
4361
+ 'version ' => '4.0.0 ' ,
4362
+ 'expected ' => true ,
4363
+ ]
4364
+ ];
4365
+ }
4366
+
4367
+ /**
4368
+ * @dataProvider dataProviderForIsGroupfoldersSupported
4369
+ */
4370
+ public function testIsGroupfoldersSupported ($ appInstalledAndEnabled , $ classesExist , $ version , $ expected ): void {
4371
+ $ mock = $ this ->getFunctionMock (__NAMESPACE__ , "class_exists " );
4372
+ $ mock ->expects ($ this ->any ())->willReturn ($ classesExist );
4373
+
4374
+ $ iAppManagerMock = $ this ->getMockBuilder (IAppManager::class)->getMock ();
4375
+ $ iAppManagerMock ->method ('getAppVersion ' )->with ('groupfolders ' )->willReturn ($ version );
4376
+
4377
+ $ service = $ this ->getOpenProjectAPIServiceMock (
4378
+ ['isGroupfoldersAppEnabled ' ],
4379
+ [
4380
+ 'appManager ' => $ iAppManagerMock ,
4381
+ ],
4382
+ );
4383
+ $ service ->method ('isGroupfoldersAppEnabled ' )->willReturn ($ appInstalledAndEnabled );
4384
+ $ actualResult = $ service ->isGroupfoldersSupported ();
4385
+ $ this ->assertEquals ($ expected , $ actualResult );
4386
+ }
4319
4387
}
0 commit comments