Вход Регистрация
Файл: vendor/symfony/translation/Test/ProviderFactoryTestCase.php
Строк: 196
<?php

/*
 * This file is part of the Symfony package.
 *
 * (c) Fabien Potencier <fabien@symfony.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace SymfonyComponentTranslationTest;

use 
PHPUnitFrameworkTestCase;
use 
PsrLogLoggerInterface;
use 
SymfonyComponentHttpClientMockHttpClient;
use 
SymfonyComponentTranslationDumperXliffFileDumper;
use 
SymfonyComponentTranslationExceptionIncompleteDsnException;
use 
SymfonyComponentTranslationExceptionUnsupportedSchemeException;
use 
SymfonyComponentTranslationLoaderLoaderInterface;
use 
SymfonyComponentTranslationProviderDsn;
use 
SymfonyComponentTranslationProviderProviderFactoryInterface;
use 
SymfonyContractsHttpClientHttpClientInterface;

/**
 * A test case to ease testing a translation provider factory.
 *
 * @author Mathieu Santostefano <msantostefano@protonmail.com>
 *
 * @internal
 */
abstract class ProviderFactoryTestCase extends TestCase
{
    protected 
$client;
    protected 
$logger;
    protected 
string $defaultLocale;
    protected 
$loader;
    protected 
$xliffFileDumper;

    abstract public function 
createFactory(): ProviderFactoryInterface;

    
/**
     * @return iterable<array{0: bool, 1: string}>
     */
    
abstract public function supportsProvider(): iterable;

    
/**
     * @return iterable<array{0: string, 1: string, 2: TransportInterface}>
     */
    
abstract public function createProvider(): iterable;

    
/**
     * @return iterable<array{0: string, 1: string|null}>
     */
    
public function unsupportedSchemeProvider(): iterable
    
{
        return [];
    }

    
/**
     * @return iterable<array{0: string, 1: string|null}>
     */
    
public function incompleteDsnProvider(): iterable
    
{
        return [];
    }

    
/**
     * @dataProvider supportsProvider
     */
    
public function testSupports(bool $expectedstring $dsn)
    {
        
$factory $this->createFactory();

        
$this->assertSame($expected$factory->supports(new Dsn($dsn)));
    }

    
/**
     * @dataProvider createProvider
     */
    
public function testCreate(string $expectedstring $dsn)
    {
        
$factory $this->createFactory();
        
$provider $factory->create(new Dsn($dsn));

        
$this->assertSame($expected, (string) $provider);
    }

    
/**
     * @dataProvider unsupportedSchemeProvider
     */
    
public function testUnsupportedSchemeException(string $dsnstring $message null)
    {
        
$factory $this->createFactory();

        
$dsn = new Dsn($dsn);

        
$this->expectException(UnsupportedSchemeException::class);
        if (
null !== $message) {
            
$this->expectExceptionMessage($message);
        }

        
$factory->create($dsn);
    }

    
/**
     * @dataProvider incompleteDsnProvider
     */
    
public function testIncompleteDsnException(string $dsnstring $message null)
    {
        
$factory $this->createFactory();

        
$dsn = new Dsn($dsn);

        
$this->expectException(IncompleteDsnException::class);
        if (
null !== $message) {
            
$this->expectExceptionMessage($message);
        }

        
$factory->create($dsn);
    }

    protected function 
getClient(): HttpClientInterface
    
{
        return 
$this->client ??= new MockHttpClient();
    }

    protected function 
getLogger(): LoggerInterface
    
{
        return 
$this->logger ??= $this->createMock(LoggerInterface::class);
    }

    protected function 
getDefaultLocale(): string
    
{
        return 
$this->defaultLocale ??= 'en';
    }

    protected function 
getLoader(): LoaderInterface
    
{
        return 
$this->loader ??= $this->createMock(LoaderInterface::class);
    }

    protected function 
getXliffFileDumper(): XliffFileDumper
    
{
        return 
$this->xliffFileDumper ??= $this->createMock(XliffFileDumper::class);
    }
}
Онлайн: 0
Реклама