Certified/tests/Feature/Settings/CertificateSettingsTest.php
2026-08-09 16:33:53 +02:00

84 lines
2.6 KiB
PHP

<?php
use App\Models\Subscription;
use App\Models\User;
use Livewire\Livewire;
test('the certificate settings page is displayed', function () {
$this->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');
});