From faf66fef7b38d2eb8b1759b93694d45b2cd253bc Mon Sep 17 00:00:00 2001 From: Stefan Dietrich <5716289+stediefan@users.noreply.github.com> Date: Mon, 27 Jul 2026 08:56:17 +0200 Subject: [PATCH] fix(teams): add consumable and implementable annotations fix: tests for TeamFolderProvider and TeamManager Assisted-by: GitHub Copilot:GPT-5.6 Terra Signed-off-by: Stefan Dietrich <5716289+stediefan@users.noreply.github.com> --- lib/composer/composer/autoload_classmap.php | 2 ++ lib/composer/composer/autoload_static.php | 2 ++ lib/private/Teams/TeamManager.php | 2 +- lib/public/Teams/ITeamFolderProvider.php | 5 ++++ lib/public/Teams/TeamFolder.php | 3 ++ tests/lib/Teams/TeamManagerTest.php | 31 +++++++++++++-------- 6 files changed, 33 insertions(+), 12 deletions(-) diff --git a/lib/composer/composer/autoload_classmap.php b/lib/composer/composer/autoload_classmap.php index 7f6c8757b0d..541afc34c35 100644 --- a/lib/composer/composer/autoload_classmap.php +++ b/lib/composer/composer/autoload_classmap.php @@ -1024,9 +1024,11 @@ return array( 'OCP\\TaskProcessing\\TaskTypes\\TextToTextSummary' => $baseDir . '/lib/public/TaskProcessing/TaskTypes/TextToTextSummary.php', 'OCP\\TaskProcessing\\TaskTypes\\TextToTextTopics' => $baseDir . '/lib/public/TaskProcessing/TaskTypes/TextToTextTopics.php', 'OCP\\TaskProcessing\\TaskTypes\\TextToTextTranslate' => $baseDir . '/lib/public/TaskProcessing/TaskTypes/TextToTextTranslate.php', + 'OCP\\Teams\\ITeamFolderProvider' => $baseDir . '/lib/public/Teams/ITeamFolderProvider.php', 'OCP\\Teams\\ITeamManager' => $baseDir . '/lib/public/Teams/ITeamManager.php', 'OCP\\Teams\\ITeamResourceProvider' => $baseDir . '/lib/public/Teams/ITeamResourceProvider.php', 'OCP\\Teams\\Team' => $baseDir . '/lib/public/Teams/Team.php', + 'OCP\\Teams\\TeamFolder' => $baseDir . '/lib/public/Teams/TeamFolder.php', 'OCP\\Teams\\TeamResource' => $baseDir . '/lib/public/Teams/TeamResource.php', 'OCP\\Template' => $baseDir . '/lib/public/Template.php', 'OCP\\Template\\ITemplate' => $baseDir . '/lib/public/Template/ITemplate.php', diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php index 3d2026f49ff..2390266ad68 100644 --- a/lib/composer/composer/autoload_static.php +++ b/lib/composer/composer/autoload_static.php @@ -1065,9 +1065,11 @@ class ComposerStaticInit749170dad3f5e7f9ca158f5a9f04f6a2 'OCP\\TaskProcessing\\TaskTypes\\TextToTextSummary' => __DIR__ . '/../../..' . '/lib/public/TaskProcessing/TaskTypes/TextToTextSummary.php', 'OCP\\TaskProcessing\\TaskTypes\\TextToTextTopics' => __DIR__ . '/../../..' . '/lib/public/TaskProcessing/TaskTypes/TextToTextTopics.php', 'OCP\\TaskProcessing\\TaskTypes\\TextToTextTranslate' => __DIR__ . '/../../..' . '/lib/public/TaskProcessing/TaskTypes/TextToTextTranslate.php', + 'OCP\\Teams\\ITeamFolderProvider' => __DIR__ . '/../../..' . '/lib/public/Teams/ITeamFolderProvider.php', 'OCP\\Teams\\ITeamManager' => __DIR__ . '/../../..' . '/lib/public/Teams/ITeamManager.php', 'OCP\\Teams\\ITeamResourceProvider' => __DIR__ . '/../../..' . '/lib/public/Teams/ITeamResourceProvider.php', 'OCP\\Teams\\Team' => __DIR__ . '/../../..' . '/lib/public/Teams/Team.php', + 'OCP\\Teams\\TeamFolder' => __DIR__ . '/../../..' . '/lib/public/Teams/TeamFolder.php', 'OCP\\Teams\\TeamResource' => __DIR__ . '/../../..' . '/lib/public/Teams/TeamResource.php', 'OCP\\Template' => __DIR__ . '/../../..' . '/lib/public/Template.php', 'OCP\\Template\\ITemplate' => __DIR__ . '/../../..' . '/lib/public/Template/ITemplate.php', diff --git a/lib/private/Teams/TeamManager.php b/lib/private/Teams/TeamManager.php index ab3471cd459..d17aefe3622 100644 --- a/lib/private/Teams/TeamManager.php +++ b/lib/private/Teams/TeamManager.php @@ -15,8 +15,8 @@ use OCA\Circles\Model\Member; use OCA\Circles\Model\Probes\CircleProbe; use OCP\IURLGenerator; use OCP\Server; -use OCP\Teams\ITeamManager; use OCP\Teams\ITeamFolderProvider; +use OCP\Teams\ITeamManager; use OCP\Teams\ITeamResourceProvider; use OCP\Teams\Team; use Psr\Container\ContainerExceptionInterface; diff --git a/lib/public/Teams/ITeamFolderProvider.php b/lib/public/Teams/ITeamFolderProvider.php index 1f78bc18f01..58b1b6f19ca 100644 --- a/lib/public/Teams/ITeamFolderProvider.php +++ b/lib/public/Teams/ITeamFolderProvider.php @@ -9,6 +9,9 @@ declare(strict_types=1); namespace OCP\Teams; +use OCP\AppFramework\Attribute\Consumable; +use OCP\AppFramework\Attribute\Implementable; + /** * Provides the exclusive folder belonging to a team. * @@ -17,6 +20,8 @@ namespace OCP\Teams; * * @since 35.0.0 */ +#[Consumable(since: '35.0.0')] +#[Implementable(since: '35.0.0')] interface ITeamFolderProvider extends ITeamResourceProvider { /** * Return the folder exclusively linked to the team. diff --git a/lib/public/Teams/TeamFolder.php b/lib/public/Teams/TeamFolder.php index 330a8bfd4ca..0d87a11b46f 100644 --- a/lib/public/Teams/TeamFolder.php +++ b/lib/public/Teams/TeamFolder.php @@ -9,11 +9,14 @@ declare(strict_types=1); namespace OCP\Teams; +use OCP\AppFramework\Attribute\Consumable; + /** * A folder exclusively linked to a team. * * @since 35.0.0 */ +#[Consumable(since: '35.0.0')] class TeamFolder implements \JsonSerializable { /** * @since 35.0.0 diff --git a/tests/lib/Teams/TeamManagerTest.php b/tests/lib/Teams/TeamManagerTest.php index 45d233e50e3..b5b1a42aca1 100644 --- a/tests/lib/Teams/TeamManagerTest.php +++ b/tests/lib/Teams/TeamManagerTest.php @@ -11,7 +11,6 @@ namespace Test\Teams; use OC\AppFramework\Bootstrap\Coordinator; use OC\Teams\TeamManager; -use OCA\Circles\CirclesManager; use OCP\IURLGenerator; use OCP\Teams\ITeamFolderProvider; use OCP\Teams\ITeamResourceProvider; @@ -19,13 +18,13 @@ use Test\TestCase; class TeamManagerTest extends TestCase { public function testGetTeamFolderProviderReturnsNullWithoutTeamSupport(): void { - $teamManager = $this->createTeamManager(null); + $teamManager = $this->createTeamManager(); $this->assertNull($teamManager->getTeamFolderProvider()); } public function testGetTeamFolderProviderReturnsNullWithoutFolderProvider(): void { - $teamManager = $this->createTeamManager($this->createMock(CirclesManager::class)); + $teamManager = $this->createTeamManager(true); $this->setProviders($teamManager, [ 'other' => $this->createMock(ITeamResourceProvider::class), ]); @@ -34,7 +33,7 @@ class TeamManagerTest extends TestCase { } public function testGetTeamFolderProviderReturnsRegisteredFolderProvider(): void { - $teamManager = $this->createTeamManager($this->createMock(CirclesManager::class)); + $teamManager = $this->createTeamManager(true); $folderProvider = $this->createMock(ITeamFolderProvider::class); $this->setProviders($teamManager, [ 'other' => $this->createMock(ITeamResourceProvider::class), @@ -44,12 +43,22 @@ class TeamManagerTest extends TestCase { $this->assertSame($folderProvider, $teamManager->getTeamFolderProvider()); } - private function createTeamManager(?CirclesManager $circlesManager): TeamManager { - return new TeamManager( - $this->createMock(Coordinator::class), - $this->createMock(IURLGenerator::class), - $circlesManager, - ); + private function createTeamManager(bool $hasTeamSupport = false): TeamManager { + return new class($this->createMock(Coordinator::class), $this->createMock(IURLGenerator::class), null, $hasTeamSupport, ) extends TeamManager { + public function __construct( + Coordinator $bootContext, + IURLGenerator $urlGenerator, + null $circlesManager, + private bool $hasTeamSupport, + ) { + parent::__construct($bootContext, $urlGenerator, $circlesManager); + } + + #[\Override] + public function hasTeamSupport(): bool { + return $this->hasTeamSupport; + } + }; } /** @@ -58,4 +67,4 @@ class TeamManagerTest extends TestCase { private function setProviders(TeamManager $teamManager, array $providers): void { (new \ReflectionProperty(TeamManager::class, 'providers'))->setValue($teamManager, $providers); } -} \ No newline at end of file +}