Skip to content

Commit 6f0fcc2

Browse files
committed
Remove autowiring
1 parent 3841fb0 commit 6f0fcc2

File tree

9 files changed

+92
-101
lines changed

9 files changed

+92
-101
lines changed

config/services.xml

Lines changed: 43 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,26 +4,35 @@
44
xsi:schemaLocation="http://symfony.com/schema/dic/services https://symfony.com/schema/dic/services/services-1.0.xsd">
55

66
<services>
7-
<defaults autowire="true" autoconfigure="true" />
7+
<service id="meilisearch.engine" class="Meilisearch\Bundle\Engine">
8+
<argument type="service" id="meilisearch.client" />
9+
</service>
810

9-
<prototype namespace="Meilisearch\Bundle\Command\" resource="../src/Command" />
11+
<!-- After bumping to Symfony >5.1 deeprecate public services into private services -->
12+
<service id="meilisearch.service" class="Meilisearch\Bundle\Services\MeilisearchService" public="true">
13+
<argument /><!-- After bumping to Symfony 5.1 use type="abstract" -->
14+
<argument type="service" id="meilisearch.engine" />
15+
<argument type="collection" /><!-- After bumping to Symfony 5.1 use type="abstract" -->
16+
<argument type="service" id="property_accessor" />
17+
</service>
18+
<service id="search.service" alias="meilisearch.service" public="true">
19+
<deprecated package="meilisearch/search-bundle" version="0.14">The "%alias_id%" service alias is deprecated. Use "meilisearch.service" instead.</deprecated>
20+
</service>
1021

11-
<service id="meilisearch.search_indexer_subscriber"
12-
class="Meilisearch\Bundle\EventListener\DoctrineEventSubscriber"
13-
public="true">
22+
<service id="meilisearch.search_indexer_subscriber" class="Meilisearch\Bundle\EventListener\DoctrineEventSubscriber" public="true">
1423
<argument type="service" id="meilisearch.service" />
1524
</service>
1625
<service id="search.search_indexer_subscriber" alias="meilisearch.search_indexer_subscriber">
1726
<deprecated package="meilisearch/search-bundle" version="0.14">The "%alias_id%" service alias is deprecated. Use "meilisearch.search_indexer_subscriber" instead.</deprecated>
1827
</service>
1928

2029
<service id="meilisearch.client" class="Meilisearch\Client" public="true" lazy="true">
21-
<argument key="$url">%meili_url%</argument>
22-
<argument key="$apiKey">%meili_api_key%</argument>
23-
<argument key="$httpClient" type="service" id="psr18.http_client" on-invalid="ignore" />
24-
<argument key="$clientAgents" type="collection">
25-
<argument>%meili_symfony_version%</argument>
26-
</argument>
30+
<argument /><!-- url -->
31+
<argument /><!-- api key -->
32+
<argument type="service" id="psr18.http_client" on-invalid="ignore" /><!-- http client -->
33+
<argument>null</argument><!-- request factory -->
34+
<argument /><!-- client agents -->
35+
<argument>null</argument><!-- stream factory -->
2736
</service>
2837
<service id="search.client" alias="meilisearch.client" public="true">
2938
<deprecated package="meilisearch/search-bundle" version="0.14">The "%alias_id%" service alias is deprecated. Use "meilisearch.client" instead.</deprecated>
@@ -34,5 +43,28 @@
3443
<deprecated package="meilisearch/search-bundle" version="0.14">The "%alias_id%" service alias is deprecated. Use "meilisearch.client" instead.</deprecated>
3544
</service>
3645
<service id="Meilisearch\Bundle\SearchService" alias="meilisearch.service" />
46+
47+
<service id="Meilisearch\Bundle\Command\MeilisearchClearCommand">
48+
<argument type="service" id="meilisearch.service" />
49+
<tag name="console.command" />
50+
</service>
51+
52+
<service id="Meilisearch\Bundle\Command\MeilisearchCreateCommand">
53+
<argument type="service" id="meilisearch.service" />
54+
<argument type="service" id="meilisearch.client" />
55+
<tag name="console.command" />
56+
</service>
57+
58+
<service id="Meilisearch\Bundle\Command\MeilisearchDeleteCommand">
59+
<argument type="service" id="meilisearch.service" />
60+
<tag name="console.command" />
61+
</service>
62+
63+
<service id="Meilisearch\Bundle\Command\MeilisearchImportCommand">
64+
<argument type="service" id="meilisearch.service" />
65+
<argument type="service" id="doctrine" />
66+
<argument type="service" id="meilisearch.client" />
67+
<tag name="console.command" />
68+
</service>
3769
</services>
3870
</container>

src/DependencyInjection/Configuration.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@ public function getConfigTreeBuilder(): TreeBuilder
1717

1818
$rootNode
1919
->children()
20-
->scalarNode('url')->end()
20+
->scalarNode('url')->defaultValue('http://localhost:7700')->end()
2121
->scalarNode('api_key')->end()
2222
->scalarNode('prefix')
23-
->defaultValue(null)
23+
->defaultNull()
2424
->end()
2525
->scalarNode('nbResults')
2626
->defaultValue(20)

src/DependencyInjection/MeilisearchExtension.php

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,9 @@
44

55
namespace Meilisearch\Bundle\DependencyInjection;
66

7-
use Meilisearch\Bundle\Engine;
87
use Meilisearch\Bundle\MeilisearchBundle;
9-
use Meilisearch\Bundle\Services\MeilisearchService;
108
use Symfony\Component\Config\FileLocator;
119
use Symfony\Component\DependencyInjection\ContainerBuilder;
12-
use Symfony\Component\DependencyInjection\Definition;
1310
use Symfony\Component\DependencyInjection\Loader;
1411
use Symfony\Component\DependencyInjection\Reference;
1512
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
@@ -47,15 +44,14 @@ public function load(array $configs, ContainerBuilder $container): void
4744
$container->removeDefinition('meilisearch.search_indexer_subscriber');
4845
}
4946

50-
$engineDefinition = new Definition(Engine::class, [new Reference('meilisearch.client')]);
47+
$container->findDefinition('meilisearch.client')
48+
->replaceArgument(0, $config['url'])
49+
->replaceArgument(1, $config['api_key'])
50+
->replaceArgument(4, [MeilisearchBundle::qualifiedVersion()]);
5151

52-
$searchDefinition = (new Definition(
53-
MeilisearchService::class,
54-
[new Reference($config['serializer']), $engineDefinition, $config]
55-
));
56-
57-
$container->setDefinition('meilisearch.service', $searchDefinition->setPublic(true));
58-
$container->setAlias('search.service', 'meilisearch.service')->setPublic(true);
52+
$container->findDefinition('meilisearch.service')
53+
->replaceArgument(0, new Reference($config['serializer']))
54+
->replaceArgument(2, $config);
5955
}
6056

6157
/**

src/Services/MeilisearchService.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,15 @@
1515
use Meilisearch\Bundle\SearchService;
1616
use Symfony\Component\Config\Definition\Exception\Exception;
1717
use Symfony\Component\PropertyAccess\PropertyAccess;
18-
use Symfony\Component\PropertyAccess\PropertyAccessor;
18+
use Symfony\Component\PropertyAccess\PropertyAccessorInterface;
1919
use Symfony\Component\Serializer\Normalizer\NormalizerInterface;
2020

2121
final class MeilisearchService implements SearchService
2222
{
2323
private NormalizerInterface $normalizer;
2424
private Engine $engine;
2525
private Collection $configuration;
26-
private PropertyAccessor $propertyAccessor;
26+
private PropertyAccessorInterface $propertyAccessor;
2727
/**
2828
* @var list<class-string>
2929
*/
@@ -42,12 +42,12 @@ final class MeilisearchService implements SearchService
4242
private array $classToSerializerGroup;
4343
private array $indexIfMapping;
4444

45-
public function __construct(NormalizerInterface $normalizer, Engine $engine, array $configuration)
45+
public function __construct(NormalizerInterface $normalizer, Engine $engine, array $configuration, PropertyAccessorInterface $propertyAccessor = null)
4646
{
4747
$this->normalizer = $normalizer;
4848
$this->engine = $engine;
4949
$this->configuration = new Collection($configuration);
50-
$this->propertyAccessor = PropertyAccess::createPropertyAccessor();
50+
$this->propertyAccessor = $propertyAccessor ?? PropertyAccess::createPropertyAccessor();
5151

5252
$this->setSearchableEntities();
5353
$this->setAggregatorsAndEntitiesAggregators();

tests/BaseKernelTestCase.php

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,7 @@ protected function setUp(): void
3939
$this->cleanUp();
4040
}
4141

42-
/**
43-
* @param int|string|null $id
44-
*/
45-
protected function createPost($id = null): Post
42+
protected function createPost(int $id = null): Post
4643
{
4744
$post = new Post();
4845
$post->setTitle('Test Post');
@@ -83,10 +80,7 @@ protected function createSearchablePost(): SearchableEntity
8380
);
8481
}
8582

86-
/**
87-
* @param int|string|null $id
88-
*/
89-
protected function createComment($id = null): Comment
83+
protected function createComment(int $id = null): Comment
9084
{
9185
$post = new Post(['title' => 'What a post!']);
9286
$comment = new Comment();
@@ -104,10 +98,7 @@ protected function createComment($id = null): Comment
10498
return $comment;
10599
}
106100

107-
/**
108-
* @param int|string|null $id
109-
*/
110-
protected function createImage($id = null): Image
101+
protected function createImage(int $id = null): Image
111102
{
112103
$image = new Image();
113104
$image->setUrl('https://docs.meilisearch.com/logo.png');

tests/Integration/DependencyInjectionTest.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,14 @@ protected function getContainerExtensions(): array
1919

2020
public function testHasMeilisearchVersionDefinitionAfterLoad(): void
2121
{
22-
$this->load();
22+
$this->load(['url' => 'http://meilisearch:7700', 'api_key' => null]);
2323

24-
$this->assertContainerBuilderHasServiceDefinitionWithArgument('meilisearch.client', '$clientAgents', ['%meili_symfony_version%']);
24+
$this->assertContainerBuilderHasServiceDefinitionWithArgument('meilisearch.client', 4, [MeilisearchBundle::qualifiedVersion()]);
2525
}
2626

2727
public function testHasMeilisearchVersionFromConstantAfterLoad(): void
2828
{
29-
$this->load();
29+
$this->load(['url' => 'http://meilisearch:7700', 'api_key' => null]);
3030

3131
$this->assertContainerBuilderHasParameter('meili_symfony_version', MeilisearchBundle::qualifiedVersion());
3232
}

tests/Integration/EventListener/DoctrineEventSubscriberTest.php

Lines changed: 24 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@
44

55
namespace Meilisearch\Bundle\Tests\Integration\EventListener;
66

7-
use Doctrine\Persistence\Event\LifecycleEventArgs;
8-
use Meilisearch\Bundle\EventListener\DoctrineEventSubscriber;
97
use Meilisearch\Bundle\Tests\BaseKernelTestCase;
108
use Meilisearch\Bundle\Tests\Entity\Page;
119
use Meilisearch\Bundle\Tests\Entity\Post;
@@ -15,115 +13,88 @@ class DoctrineEventSubscriberTest extends BaseKernelTestCase
1513
{
1614
protected Client $client;
1715

18-
/**
19-
* @throws \Exception
20-
*/
2116
public function setUp(): void
2217
{
2318
parent::setUp();
2419

2520
$this->client = $this->get('meilisearch.client');
2621
}
2722

28-
/**
29-
* This tests creates two posts in the database, but only one is triggered via an event to Meilisearch.
30-
*/
3123
public function testPostPersist(): void
3224
{
33-
$this->createPost();
3425
$post = $this->createPost();
3526

36-
$eventArgs = new LifecycleEventArgs($post, $this->entityManager);
37-
38-
$subscriber = new DoctrineEventSubscriber($this->searchService);
39-
$subscriber->postPersist($eventArgs);
40-
4127
$this->waitForAllTasks();
4228

4329
$result = $this->searchService->search($this->entityManager, Post::class, $post->getTitle());
4430

4531
$this->assertCount(1, $result);
46-
$this->assertSame(2, $result[0]->getId());
32+
$this->assertSame($post->getId(), $result[0]->getId());
4733
}
4834

4935
public function testPostPersistWithObjectId(): void
5036
{
51-
$this->createPage(1);
52-
$page = $this->createPage(2);
53-
54-
$eventArgs = new LifecycleEventArgs($page, $this->entityManager);
55-
56-
$subscriber = new DoctrineEventSubscriber($this->searchService);
57-
$subscriber->postPersist($eventArgs);
37+
$page = $this->createPage(1);
5838

5939
$this->waitForAllTasks();
6040

6141
$result = $this->searchService->search($this->entityManager, Page::class, $page->getTitle());
6242

6343
$this->assertCount(1, $result);
64-
$this->assertSame((string) $page->getId(), (string) $result[0]->getId());
44+
$this->assertEquals($page->getId(), $result[0]->getId());
6545
}
6646

67-
/**
68-
* This tests creates two posts in the database, but only one is triggered via an event to Meilisearch.
69-
*/
7047
public function testPostUpdate(): void
7148
{
72-
$this->createPost();
7349
$post = $this->createPost();
7450

75-
$eventArgs = new LifecycleEventArgs($post, $this->entityManager);
51+
$this->waitForAllTasks();
52+
53+
$post->setTitle('Better post');
7654

77-
$subscriber = new DoctrineEventSubscriber($this->searchService);
78-
$subscriber->postUpdate($eventArgs);
55+
$this->entityManager->flush();
7956

8057
$this->waitForAllTasks();
8158

82-
$result = $this->searchService->search($this->entityManager, Post::class, $post->getTitle());
59+
$result = $this->searchService->search($this->entityManager, Post::class, 'better');
8360

8461
$this->assertCount(1, $result);
85-
$this->assertSame(2, $result[0]->getId());
62+
$this->assertSame($post->getId(), $result[0]->getId());
63+
$this->assertSame('Better post', $result[0]->getTitle());
8664
}
8765

8866
public function testPostUpdateWithObjectId(): void
8967
{
90-
$this->createPage(1);
91-
$page = $this->createPage(2);
68+
$page = $this->createPage(1);
9269

93-
$eventArgs = new LifecycleEventArgs($page, $this->entityManager);
70+
$this->waitForAllTasks();
71+
72+
$page->setTitle('Better page');
9473

95-
$subscriber = new DoctrineEventSubscriber($this->searchService);
96-
$subscriber->postUpdate($eventArgs);
74+
$this->entityManager->flush();
9775

9876
$this->waitForAllTasks();
9977

100-
$result = $this->searchService->search($this->entityManager, Page::class, $page->getTitle());
78+
$result = $this->searchService->search($this->entityManager, Page::class, 'better');
10179

10280
$this->assertCount(1, $result);
103-
$this->assertSame((string) $page->getId(), (string) $result[0]->getId());
81+
$this->assertEquals($page->getId(), $result[0]->getId());
82+
$this->assertSame('Better page', $result[0]->getTitle());
10483
}
10584

106-
/**
107-
* This tests creates posts in the database, send it to Meilisearch via a trigger. Afterwards Doctrines 'preRemove' event
108-
* is going to remove that entity from MS.
109-
*/
11085
public function testPreRemove(): void
11186
{
11287
$post = $this->createPost();
11388

114-
$eventArgs = new LifecycleEventArgs($post, $this->entityManager);
115-
116-
$subscriber = new DoctrineEventSubscriber($this->searchService);
117-
$subscriber->postPersist($eventArgs);
118-
11989
$this->waitForAllTasks();
12090

12191
$result = $this->searchService->search($this->entityManager, Post::class, $post->getTitle());
12292

12393
$this->assertCount(1, $result);
124-
$this->assertSame(1, $result[0]->getId());
94+
$this->assertSame($post->getId(), $result[0]->getId());
12595

126-
$subscriber->preRemove($eventArgs);
96+
$this->entityManager->remove($post);
97+
$this->entityManager->flush();
12798

12899
$this->waitForAllTasks();
129100

@@ -136,19 +107,15 @@ public function testPreRemoveWithObjectId(): void
136107
{
137108
$page = $this->createPage(1);
138109

139-
$eventArgs = new LifecycleEventArgs($page, $this->entityManager);
140-
141-
$subscriber = new DoctrineEventSubscriber($this->searchService);
142-
$subscriber->postPersist($eventArgs);
143-
144110
$this->waitForAllTasks();
145111

146112
$result = $this->searchService->search($this->entityManager, Page::class, $page->getTitle());
147113

148114
$this->assertCount(1, $result);
149-
$this->assertSame((string) $page->getId(), (string) $result[0]->getId());
115+
$this->assertEquals($page->getId(), $result[0]->getId());
150116

151-
$subscriber->preRemove($eventArgs);
117+
$this->entityManager->remove($page);
118+
$this->entityManager->flush();
152119

153120
$this->waitForAllTasks();
154121

tests/Kernel.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ protected function configureContainer(ContainerBuilder $container, LoaderInterfa
3131
} else {
3232
$loader->load(__DIR__.'/config/config_php7.yaml');
3333
}
34-
$loader->load(__DIR__.'/../config/services.xml');
3534
$loader->load(__DIR__.'/config/meilisearch.yaml');
3635

3736
if (defined(ConnectionFactory::class.'::DEFAULT_SCHEME_MAP')) {

0 commit comments

Comments
 (0)