草稿保存校验

master
weizong song 4 months ago
parent f1d0ef3055
commit 723e7c6676

@ -212,16 +212,6 @@ class ApplicationController extends Controller
$countries = config('contest.location_countries', []);
$companyRules = ['nullable', 'string', 'max:255'];
if ($this->signupSchemaHasKey($competition, 'entry_group')) {
$reqVals = $this->companyNameRequiredWhenEntryGroupValues($competition);
if (count($reqVals) > 0) {
$companyRules[] = Rule::requiredIf(function () use ($request, $reqVals): bool {
$eg = (string) $request->input('entry_group', '');
return in_array($eg, $reqVals, true);
});
}
}
$trackRules = count($trackCodes)
? ['nullable', 'string', Rule::in($trackCodes)]
@ -243,7 +233,7 @@ class ApplicationController extends Controller
'intro' => ['nullable', 'string', 'max:5000'],
];
if ($this->signupSchemaHasKey($competition, 'entry_group')) {
$rules['entry_group'] = ['required', 'string', Rule::in($this->allowedEntryGroupValues($competition))];
$rules['entry_group'] = ['nullable', 'string', Rule::in($this->allowedEntryGroupValues($competition))];
}
if ($this->signupSchemaRequiresCommitment($competition)) {
$rules['commitment_accepted'] = ['sometimes', 'boolean'];

@ -134,6 +134,30 @@ class ChannelSignupIntegrationTest extends TestCase
])->assertUnprocessable();
}
public function test_draft_save_allows_required_fields_missing_but_validates_filled_formats(): void
{
$this->competition('main-event');
Sanctum::actingAs(User::query()->create([
'mobile' => '13800138000',
]));
$this->putJson('/api/applications/current?competition_slug=main-event', [
'player_name' => '张三',
'contact_email' => 'bad-email',
])->assertUnprocessable()
->assertJsonValidationErrors(['contact_email']);
$this->putJson('/api/applications/current?competition_slug=main-event', [
'player_name' => '张三',
'contact_email' => 'draft@example.com',
])->assertOk()
->assertJsonPath('status', 'draft')
->assertJsonPath('player_name', '张三')
->assertJsonPath('contact_email', 'draft@example.com')
->assertJsonPath('entry_group', null)
->assertJsonPath('company_name', null);
}
public function test_channel_entry_success_errors_context_and_safe_logs(): void
{
$competition = $this->competition('main-event');

Loading…
Cancel
Save