-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathConfigurationTest.php
More file actions
85 lines (71 loc) · 2.91 KB
/
Copy pathConfigurationTest.php
File metadata and controls
85 lines (71 loc) · 2.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<?php
declare(strict_types=1);
namespace Netgen\Bundle\RemoteMediaBundle\Tests\Controller;
use Netgen\Bundle\RemoteMediaBundle\Controller\Configuration as ConfigurationController;
use Netgen\RemoteMedia\Core\Provider\Cloudinary\CloudinaryProvider;
use Netgen\RemoteMedia\Core\Resolver\Variation as VariationResolver;
use Netgen\RemoteMedia\Core\Transformation\Registry;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\RouterInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
use function json_decode;
#[CoversClass(ConfigurationController::class)]
final class ConfigurationTest extends TestCase
{
private MockObject|RouterInterface $routerMock;
private MockObject|TranslatorInterface $translatorMock;
private MockObject|VariationResolver $variationResolverMock;
protected function setUp(): void
{
$this->routerMock = $this->createMock(RouterInterface::class);
$this->translatorMock = $this->createMock(TranslatorInterface::class);
$this->variationResolverMock = new VariationResolver(
new Registry(),
null,
[],
);
}
/**
* @dataProvider folderScopedUploadsDataProvider
*/
public function testFolderScopedUploads(string $folderMode, bool $appendFolderPath, bool $expected): void
{
$controller = new ConfigurationController(
$this->routerMock,
$this->translatorMock,
$this->variationResolverMock,
$folderMode,
$appendFolderPath,
);
$response = $controller->__invoke(new Request());
$data = json_decode((string) $response->getContent(), true);
self::assertSame($expected, $data['folderScopedUploads']);
}
public static function folderScopedUploadsDataProvider(): iterable
{
return [
[CloudinaryProvider::FOLDER_MODE_FIXED, false, true],
[CloudinaryProvider::FOLDER_MODE_DYNAMIC, false, false],
[CloudinaryProvider::FOLDER_MODE_DYNAMIC, true, true],
[CloudinaryProvider::FOLDER_MODE_FIXED, true, true],
];
}
public function testTranslationsExist(): void
{
$controller = new ConfigurationController(
$this->routerMock,
$this->translatorMock,
$this->variationResolverMock,
CloudinaryProvider::FOLDER_MODE_FIXED,
false,
);
$this->translatorMock->method('trans')->willReturn('translated string');
$response = $controller->__invoke(new Request());
$data = json_decode((string) $response->getContent(), true);
self::assertArrayHasKey('upload_error_existing_resource', $data['translations']);
self::assertArrayHasKey('upload_error_existing_resource_in_folder', $data['translations']);
}
}