Skip to content

Commit

Permalink
Merge 4.x into 5.x
Browse files Browse the repository at this point in the history
  • Loading branch information
SonataCI committed Jan 21, 2022
2 parents fa5aaee + f168853 commit 0412b42
Show file tree
Hide file tree
Showing 8 changed files with 204 additions and 10 deletions.
2 changes: 2 additions & 0 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -65,11 +65,13 @@
},
"require-dev": {
"aws/aws-sdk-php": "^3.0",
"dama/doctrine-test-bundle": "^6.7",
"doctrine/doctrine-bundle": "^2.3.2",
"doctrine/mongodb-odm": "^2.2",
"doctrine/orm": "^2.9",
"knplabs/knp-menu-bundle": "^3.0",
"liip/imagine-bundle": "^2.0",
"masterminds/html5": "^2.7",
"matthiasnoback/symfony-config-test": "^4.2",
"matthiasnoback/symfony-dependency-injection-test": "^4.0",
"phpstan/extension-installer": "^1.0",
Expand Down
4 changes: 4 additions & 0 deletions phpunit.xml.dist
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,10 @@ It's auto-generated by sonata-project/dev-kit package.
<listener class="Symfony\Bridge\PhpUnit\SymfonyTestsListener"/>
</listeners>

<extensions>
<extension class="DAMA\DoctrineTestBundle\PHPUnit\PHPUnitExtension" />
</extensions>

<php>
<ini name="precision" value="8" />
<env name="SYMFONY_DEPRECATIONS_HELPER" value="max[self]=0" />
Expand Down
2 changes: 1 addition & 1 deletion src/DependencyInjection/Configuration.php
Original file line number Diff line number Diff line change
Expand Up @@ -288,7 +288,7 @@ private function addProvidersSection(ArrayNodeDefinition $node): void
->scalarNode('filesystem')->defaultValue('sonata.media.filesystem.local')->end()
->scalarNode('cdn')->defaultValue('sonata.media.cdn.server')->end()
->scalarNode('generator')->defaultValue('sonata.media.generator.default')->end()
->scalarNode('thumbnail')->defaultValue('sonata.media.thumbnail.format')->end()
->scalarNode('thumbnail')->defaultValue('sonata.media.thumbnail.file')->end()
->arrayNode('allowed_extensions')
->prototype('scalar')->end()
->defaultValue([
Expand Down
4 changes: 4 additions & 0 deletions tests/App/AppKernel.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,14 @@

namespace Sonata\MediaBundle\Tests\App;

use DAMA\DoctrineTestBundle\DAMADoctrineTestBundle;
use Doctrine\Bundle\DoctrineBundle\DoctrineBundle;
use Knp\Bundle\MenuBundle\KnpMenuBundle;
use Sonata\AdminBundle\SonataAdminBundle;
use Sonata\BlockBundle\SonataBlockBundle;
use Sonata\Doctrine\Bridge\Symfony\SonataDoctrineBundle;
use Sonata\DoctrineORMAdminBundle\SonataDoctrineORMAdminBundle;
use Sonata\Form\Bridge\Symfony\SonataFormBundle;
use Sonata\MediaBundle\SonataMediaBundle;
use Sonata\Twig\Bridge\Symfony\SonataTwigBundle;
use Symfony\Bundle\FrameworkBundle\FrameworkBundle;
Expand Down Expand Up @@ -49,9 +51,11 @@ public function registerBundles(): iterable
{
return [
new DoctrineBundle(),
new DAMADoctrineTestBundle(),
new FrameworkBundle(),
new KnpMenuBundle(),
new SecurityBundle(),
new SonataFormBundle(),
new SonataTwigBundle(),
new SonataAdminBundle(),
new SonataBlockBundle(),
Expand Down
10 changes: 5 additions & 5 deletions tests/App/Resources/config/services.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,10 @@

return static function (ContainerConfigurator $containerConfigurator): void {
// Use "service" function for creating references to services when dropping support for Symfony 4.4
$services = $containerConfigurator->services();
$containerConfigurator->services()

$services->set(TruncateController::class)
->public()
->tag('container.service_subscriber')
->call('setContainer', [new ReferenceConfigurator(ContainerInterface::class)]);
->set(TruncateController::class)
->public()
->tag('container.service_subscriber')
->call('setContainer', [new ReferenceConfigurator(ContainerInterface::class)]);
};
56 changes: 56 additions & 0 deletions tests/Functional/Admin/GalleryAdminTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,11 @@
namespace Sonata\MediaBundle\Tests\Functional\Admin;

use Doctrine\ORM\EntityManagerInterface;
use Sonata\MediaBundle\Model\MediaInterface;
use Sonata\MediaBundle\Tests\App\AppKernel;
use Sonata\MediaBundle\Tests\App\Entity\Gallery;
use Sonata\MediaBundle\Tests\App\Entity\GalleryItem;
use Sonata\MediaBundle\Tests\App\Entity\Media;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;

final class GalleryAdminTest extends WebTestCase
Expand Down Expand Up @@ -44,6 +47,43 @@ public static function provideCrudUrlsCases(): iterable
yield 'List Gallery' => ['/admin/tests/app/gallery/list'];
yield 'Create Gallery' => ['/admin/tests/app/gallery/create'];
yield 'Edit Gallery' => ['/admin/tests/app/gallery/1/edit'];
yield 'Remove Gallery' => ['/admin/tests/app/gallery/1/delete'];
}

/**
* @dataProvider provideFormUrlsCases
*
* @param array<string, mixed> $parameters
* @param array<string, mixed> $fieldValues
*/
public function testFormsUrls(string $url, array $parameters, string $button, array $fieldValues = []): void
{
$client = self::createClient();

$this->prepareData();

$client->request('GET', $url, $parameters);
$client->submitForm($button, $fieldValues);
$client->followRedirect();

self::assertResponseIsSuccessful();
}

/**
* @return iterable<array<string|array<string, mixed>>>
*
* @phpstan-return iterable<array{0: string, 1: array<string, mixed>, 2: string, 3?: array<string, mixed>}>
*/
public static function provideFormUrlsCases(): iterable
{
yield 'Create Gallery' => ['/admin/tests/app/gallery/create', [
'uniqid' => 'gallery',
], 'btn_create_and_list', [
'gallery[name]' => 'Name',
]];

yield 'Edit Gallery' => ['/admin/tests/app/gallery/1/edit', [], 'btn_update_and_list'];
yield 'Remove Gallery' => ['/admin/tests/app/gallery/1/delete', [], 'btn_delete'];
}

/**
Expand All @@ -65,11 +105,27 @@ private function prepareData(): void
$manager = $container->get('doctrine.orm.entity_manager');
\assert($manager instanceof EntityManagerInterface);

$media = new Media();
$media->setName('name.jpg');
$media->setProviderStatus(MediaInterface::STATUS_OK);
$media->setContext('default');
$media->setProviderReference('name.jpg');
$media->setProviderName('sonata.media.provider.image');
$media->setBinaryContent(realpath(__DIR__.'/../../Fixtures/logo.png'));

$gallery = new Gallery();
$gallery->setName('name');
$gallery->setContext('default');

$galleryItem = new GalleryItem();
$galleryItem->setMedia($media);
$galleryItem->setGallery($gallery);
$galleryItem->setPosition(1);

$manager->persist($media);
$manager->persist($gallery);
$manager->persist($galleryItem);

$manager->flush();
}
}
38 changes: 38 additions & 0 deletions tests/Functional/Admin/GalleryItemAdminTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,43 @@ public static function provideCrudUrlsCases(): iterable
yield 'List Gallery Item' => ['/admin/tests/app/galleryitem/list'];
yield 'Create Gallery Item' => ['/admin/tests/app/galleryitem/create'];
yield 'Edit Gallery Item' => ['/admin/tests/app/galleryitem/1/edit'];
yield 'Remove Gallery Item' => ['/admin/tests/app/galleryitem/1/delete'];
}

/**
* @dataProvider provideFormUrlsCases
*
* @param array<string, mixed> $parameters
* @param array<string, mixed> $fieldValues
*/
public function testFormsUrls(string $url, array $parameters, string $button, array $fieldValues = []): void
{
$client = self::createClient();

$this->prepareData();

$client->request('GET', $url, $parameters);
$client->submitForm($button, $fieldValues);
$client->followRedirect();

self::assertResponseIsSuccessful();
}

/**
* @return iterable<array<string|array<string, mixed>>>
*
* @phpstan-return iterable<array{0: string, 1: array<string, mixed>, 2: string, 3?: array<string, mixed>}>
*/
public static function provideFormUrlsCases(): iterable
{
yield 'Create Gallery Item' => ['/admin/tests/app/galleryitem/create', [
'uniqid' => 'galleryItem',
], 'btn_create_and_list', [
'galleryItem[media]' => 1,
]];

yield 'Edit Gallery Item' => ['/admin/tests/app/galleryitem/1/edit', [], 'btn_update_and_list'];
yield 'Remove Gallery Item' => ['/admin/tests/app/galleryitem/1/delete', [], 'btn_delete'];
}

/**
Expand Down Expand Up @@ -88,6 +125,7 @@ private function prepareData(): void
$manager->persist($media);
$manager->persist($gallery);
$manager->persist($galleryItem);

$manager->flush();
}
}
98 changes: 94 additions & 4 deletions tests/Functional/Admin/MediaAdminTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,31 +23,120 @@ final class MediaAdminTest extends WebTestCase
{
/**
* @dataProvider provideCrudUrlsCases
*
* @param array<string, mixed> $parameters
*/
public function testCrudUrls(string $url): void
public function testCrudUrls(string $url, array $parameters = []): void
{
$client = self::createClient();

$this->prepareData();

$client->request('GET', $url);
$client->request('GET', $url, $parameters);

self::assertResponseIsSuccessful();
}

/**
* @return iterable<string[]>
* @return iterable<array<string|array<string, mixed>>>
*
* @phpstan-return iterable<array{string}>
* @phpstan-return iterable<array{0: string, 1?: array<string, mixed>}>
*/
public static function provideCrudUrlsCases(): iterable
{
yield 'List Media' => ['/admin/tests/app/media/list'];
yield 'Create Media' => ['/admin/tests/app/media/create'];

yield 'Create Media Image' => ['/admin/tests/app/media/create', [
'provider' => 'sonata.media.provider.image',
]];

yield 'Create Media File' => ['/admin/tests/app/media/create', [
'provider' => 'sonata.media.provider.file',
]];

yield 'Create Media Vimeo' => ['/admin/tests/app/media/create', [
'provider' => 'sonata.media.provider.vimeo',
]];

yield 'Create Media Youtube' => ['/admin/tests/app/media/create', [
'provider' => 'sonata.media.provider.youtube',
]];

yield 'Create Media Dailymotion' => ['/admin/tests/app/media/create', [
'provider' => 'sonata.media.provider.dailymotion',
]];

yield 'Edit Media' => ['/admin/tests/app/media/1/edit'];
yield 'Remove Media' => ['/admin/tests/app/media/1/delete'];
yield 'Download Media' => ['/media/download/1'];
}

/**
* @dataProvider provideFormUrlsCases
*
* @param array<string, mixed> $parameters
* @param array<string, mixed> $fieldValues
*/
public function testFormsUrls(string $url, array $parameters, string $button, array $fieldValues = []): void
{
$client = self::createClient();

$this->prepareData();

$client->request('GET', $url, $parameters);
$client->submitForm($button, $fieldValues);
$client->followRedirect();

self::assertResponseIsSuccessful();
}

/**
* @return iterable<array<string|array<string, mixed>>>
*
* @phpstan-return iterable<array{0: string, 1: array<string, mixed>, 2: string, 3?: array<string, mixed>}>
*/
public static function provideFormUrlsCases(): iterable
{
yield 'Create Media Image' => ['/admin/tests/app/media/create', [
'provider' => 'sonata.media.provider.image',
'uniqid' => 'media',
], 'btn_create_and_list', [
'media[binaryContent]' => __DIR__.'/../../Fixtures/logo.png',
]];

yield 'Create Media File' => ['/admin/tests/app/media/create', [
'provider' => 'sonata.media.provider.file',
'uniqid' => 'media',
], 'btn_create_and_list', [
'media[binaryContent]' => __DIR__.'/../../Fixtures/file.txt',
]];

yield 'Create Media Vimeo' => ['/admin/tests/app/media/create', [
'provider' => 'sonata.media.provider.vimeo',
'uniqid' => 'media',
], 'btn_create_and_list', [
'media[binaryContent]' => 'https://vimeo.com/236357509',
]];

yield 'Create Media Youtube' => ['/admin/tests/app/media/create', [
'provider' => 'sonata.media.provider.youtube',
'uniqid' => 'media',
], 'btn_create_and_list', [
'media[binaryContent]' => 'https://www.youtube.com/watch?v=WsZWdVj5uTI',
]];

yield 'Create Media Dailymotion' => ['/admin/tests/app/media/create', [
'provider' => 'sonata.media.provider.dailymotion',
'uniqid' => 'media',
], 'btn_create_and_list', [
'media[binaryContent]' => 'https://www.dailymotion.com/video/x5slhr8',
]];

yield 'Edit Media' => ['/admin/tests/app/media/1/edit', [], 'btn_update_and_list'];
yield 'Remove Media' => ['/admin/tests/app/media/1/delete', [], 'btn_delete'];
}

/**
* @return class-string<\Symfony\Component\HttpKernel\KernelInterface>
*/
Expand Down Expand Up @@ -76,6 +165,7 @@ private function prepareData(): void
$media->setBinaryContent(realpath(__DIR__.'/../../Fixtures/logo.png'));

$manager->persist($media);

$manager->flush();
}
}

0 comments on commit 0412b42

Please sign in to comment.