Skip to content

Commit f8c8f72

Browse files
authored
fix(settings): register missing defaults for admin dropdown settings (#4491)
maintenance_mode, slug_driver_Flarum\Discussion\Discussion, and fontawesome_source were absent from flarum.settings.default, so DefaultSettingsRepository::all() omitted them on installs where the DB row had never been written (e.g. upgrades). The admin dropdowns rendered empty as a result. Closes #4488
1 parent 57ed2e4 commit f8c8f72

2 files changed

Lines changed: 64 additions & 0 deletions

File tree

framework/core/src/Settings/SettingsServiceProvider.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@ public function register(): void
2525
'theme_primary_color' => '#4D698E',
2626
'theme_secondary_color' => '#4D698E',
2727
'mail_format' => 'multipart',
28+
'fontawesome_source' => 'local',
29+
'maintenance_mode' => 'none',
30+
'slug_driver_Flarum\Discussion\Discussion' => 'default',
31+
'slug_driver_Flarum\User\User' => 'default',
2832
'search_driver_Flarum\User\User' => 'default',
2933
'search_driver_Flarum\Discussion\Discussion' => 'default',
3034
'search_driver_Flarum\Group\Group' => 'default',
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
<?php
2+
3+
/*
4+
* This file is part of Flarum.
5+
*
6+
* For detailed copyright and license information, please view the
7+
* LICENSE file that was distributed with this source code.
8+
*/
9+
10+
namespace Flarum\Tests\integration\settings;
11+
12+
use Flarum\Discussion\Discussion;
13+
use Flarum\Testing\integration\TestCase;
14+
use Flarum\User\User;
15+
use Illuminate\Support\Collection;
16+
use PHPUnit\Framework\Attributes\Test;
17+
18+
/**
19+
* Tests that settings which power admin dropdowns are registered in
20+
* flarum.settings.default, so they appear in SettingsRepositoryInterface::all()
21+
* and reach the admin frontend payload on any install — including upgrades
22+
* where WriteSettings never ran for newer settings.
23+
*
24+
* @see https://github.com/flarum/framework/issues/4488
25+
*/
26+
class DefaultSettingsTest extends TestCase
27+
{
28+
private function defaults(): Collection
29+
{
30+
return $this->app()->getContainer()->make('flarum.settings.default');
31+
}
32+
33+
#[Test]
34+
public function maintenance_mode_has_a_registered_default(): void
35+
{
36+
$this->assertTrue($this->defaults()->has('maintenance_mode'));
37+
$this->assertSame('none', $this->defaults()->get('maintenance_mode'));
38+
}
39+
40+
#[Test]
41+
public function slug_driver_for_discussion_has_a_registered_default(): void
42+
{
43+
$this->assertTrue($this->defaults()->has('slug_driver_'.Discussion::class));
44+
$this->assertSame('default', $this->defaults()->get('slug_driver_'.Discussion::class));
45+
}
46+
47+
#[Test]
48+
public function slug_driver_for_user_has_a_registered_default(): void
49+
{
50+
$this->assertTrue($this->defaults()->has('slug_driver_'.User::class));
51+
$this->assertSame('default', $this->defaults()->get('slug_driver_'.User::class));
52+
}
53+
54+
#[Test]
55+
public function fontawesome_source_has_a_registered_default(): void
56+
{
57+
$this->assertTrue($this->defaults()->has('fontawesome_source'));
58+
$this->assertSame('local', $this->defaults()->get('fontawesome_source'));
59+
}
60+
}

0 commit comments

Comments
 (0)