actingAs(User::factory()->create()); $this->get(route('certificate-settings.edit'))->assertOk(); }); test('a user on a paid plan can update their reminder and ocr settings', function () { $user = User::factory()->create(); Subscription::factory()->for($user)->starter()->create(); $this->actingAs($user); Livewire::test('pages::settings.certificates') ->set('reminder_months_before', 3) ->set('ocr_provider', 'klippa') ->set('ocr_api_key', 'secret-key') ->call('updateSettings') ->assertHasNoErrors(); $user->refresh(); expect($user->reminder_months_before)->toBe(3) ->and($user->ocr_provider)->toBe('klippa') ->and($user->ocr_api_key)->toBe('secret-key'); }); test('a blank api key keeps the existing one', function () { $user = User::factory()->create(); Subscription::factory()->for($user)->starter()->create(); $user->ocr_provider = 'klippa'; $user->ocr_api_key = 'original-key'; $user->save(); $this->actingAs($user); Livewire::test('pages::settings.certificates') ->set('reminder_months_before', 2) ->set('ocr_provider', 'klippa') ->set('ocr_api_key', '') ->call('updateSettings') ->assertHasNoErrors(); expect($user->refresh()->ocr_api_key)->toBe('original-key'); }); test('an unknown ocr provider is rejected', function () { $user = User::factory()->create(); Subscription::factory()->for($user)->starter()->create(); $this->actingAs($user); Livewire::test('pages::settings.certificates') ->set('ocr_provider', 'hacker') ->call('updateSettings') ->assertHasErrors(['ocr_provider']); }); test('a free plan user cannot select a paid ocr provider', function () { // Free plan users have no subscription row (falls back to Free). $this->actingAs(User::factory()->create()); Livewire::test('pages::settings.certificates') ->assertSee('Certified Starter') ->set('ocr_provider', 'klippa') ->call('updateSettings') ->assertHasErrors(['ocr_provider']); }); test('a free plan user keeps ocr disabled after saving other settings', function () { $user = User::factory()->create(); $this->actingAs($user); Livewire::test('pages::settings.certificates') ->set('reminder_months_before', 3) ->set('ocr_provider', 'none') ->call('updateSettings') ->assertHasNoErrors(); expect($user->refresh()->ocr_provider)->toBe('none'); });