Skip to content
This repository was archived by the owner on Jun 25, 2025. It is now read-only.

Commit 629f95c

Browse files
committed
Using repository mocks
- Fixed some public/private configuration in services
1 parent 87f0725 commit 629f95c

File tree

5 files changed

+82
-30
lines changed

5 files changed

+82
-30
lines changed

.php_cs.cache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"php":"7.1.17-1+ubuntu16.04.1+deb.sury.org+1","version":"2.11.1:v2.11.1#ad94441c17b8ef096e517acccdbf3238af8a2da8","rules":{"blank_line_after_namespace":true,"braces":{"allow_single_line_closure":true},"class_definition":{"singleLine":true},"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_constants":true,"lowercase_keywords":true,"method_argument_space":true,"no_break_comment":true,"no_closing_tag":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":true,"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"visibility_required":true,"encoding":true,"full_opening_tag":true,"binary_operator_spaces":true,"blank_line_after_opening_tag":true,"blank_line_before_statement":{"statements":["return"]},"cast_spaces":true,"class_attributes_separation":{"elements":["method"]},"concat_space":{"spacing":"none"},"declare_equal_normalize":true,"function_typehint_space":true,"include":true,"increment_style":true,"lowercase_cast":true,"magic_constant_casing":true,"native_function_casing":true,"new_with_braces":true,"no_blank_lines_after_class_opening":true,"no_blank_lines_after_phpdoc":true,"no_empty_comment":true,"no_empty_phpdoc":true,"no_empty_statement":true,"no_extra_blank_lines":{"tokens":["curly_brace_block","extra","parenthesis_brace_block","square_brace_block","throw","use"]},"no_leading_import_slash":true,"no_leading_namespace_whitespace":true,"no_mixed_echo_print":{"use":"echo"},"no_multiline_whitespace_around_double_arrow":true,"no_short_bool_cast":true,"no_singleline_whitespace_before_semicolons":true,"no_spaces_around_offset":true,"no_trailing_comma_in_list_call":true,"no_trailing_comma_in_singleline_array":true,"no_unneeded_control_parentheses":true,"no_unneeded_curly_braces":true,"no_unneeded_final_method":true,"no_unused_imports":true,"no_whitespace_before_comma_in_array":true,"no_whitespace_in_blank_line":true,"normalize_index_brace":true,"object_operator_without_whitespace":true,"php_unit_fqcn_annotation":true,"phpdoc_align":{"tags":["method","param","property","return","throws","type","var"]},"phpdoc_annotation_without_dot":true,"phpdoc_indent":true,"phpdoc_inline_tag":true,"phpdoc_no_access":true,"phpdoc_no_alias_tag":true,"phpdoc_no_empty_return":true,"phpdoc_no_package":true,"phpdoc_no_useless_inheritdoc":true,"phpdoc_return_self_reference":true,"phpdoc_scalar":true,"phpdoc_separation":true,"phpdoc_single_line_var_spacing":true,"phpdoc_summary":true,"phpdoc_to_comment":true,"phpdoc_trim":true,"phpdoc_types":true,"phpdoc_var_without_name":true,"protected_to_private":true,"return_type_declaration":true,"semicolon_after_instruction":true,"short_scalar_cast":true,"single_blank_line_before_namespace":true,"single_line_comment_style":{"comment_types":["hash"]},"single_quote":true,"space_after_semicolon":{"remove_in_empty_for_expressions":true},"standardize_increment":true,"standardize_not_equals":true,"ternary_operator_spaces":true,"trailing_comma_in_multiline_array":true,"trim_array_spaces":true,"unary_operator_spaces":true,"whitespace_after_comma_in_array":true,"yoda_style":true},"hashes":{"Twig\/MethodAccessorExtension.php":1937766330,"Twig\/AggregationTranslationExtension.php":1168064907,"Twig\/UrlBuilderExtension.php":1238295593,"DependencyInjection\/CompilerPass\/ExporterCompilerPass.php":3859400892,"DependencyInjection\/CompilerPass\/ReadTransformerCompilerPass.php":407060565,"DependencyInjection\/CompilerPass\/WriteTransformerCompilerPass.php":3787221228,"DependencyInjection\/CompilerPass\/RepositoryCompilerPass.php":2341122769,"DependencyInjection\/CompilerPass\/TagCompilerPass.php":1857409043,"DependencyInjection\/ApisearchExtension.php":2861843414,"DependencyInjection\/ApisearchConfiguration.php":699245280,"ApisearchBundle.php":452340142,"Translator\/AggregationTranslator.php":2950948888,"Command\/ExportIndexCommand.php":3413220554,"Command\/ImportIndexCommand.php":327946495,"Command\/ResetIndexCommand.php":38662220,"Tests\/Functional\/DependencyInjection\/ApisearchConfigurationTest.php":1547011225}}
1+
{"php":"7.1.17-1+ubuntu16.04.1+deb.sury.org+1","version":"2.11.1:v2.11.1#ad94441c17b8ef096e517acccdbf3238af8a2da8","rules":{"blank_line_after_namespace":true,"braces":{"allow_single_line_closure":true},"class_definition":{"singleLine":true},"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_constants":true,"lowercase_keywords":true,"method_argument_space":true,"no_break_comment":true,"no_closing_tag":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":true,"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"visibility_required":true,"encoding":true,"full_opening_tag":true,"binary_operator_spaces":true,"blank_line_after_opening_tag":true,"blank_line_before_statement":{"statements":["return"]},"cast_spaces":true,"class_attributes_separation":{"elements":["method"]},"concat_space":{"spacing":"none"},"declare_equal_normalize":true,"function_typehint_space":true,"include":true,"increment_style":true,"lowercase_cast":true,"magic_constant_casing":true,"native_function_casing":true,"new_with_braces":true,"no_blank_lines_after_class_opening":true,"no_blank_lines_after_phpdoc":true,"no_empty_comment":true,"no_empty_phpdoc":true,"no_empty_statement":true,"no_extra_blank_lines":{"tokens":["curly_brace_block","extra","parenthesis_brace_block","square_brace_block","throw","use"]},"no_leading_import_slash":true,"no_leading_namespace_whitespace":true,"no_mixed_echo_print":{"use":"echo"},"no_multiline_whitespace_around_double_arrow":true,"no_short_bool_cast":true,"no_singleline_whitespace_before_semicolons":true,"no_spaces_around_offset":true,"no_trailing_comma_in_list_call":true,"no_trailing_comma_in_singleline_array":true,"no_unneeded_control_parentheses":true,"no_unneeded_curly_braces":true,"no_unneeded_final_method":true,"no_unused_imports":true,"no_whitespace_before_comma_in_array":true,"no_whitespace_in_blank_line":true,"normalize_index_brace":true,"object_operator_without_whitespace":true,"php_unit_fqcn_annotation":true,"phpdoc_align":{"tags":["method","param","property","return","throws","type","var"]},"phpdoc_annotation_without_dot":true,"phpdoc_indent":true,"phpdoc_inline_tag":true,"phpdoc_no_access":true,"phpdoc_no_alias_tag":true,"phpdoc_no_empty_return":true,"phpdoc_no_package":true,"phpdoc_no_useless_inheritdoc":true,"phpdoc_return_self_reference":true,"phpdoc_scalar":true,"phpdoc_separation":true,"phpdoc_single_line_var_spacing":true,"phpdoc_summary":true,"phpdoc_to_comment":true,"phpdoc_trim":true,"phpdoc_types":true,"phpdoc_var_without_name":true,"protected_to_private":true,"return_type_declaration":true,"semicolon_after_instruction":true,"short_scalar_cast":true,"single_blank_line_before_namespace":true,"single_line_comment_style":{"comment_types":["hash"]},"single_quote":true,"space_after_semicolon":{"remove_in_empty_for_expressions":true},"standardize_increment":true,"standardize_not_equals":true,"ternary_operator_spaces":true,"trailing_comma_in_multiline_array":true,"trim_array_spaces":true,"unary_operator_spaces":true,"whitespace_after_comma_in_array":true,"yoda_style":true},"hashes":{"Twig\/MethodAccessorExtension.php":1937766330,"Twig\/AggregationTranslationExtension.php":1168064907,"Twig\/UrlBuilderExtension.php":1238295593,"DependencyInjection\/CompilerPass\/ExporterCompilerPass.php":3859400892,"DependencyInjection\/CompilerPass\/ReadTransformerCompilerPass.php":407060565,"DependencyInjection\/CompilerPass\/WriteTransformerCompilerPass.php":3787221228,"DependencyInjection\/CompilerPass\/RepositoryCompilerPass.php":3656156359,"DependencyInjection\/CompilerPass\/TagCompilerPass.php":1857409043,"DependencyInjection\/ApisearchExtension.php":2861843414,"DependencyInjection\/ApisearchConfiguration.php":2562035961,"ApisearchBundle.php":452340142,"Translator\/AggregationTranslator.php":2950948888,"Command\/ExportIndexCommand.php":3413220554,"Command\/ImportIndexCommand.php":327946495,"Command\/ResetIndexCommand.php":38662220,"Tests\/Functional\/DependencyInjection\/ApisearchConfigurationTest.php":379272062}}

DependencyInjection/ApisearchConfiguration.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ protected function setupTree(ArrayNodeDefinition $rootNode)
5151
->prototype('array')
5252
->children()
5353
->enumNode('adapter')
54-
->values(['http', 'http_test', 'in_memory'])
54+
->values(['http', 'http_test', 'service', 'in_memory'])
5555
->defaultValue('http')
5656
->end()
5757
->arrayNode('http')
@@ -101,39 +101,39 @@ protected function setupTree(ArrayNodeDefinition $rootNode)
101101
->addDefaultsIfNotSet()
102102
->children()
103103
->scalarNode('repository_service')
104-
->defaultNull()
104+
->defaultValue('apisearch.repository_mock')
105105
->end()
106106
->end()
107107
->end()
108108
->arrayNode('app')
109109
->addDefaultsIfNotSet()
110110
->children()
111111
->scalarNode('repository_service')
112-
->defaultNull()
112+
->defaultValue('apisearch.app_repository_mock')
113113
->end()
114114
->end()
115115
->end()
116116
->arrayNode('event')
117117
->addDefaultsIfNotSet()
118118
->children()
119119
->scalarNode('repository_service')
120-
->defaultNull()
120+
->defaultValue('apisearch.events_repository_mock')
121121
->end()
122122
->end()
123123
->end()
124124
->arrayNode('log')
125125
->addDefaultsIfNotSet()
126126
->children()
127127
->scalarNode('repository_service')
128-
->defaultNull()
128+
->defaultValue('apisearch.logs_repository_mock')
129129
->end()
130130
->end()
131131
->end()
132132
->arrayNode('user')
133133
->addDefaultsIfNotSet()
134134
->children()
135135
->scalarNode('repository_service')
136-
->defaultNull()
136+
->defaultValue('apisearch.user_repository_mock')
137137
->end()
138138
->end()
139139
->end();

DependencyInjection/CompilerPass/RepositoryCompilerPass.php

Lines changed: 26 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -255,27 +255,24 @@ private function createSearchRepository(
255255
$repositoryTransformableName = "apisearch.repository_transformable_$name.$indexName";
256256
$clientName = "apisearch.client_$name";
257257

258-
if (
259-
is_null($repositoryConfiguration['search']['repository_service']) ||
260-
($repositoryConfiguration['search']['repository_service'] == $repositoryName)
261-
) {
262-
$repoDefinition = 'in_memory' === $repositoryConfiguration['adapter']
263-
? $container->register($repositoryName, InMemoryRepository::class)
258+
if (!$this->repositoryIsService($repositoryConfiguration)) {
259+
$repositoryDefinition = 'in_memory' === $repositoryConfiguration['adapter']
260+
? $container
261+
->register($repositoryName, InMemoryRepository::class)
262+
->setPublic($this->repositoryIsTest($repositoryConfiguration))
264263
: $container
265264
->register($repositoryName, HttpRepository::class)
266265
->addArgument(new Reference($clientName))
267266
->setPublic($this->repositoryIsTest($repositoryConfiguration));
268267
} else {
269-
$container
270-
->addAliases([
271-
$repositoryName => $repositoryConfiguration['search']['repository_service'],
272-
]);
273-
274-
$repoDefinition = $container->getDefinition($repositoryConfiguration['search']['repository_service']);
268+
$container->setAlias($repositoryName, $repositoryConfiguration['search']['repository_service']);
269+
$aliasDefinition = $container->getAlias($repositoryName);
270+
$aliasDefinition->setPublic($this->repositoryIsTest($repositoryConfiguration));
271+
$repositoryDefinition = $container->getDefinition($repositoryConfiguration['search']['repository_service']);
275272
}
276273

277274
$this->injectRepositoryCredentials(
278-
$repoDefinition,
275+
$repositoryDefinition,
279276
$name,
280277
$repositoryConfiguration,
281278
$indexName
@@ -327,10 +324,7 @@ private function createStandardRepository(
327324
$repositoryName = rtrim("apisearch.{$prefix}_repository_$name.$indexName", '.');
328325
$clientName = rtrim("apisearch.client_$name", '.');
329326

330-
if (
331-
is_null($repositoryConfiguration[$prefix]['repository_service']) ||
332-
($repositoryConfiguration[$prefix]['repository_service'] == $repositoryName)
333-
) {
327+
if (!$this->repositoryIsService($repositoryConfiguration)) {
334328
$repositoryReferenceName = rtrim("apisearch.repository_reference.$name.$indexName", '.');
335329
$repositoryReferenceReference = new Reference($repositoryReferenceName);
336330
'in_memory' === $repositoryConfiguration['adapter']
@@ -357,10 +351,9 @@ private function createStandardRepository(
357351
$indexName
358352
);
359353

360-
$container
361-
->addAliases([
362-
$repositoryName => $repositoryConfiguration[$prefix]['repository_service'],
363-
]);
354+
$container->setAlias($repositoryName, $repositoryConfiguration[$prefix]['repository_service']);
355+
$aliasDefinition = $container->getAlias($repositoryName);
356+
$aliasDefinition->setPublic($this->repositoryIsTest($repositoryConfiguration));
364357
}
365358
}
366359

@@ -448,4 +441,16 @@ private function repositoryIsHttp(array $repositoryConfiguration)
448441
{
449442
return in_array($repositoryConfiguration['adapter'], ['http', 'http_test']);
450443
}
444+
445+
/**
446+
* Is Service.
447+
*
448+
* @param array $repositoryConfiguration
449+
*
450+
* @return bool
451+
*/
452+
private function repositoryIsService(array $repositoryConfiguration)
453+
{
454+
return in_array($repositoryConfiguration['adapter'], ['service']);
455+
}
451456
}

Resources/config/repositories.yml

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,22 @@
11
services:
22

33
apisearch.repository_bucket:
4-
class: Apisearch\Repository\RepositoryBucket
4+
class: Apisearch\Repository\RepositoryBucket
5+
6+
#
7+
# Mocks
8+
#
9+
apisearch.repository_mock:
10+
class: Apisearch\Repository\MockRepository
11+
12+
apisearch.app_repository_mock:
13+
class: Apisearch\App\MockAppRepository
14+
15+
apisearch.events_repository_mock:
16+
class: Apisearch\Event\MockEventRepository
17+
18+
apisearch.logs_repository_mock:
19+
class: Apisearch\Log\MockLogRepository
20+
21+
apisearch.user_repository_mock:
22+
class: Apisearch\User\MockUserRepository

Tests/Functional/DependencyInjection/ApisearchConfigurationTest.php

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
namespace Apisearch\Tests\Functional;
1818

1919
use Apisearch\ApisearchBundle;
20+
use Apisearch\Exception\MockException;
2021
use Apisearch\Http\Retry;
2122
use Mmoreram\BaseBundle\BaseBundle;
2223
use Mmoreram\BaseBundle\Kernel\BaseKernel;
@@ -88,6 +89,13 @@ protected static function getKernel(): KernelInterface
8889
'default' => 'xxx',
8990
],
9091
],
92+
'main3' => [
93+
'adapter' => 'service',
94+
'test' => true,
95+
'indexes' => [
96+
'default' => 'xxx',
97+
],
98+
],
9199
],
92100
],
93101
],
@@ -142,12 +150,33 @@ public function testMainRepositoryConfiguration()
142150
/**
143151
* Test main2 repository configuration.
144152
*/
145-
public function testSomething()
153+
public function testMain2()
146154
{
147155
$repositoriesConfiguration = self::getParameter('apisearch.repository_configuration');
148156
$this->assertEquals(
149157
'in_memory',
150158
$repositoriesConfiguration['main2']['adapter']
151159
);
160+
static::get('apisearch.repository_main2.default');
161+
}
162+
163+
/**
164+
* Test main3 repository configuration.
165+
*/
166+
public function testMain3()
167+
{
168+
$repositoriesConfiguration = self::getParameter('apisearch.repository_configuration');
169+
$this->assertEquals(
170+
'service',
171+
$repositoriesConfiguration['main3']['adapter']
172+
);
173+
174+
$repository = static::get('apisearch.repository_main3.default');
175+
try {
176+
$repository->flush();
177+
$this->fail('A mock exception should be thrown here.');
178+
} catch (MockException $e) {
179+
// Silent pass
180+
}
152181
}
153182
}

0 commit comments

Comments
 (0)