<?php

use App\Lottery\ErrorCode;
use Database\Seeders\CurrencySeeder;
use Illuminate\Foundation\Testing\RefreshDatabase;

uses(RefreshDatabase::class);

beforeEach(function (): void {
    $this->seed(CurrencySeeder::class);
});

test('public settings requires allowed group', function (): void {
    $this->getJson('/api/v1/settings')
        ->assertStatus(400)
        ->assertJsonPath('code', ErrorCode::ClientHttpError->value);

    $this->getJson('/api/v1/settings?group=wallet')
        ->assertStatus(400)
        ->assertJsonPath('code', ErrorCode::ClientHttpError->value);
        
    $this->getJson('/api/v1/settings?group=currency')
        ->assertStatus(400)
        ->assertJsonPath('code', ErrorCode::ClientHttpError->value);
});

test('public settings returns frontend group only', function (): void {
    \App\Models\LotterySetting::query()->updateOrCreate(
        ['setting_key' => 'frontend.play_rules_html_zh'],
        [
            'group_name' => 'frontend',
            'value_json' => '<p>rules</p>',
            'description_zh' => '规则',
        ],
    );

    $this->getJson('/api/v1/settings?group=frontend')
        ->assertOk()
        ->assertJsonPath('code', ErrorCode::Success->value)
        ->assertJsonFragment(['key' => 'frontend.play_rules_html_zh']);
});
