84 lines
2.6 KiB
PHP
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');
|
|
});
|