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(); +});