Skip to content

Commit

Permalink
Only register SearchController when search is enabled
Browse files Browse the repository at this point in the history
  • Loading branch information
loevgaard committed Jul 9, 2024
1 parent 02478a2 commit c92bf5f
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 3 deletions.
7 changes: 5 additions & 2 deletions src/DependencyInjection/SetonoSyliusMeilisearchExtension.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
use Setono\SyliusMeilisearchPlugin\Provider\IndexScope\IndexScopeProviderInterface;
use Setono\SyliusMeilisearchPlugin\UrlGenerator\EntityUrlGeneratorInterface;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\Config\Loader\LoaderInterface;
use Symfony\Component\DependencyInjection\Compiler\ServiceLocatorTagPass;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Definition;
Expand Down Expand Up @@ -63,7 +64,7 @@ public function load(array $configs, ContainerBuilder $container): void
->addTag('setono_sylius_meilisearch.url_generator');

self::registerIndexesConfiguration($config['indexes'], $container);
self::registerSearchConfiguration($config['search'], array_keys($config['indexes']), $container);
self::registerSearchConfiguration($config['search'], array_keys($config['indexes']), $container, $loader);
}

public function prepend(ContainerBuilder $container): void
Expand Down Expand Up @@ -141,7 +142,7 @@ private static function registerDefaultIndexer(ContainerBuilder $container, stri
* @param array{ enabled: bool, path: string, index: string, hits_per_page: integer } $config the search configuration
* @param list<string> $indexes a list of index names
*/
private static function registerSearchConfiguration(array $config, array $indexes, ContainerBuilder $container): void
private static function registerSearchConfiguration(array $config, array $indexes, ContainerBuilder $container, LoaderInterface $loader): void
{
$container->setParameter('setono_sylius_meilisearch.search.enabled', $config['enabled']);

Expand All @@ -160,5 +161,7 @@ private static function registerSearchConfiguration(array $config, array $indexe
$container->setParameter('setono_sylius_meilisearch.search.path', $config['path']);
$container->setParameter('setono_sylius_meilisearch.search.index', $config['index']);
$container->setParameter('setono_sylius_meilisearch.search.hits_per_page', $config['hits_per_page']);

$loader->load('services/conditional/search.xml');
}
}
1 change: 0 additions & 1 deletion src/Resources/config/services.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
<import resource="services/client.xml"/>
<import resource="services/command.xml"/>
<import resource="services/config.xml"/>
<import resource="services/controller.xml"/>
<import resource="services/data_mapper.xml"/>
<import resource="services/event_subscriber.xml"/>
<import resource="services/filter.xml"/>
Expand Down
30 changes: 30 additions & 0 deletions tests/DependencyInjection/SetonoSyliusMeilisearchExtensionTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,10 @@
namespace Setono\SyliusMeilisearchPlugin\Tests\DependencyInjection;

use Matthias\SymfonyDependencyInjectionTest\PhpUnit\AbstractExtensionTestCase;
use Setono\SyliusMeilisearchPlugin\Controller\SearchController;
use Setono\SyliusMeilisearchPlugin\DependencyInjection\SetonoSyliusMeilisearchExtension;
use Setono\SyliusMeilisearchPlugin\Document\Product as ProductDocument;
use Setono\SyliusMeilisearchPlugin\Tests\Application\Entity\Product as ProductEntity;

/**
* See examples of tests and configuration options here: https://github.com/SymfonyTest/SymfonyDependencyInjectionTest
Expand All @@ -27,6 +30,7 @@ public function it_loads_without_any_configuration(): void
$this->load();

$this->assertContainerBuilderHasParameter('setono_sylius_meilisearch.search.enabled', false);
$this->assertContainerBuilderNotHasService(SearchController::class);
}

/**
Expand Down Expand Up @@ -57,4 +61,30 @@ public function it_throws_exception_if_search_index_is_not_configured(): void
],
]);
}

/**
* @test
*/
public function it_configures_search(): void
{
$this->load([
'indexes' => [
'products' => [
'document' => ProductDocument::class,
'entities' => [ProductEntity::class],
],
],
'search' => [
'path' => 'search',
'index' => 'products',
'hits_per_page' => 120,
],
]);

$this->assertContainerBuilderHasParameter('setono_sylius_meilisearch.search.path', 'search');
$this->assertContainerBuilderHasParameter('setono_sylius_meilisearch.search.index', 'products');
$this->assertContainerBuilderHasParameter('setono_sylius_meilisearch.search.hits_per_page', 120);
$this->assertContainerBuilderHasParameter('setono_sylius_meilisearch.search.enabled', true);
$this->assertContainerBuilderHasService(SearchController::class);
}
}

0 comments on commit c92bf5f

Please sign in to comment.