<?php

declare(strict_types=1);

use App\Services\Localization\LocaleResolver;
use App\Services\Settings\SettingsWriter;
use App\Support\Workspaces\WorkspaceContext;

it('formats locale preference feedback in the resolved locale', function (): void {
    [$workspace, $user] = localizationWorkspaceMember();

    $this->actingAs($user)
        ->withSession([
            WorkspaceContext::SESSION_KEY => (int) $workspace->getKey(),
            LocaleResolver::SESSION_OVERRIDE_KEY => 'de',
        ])
        ->post(route('localization.preference.update'), ['preferred_locale' => 'de'])
        ->assertRedirect()
        ->assertSessionHas('status', 'Spracheinstellung gespeichert.');
});

it('formats override feedback in the newly effective locale', function (): void {
    [$workspace, $user] = localizationWorkspaceMember();

    app(SettingsWriter::class)->updateWorkspaceSetting(
        actor: $user,
        workspace: $workspace,
        domain: LocaleResolver::SETTING_DOMAIN,
        key: LocaleResolver::SETTING_DEFAULT_LOCALE,
        value: 'de',
    );

    $this->actingAs($user)
        ->withSession([WorkspaceContext::SESSION_KEY => (int) $workspace->getKey()])
        ->post(route('localization.override.update'), ['locale' => 'de'])
        ->assertRedirect()
        ->assertSessionHas('status', 'Sprachüberschreibung angewendet.');

    $this->actingAs($user)
        ->withSession([
            WorkspaceContext::SESSION_KEY => (int) $workspace->getKey(),
            LocaleResolver::SESSION_OVERRIDE_KEY => 'en',
        ])
        ->delete(route('localization.override.clear'))
        ->assertRedirect()
        ->assertSessionHas('status', 'Sprachüberschreibung gelöscht.');
});
