(string) Str::uuid(), 'name' => 'A', 'email' => 'a+'.uniqid().'@x.com']); } public function test_settings_page_renders_for_authenticated_user(): void { $this->actingAs($this->user()) ->get(route('account.settings')) ->assertOk() ->assertSee('New code defaults') ->assertSee('Notifications'); } public function test_can_save_qr_settings(): void { $user = $this->user(); $this->actingAs($user) ->put(route('account.settings.update'), [ 'notify_email' => 'alerts@example.com', 'product_updates' => '1', 'low_balance_alerts' => '0', 'default_type' => 'wifi', 'default_style' => [ 'foreground' => '#112233', 'background' => '#ffffff', 'module_style' => 'dots', 'frame_style' => 'scan_me', 'frame_color' => '#445566', 'frame_text' => 'SCAN ME', ], ]) ->assertRedirect(route('account.settings')); $settings = QrSetting::where('user_id', $user->id)->first(); $this->assertNotNull($settings); $this->assertSame('alerts@example.com', $settings->notify_email); $this->assertTrue($settings->product_updates); $this->assertFalse($settings->low_balance_alerts); $this->assertSame('wifi', $settings->default_type); $this->assertSame('#112233', $settings->resolvedDefaultStyle()['foreground']); $this->assertSame('scan_me', $settings->resolvedDefaultStyle()['frame_style']); } public function test_create_page_uses_saved_defaults(): void { $user = $this->user(); QrSetting::create([ 'user_id' => $user->id, 'default_type' => 'business', 'default_style' => ['foreground' => '#aabbcc', 'module_style' => 'dots'], ]); Http::fake([ config('billing.api_url').'/balance*' => Http::response(['balance_minor' => 50000]), ]); $this->actingAs($user) ->get(route('user.qr-codes.create')) ->assertOk() ->assertSee('#aabbcc', false) ->assertSee('"business"', false); } }