Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 41f0cbb

Browse files
authored
bug #10308 Fix base locale (igormukhingmailcom)
This PR was merged into the 1.3 branch. Discussion ---------- | Q | A | --------------- | ----- | Branch? | 1.3 | Bug fix? | yes | New feature? | no | BC breaks? | not sure (it backward compatible on default fixtures configuration) | Deprecations? | not sure (deprecation messages was added, but not appear on default fixtures configuration) | Related tickets | fixes #10307, partially #7346 | License | MIT So, in BC in mind, with this PR it now will work like this: - **If you have default (empty) configuration, as was before**: ```yaml sylius_fixtures: # ... fixtures: locale: ~ ``` Then, base locale **will be added** to configuration. - *But if you provided a list of locales*: ```yaml sylius_fixtures: suites: my_custom_suite_to_add_to_existing_database: listeners: orm_purger: false fixtures: locale: options: locales: - "de_DE" ``` Then, base locale **will NOT be added** to configuration. Deprecation message was added to avoid usage base locale at all in future. To suppress that message on default configuration, `"%locale%"` was passed directly to the `locales` option at `src/Sylius/Bundle/CoreBundle/Resources/config/app/fixtures.yml`. # TODO - [ ] Define Sylius version where base locale will be removed OR remove deprecation message if base locale should be kept by default (when fixture defined like `locale: ~`) - I'm not 100% sure about this so want to discuss this first. Commits ------- 93f098e Fixed: LocaleFixtureTest as it not valid since #7346 15c0cb7 Avoided: Adding base locale usage to list of fixtures (fixes #10307)
2 parents 5fcc820 + 15c0cb7 commit 41f0cbb

3 files changed

Lines changed: 46 additions & 5 deletions

File tree

src/Sylius/Bundle/CoreBundle/Fixture/LocaleFixture.php

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,7 @@ public function __construct(FactoryInterface $localeFactory, ObjectManager $loca
4545
*/
4646
public function load(array $options): void
4747
{
48-
$localesCodes = array_merge([$this->baseLocaleCode], $options['locales']);
49-
50-
foreach ($localesCodes as $localeCode) {
48+
foreach ($options['locales'] as $localeCode) {
5149
/** @var LocaleInterface $locale */
5250
$locale = $this->localeFactory->createNew();
5351

@@ -73,6 +71,21 @@ public function getName(): string
7371
protected function configureOptionsNode(ArrayNodeDefinition $optionsNode): void
7472
{
7573
$optionsNode
74+
->beforeNormalization()
75+
->ifEmpty()
76+
->then(function(){
77+
@trigger_error(
78+
'Base locale deprecated since 1.3. Please, pass %locale% directly to locales fixture at fixtures option.',
79+
E_USER_DEPRECATED
80+
);
81+
82+
return [
83+
'locales'=>[
84+
$this->baseLocaleCode
85+
]
86+
];
87+
})
88+
->end()
7689
->children()
7790
->arrayNode('locales')
7891
->scalarPrototype()

src/Sylius/Bundle/CoreBundle/Resources/config/app/fixtures.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,11 @@ sylius_fixtures:
99
logger: ~
1010

1111
fixtures:
12-
locale: ~
12+
locale:
13+
options:
14+
locales:
15+
- "%locale%"
16+
1317
currency:
1418
options:
1519
currencies: ['USD']

src/Sylius/Bundle/CoreBundle/Tests/Fixture/LocaleFixtureTest.php

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,31 @@ public function locales_are_not_required(): void
3636
*/
3737
public function locales_can_be_set(): void
3838
{
39-
$this->assertConfigurationIsValid([['locales' => ['en_US' => true, 'pl_PL' => false, 'es_ES' => true]]], 'locales');
39+
$this->assertConfigurationIsValid([['locales' => ['en_US', 'pl_PL', 'es_ES']]], 'locales');
40+
}
41+
42+
/**
43+
* @test
44+
*/
45+
public function default_locale_is_added_by_default(): void
46+
{
47+
$this->assertProcessedConfigurationEquals(
48+
[[]],
49+
['locales' => ['default_LOCALE']],
50+
'locales'
51+
);
52+
}
53+
54+
/**
55+
* @test
56+
*/
57+
public function default_locale_is_not_added_if_locales_passed_directly(): void
58+
{
59+
$this->assertProcessedConfigurationEquals(
60+
[['locales' => ['en_US']]],
61+
['locales' => ['en_US']],
62+
'locales'
63+
);
4064
}
4165

4266
/**

0 commit comments

Comments
 (0)