master
lion 4 weeks ago
parent 3d36406027
commit 32c3993d9f

@ -268,7 +268,7 @@ class ApplicationController extends Controller
$app->load(['files']);
return response()->json($this->transform($app, false));
return response()->json($this->transform($app, false, false));
}
public function submit(Request $request): JsonResponse
@ -610,7 +610,7 @@ class ApplicationController extends Controller
return $payload;
}
private function transform(Application $app, bool $includeSignature = true): array
private function transform(Application $app, bool $includeSignature = true, bool $prefillBlanksFromUser = true): array
{
$payload = array_merge([
'id' => $app->id,
@ -640,7 +640,7 @@ class ApplicationController extends Controller
$payload['promise_signature'] = $app->promise_signature;
}
return $this->applySignupPrefillSources($app, $payload);
return $prefillBlanksFromUser ? $this->applySignupPrefillSources($app, $payload) : $payload;
}
private function normalizeSignupOptionInputs(Request $request): void

@ -5543,7 +5543,6 @@
height: 100%;
object-fit: contain;
}
.hero-banner img[src^="data:"] { visibility: hidden; }
.hero-orbit-beams {
position: absolute;
z-index: 8;
@ -5650,7 +5649,7 @@
<img src="assets/generated/hero-three-landmarks-clean-field-v16.png?v=20260826" alt="" fetchpriority="high" decoding="async">
</div>
<div class="hero-banner hero-banner--photonic">
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-src="assets/generated/hero-photonic-youth-blue-purple-balanced-v7-sharp-trails-4k.jpg?v=20260826" alt="" decoding="async">
<img src="assets/generated/hero-photonic-youth-blue-purple-balanced-v7-sharp-trails-4k.jpg?v=20260826" alt="" decoding="async">
</div>
</div>
<div class="hero-map-dots" aria-hidden="true"></div>

@ -37,4 +37,66 @@ class ParticipantApplicationSaveTest extends TestCase
->assertJsonPath('player_name', '张三')
->assertJsonPath('project_name', '测试项目');
}
public function test_second_draft_save_rejects_invalid_email_and_keeps_previous_value(): void
{
$user = User::query()->create(['mobile' => '13800138089']);
$competition = Competition::query()->create([
'slug' => 'xxf-email',
'name' => '测试赛',
'published' => true,
]);
Application::query()->create([
'user_id' => $user->id,
'competition_id' => $competition->id,
'status' => 'draft',
]);
Sanctum::actingAs($user);
$this->postJson('/api/applications/current/save?competition_slug=xxf-email', [
'player_name' => '张三',
'contact_email' => 'ok@example.com',
])
->assertOk()
->assertJsonPath('contact_email', 'ok@example.com');
$this->postJson('/api/applications/current/save?competition_slug=xxf-email', [
'player_name' => '李四',
'contact_email' => 'bad-email',
])
->assertUnprocessable()
->assertJsonValidationErrors(['contact_email']);
$this->getJson('/api/applications/current?competition_slug=xxf-email')
->assertOk()
->assertJsonPath('player_name', '张三')
->assertJsonPath('contact_email', 'ok@example.com');
}
public function test_draft_save_response_does_not_prefill_blank_email_from_user_profile(): void
{
$user = User::query()->create([
'mobile' => '13800138090',
'email' => 'profile@example.com',
]);
$competition = Competition::query()->create([
'slug' => 'xxf-prefill',
'name' => '测试赛',
'published' => true,
]);
Application::query()->create([
'user_id' => $user->id,
'competition_id' => $competition->id,
'status' => 'draft',
]);
Sanctum::actingAs($user);
$this->postJson('/api/applications/current/save?competition_slug=xxf-prefill', [
'contact_email' => '',
])
->assertOk()
->assertJsonPath('contact_email', null);
}
}

Loading…
Cancel
Save