createStub(SystemStoreConfigurationService::class); $stores->method('list')->willReturn([ 'previews' => new StoreReference('local', 'default', 'previews'), ]); $tester = new CommandTester(new TenantStoreListCommand($stores)); $status = $tester->execute(['tenant' => 'tenant-a']); self::assertSame(Command::SUCCESS, $status); self::assertStringContainsString('previews', $tester->getDisplay()); self::assertStringContainsString('local', $tester->getDisplay()); } #[Test] public function configuresATenantStore(): void { $stores = $this->createMock(SystemStoreConfigurationService::class); $stores->expects(self::once()) ->method('set') ->with('tenant-a', 'previews', 'local', 'default', 'previews') ->willReturn(new StoreReference('local', 'default', 'previews')); $tester = new CommandTester(new TenantStoreSetCommand($stores, new NullLogger())); $status = $tester->execute([ 'tenant' => 'tenant-a', 'name' => 'previews', 'provider' => 'local', 'service' => 'default', 'namespace' => 'previews', ]); self::assertSame(Command::SUCCESS, $status); self::assertStringContainsString('configured', $tester->getDisplay()); } #[Test] public function removesATenantStore(): void { $stores = $this->createMock(SystemStoreConfigurationService::class); $stores->expects(self::once())->method('remove')->with('tenant-a', 'previews')->willReturn(true); $tester = new CommandTester(new TenantStoreRemoveCommand($stores, new NullLogger())); $status = $tester->execute(['tenant' => 'tenant-a', 'name' => 'previews']); self::assertSame(Command::SUCCESS, $status); self::assertStringContainsString('removed', $tester->getDisplay()); } #[Test] public function removingAnAbsentStoreIsIdempotent(): void { $stores = $this->createStub(SystemStoreConfigurationService::class); $stores->method('remove')->willReturn(false); $tester = new CommandTester(new TenantStoreRemoveCommand($stores, new NullLogger())); $status = $tester->execute(['tenant' => 'tenant-a', 'name' => 'previews']); self::assertSame(Command::SUCCESS, $status); self::assertStringContainsString('not configured', $tester->getDisplay()); } }