5120, ]; private function createMockOrOverride( string $class, array $overrides ) { return $overrides[$class] ?? $this->createNoOpMock( $class ); } /** * TODO it might save code to have this helper always return a * TestingAccessWrapper? * * @param array $configOverrides Configuration options overriding default ServiceOptions config defined in * DEFAULT_CONFIG above. * @param array $serviceOverrides * * @return DataAccess */ private function createDataAccess( array $configOverrides = [], array $serviceOverrides = [] ): SiteConfig { return new DataAccess( new ServiceOptions( DataAccess::CONSTRUCTOR_OPTIONS, array_replace( self::DEFAULT_CONFIG, $configOverrides ) ), $this->createMockOrOverride( RepoGroup::class, $serviceOverrides ), $this->createMockOrOverride( BadFileLookup::class, $serviceOverrides ), $this->createMockOrOverride( HookContainer::class, $serviceOverrides ), $this->createMockOrOverride( ContentTransformer::class, $serviceOverrides ), $this->createMockOrOverride( TrackingCategories::class, $serviceOverrides ), $this->createMockOrOverride( ReadOnlyMode::class, $serviceOverrides ), $this->createMockOrOverride( ParserFactory::class, $serviceOverrides ), $this->createMockOrOverride( LinkBatchFactory::class, $serviceOverrides ) ); } public function testAddTrackingCategory() { $this->overrideConfigValue( MainConfigNames::LanguageCode, 'qqx' ); $pageConfig = $this->createMock( PageConfig::class ); $pageConfig->method( 'getLinkTarget' )->willReturn( TitleValue::tryNew( NS_MAIN, 'Main Page' ) ); $dataAccess = $this->getServiceContainer()->getParsoidDataAccess(); $parserOutput = new ParserOutput(); $dataAccess->addTrackingCategory( $pageConfig, $parserOutput, 'broken-file-category' ); $this->assertSame( [ '(broken-file-category)' ], $parserOutput->getCategoryNames() ); } }