diff --git a/app/Http/Controllers/SettingsController.php b/app/Http/Controllers/SettingsController.php
index c395d6a..a4ad537 100644
--- a/app/Http/Controllers/SettingsController.php
+++ b/app/Http/Controllers/SettingsController.php
@@ -31,6 +31,7 @@ class SettingsController extends Controller
'namenseinblender_macro_id',
'song_prefix_label_id',
'song_postfix_label_id',
+ 'add_countdown_slide',
];
public function index(): Response
diff --git a/database/seeders/CcliSettingsSeeder.php b/database/seeders/CcliSettingsSeeder.php
index 28354b5..bf293b6 100644
--- a/database/seeders/CcliSettingsSeeder.php
+++ b/database/seeders/CcliSettingsSeeder.php
@@ -13,5 +13,10 @@ public function run(): void
['key' => 'default_translation_language'],
['value' => 'DE'],
);
+
+ Setting::firstOrCreate(
+ ['key' => 'add_countdown_slide'],
+ ['value' => '0'],
+ );
}
}
diff --git a/resources/js/Pages/Settings.vue b/resources/js/Pages/Settings.vue
index af51eac..be8ae94 100644
--- a/resources/js/Pages/Settings.vue
+++ b/resources/js/Pages/Settings.vue
@@ -289,12 +289,30 @@ watch(songPostfixLabelId, (value) => {
-
+
+
+
+
+
+
diff --git a/tests/Feature/SettingsControllerCountdownSlideTest.php b/tests/Feature/SettingsControllerCountdownSlideTest.php
new file mode 100644
index 0000000..53ec7ef
--- /dev/null
+++ b/tests/Feature/SettingsControllerCountdownSlideTest.php
@@ -0,0 +1,58 @@
+user = User::factory()->create();
+});
+
+test('settings index includes add_countdown_slide in props', function () {
+ $response = $this->actingAs($this->user)
+ ->withoutVite()
+ ->get(route('settings.index'));
+
+ $response->assertInertia(
+ fn ($page) => $page
+ ->component('Settings')
+ ->has('settings.add_countdown_slide')
+ );
+});
+
+test('patch add_countdown_slide to 1 persists', function () {
+ $response = $this->actingAs($this->user)
+ ->patchJson(route('settings.update'), [
+ 'key' => 'add_countdown_slide',
+ 'value' => '1',
+ ]);
+
+ $response->assertOk()
+ ->assertJson(['success' => true]);
+
+ expect(Setting::get('add_countdown_slide'))->toBe('1');
+});
+
+test('patch add_countdown_slide to 0 persists', function () {
+ Setting::set('add_countdown_slide', '1');
+
+ $response = $this->actingAs($this->user)
+ ->patchJson(route('settings.update'), [
+ 'key' => 'add_countdown_slide',
+ 'value' => '0',
+ ]);
+
+ $response->assertOk()
+ ->assertJson(['success' => true]);
+
+ expect(Setting::get('add_countdown_slide'))->toBe('0');
+});
+
+test('patch with unknown key returns 422', function () {
+ $response = $this->actingAs($this->user)
+ ->patchJson(route('settings.update'), [
+ 'key' => 'unknown_setting_key',
+ 'value' => 'some value',
+ ]);
+
+ $response->assertUnprocessable();
+});