10-04-2026
This commit is contained in:
parent
4d6b4930b2
commit
4bb89aad8c
836 changed files with 52961 additions and 5950 deletions
113
tests/Feature/CabinetQuickStatusTest.php
Normal file
113
tests/Feature/CabinetQuickStatusTest.php
Normal file
|
|
@ -0,0 +1,113 @@
|
|||
<?php
|
||||
|
||||
use App\Livewire\Cabinet\QuickStatus;
|
||||
use App\Models\CabinetTabletSetting;
|
||||
use Livewire\Livewire;
|
||||
|
||||
const VALID_KEY = 'test-secret-key-123';
|
||||
|
||||
beforeEach(function () {
|
||||
config(['domains.cabinet_status_key' => VALID_KEY]);
|
||||
});
|
||||
|
||||
test('page is accessible without login', function () {
|
||||
$this->get('/info/status?k='.VALID_KEY)
|
||||
->assertSuccessful()
|
||||
->assertSeeLivewire(QuickStatus::class);
|
||||
});
|
||||
|
||||
test('page shows forbidden when key is missing', function () {
|
||||
Livewire::test(QuickStatus::class, ['k' => ''])
|
||||
->assertSet('authorized', false)
|
||||
->assertSee('Kein Zugriff');
|
||||
});
|
||||
|
||||
test('page shows forbidden when key is wrong', function () {
|
||||
Livewire::test(QuickStatus::class, ['k' => 'wrong-key'])
|
||||
->assertSet('authorized', false)
|
||||
->assertSee('Kein Zugriff');
|
||||
});
|
||||
|
||||
test('page loads current status when key is correct', function () {
|
||||
CabinetTabletSetting::factory()->create([
|
||||
'store_status' => 'notice',
|
||||
'notice_headline' => 'Testhinweis',
|
||||
]);
|
||||
|
||||
Livewire::test(QuickStatus::class, ['k' => VALID_KEY])
|
||||
->assertSet('authorized', true)
|
||||
->assertSet('storeStatus', 'notice')
|
||||
->assertSet('noticeHeadline', 'Testhinweis');
|
||||
});
|
||||
|
||||
test('selectStatus changes storeStatus', function () {
|
||||
Livewire::test(QuickStatus::class, ['k' => VALID_KEY])
|
||||
->call('selectStatus', 'closed')
|
||||
->assertSet('storeStatus', 'closed');
|
||||
});
|
||||
|
||||
test('selectStatus ignores unknown values', function () {
|
||||
Livewire::test(QuickStatus::class, ['k' => VALID_KEY])
|
||||
->call('selectStatus', 'invalid')
|
||||
->assertSet('storeStatus', 'auto');
|
||||
});
|
||||
|
||||
test('save persists status and headline to database', function () {
|
||||
Livewire::test(QuickStatus::class, ['k' => VALID_KEY])
|
||||
->set('storeStatus', 'notice')
|
||||
->set('noticeHeadline', 'Sonderöffnung')
|
||||
->set('noticeSubtext', 'Heute nur bis 14 Uhr')
|
||||
->call('save')
|
||||
->assertHasNoErrors()
|
||||
->assertSet('saved', true);
|
||||
|
||||
$settings = CabinetTabletSetting::current();
|
||||
expect($settings->store_status)->toBe('notice');
|
||||
expect($settings->notice_headline)->toBe('Sonderöffnung');
|
||||
expect($settings->notice_subtext)->toBe('Heute nur bis 14 Uhr');
|
||||
});
|
||||
|
||||
test('save clears headline when switching to auto', function () {
|
||||
CabinetTabletSetting::factory()->create([
|
||||
'store_status' => 'notice',
|
||||
'notice_headline' => 'Alter Text',
|
||||
]);
|
||||
|
||||
Livewire::test(QuickStatus::class, ['k' => VALID_KEY])
|
||||
->set('storeStatus', 'auto')
|
||||
->call('save')
|
||||
->assertHasNoErrors();
|
||||
|
||||
expect(CabinetTabletSetting::current()->store_status)->toBe('auto');
|
||||
expect(CabinetTabletSetting::current()->notice_headline)->toBeNull();
|
||||
});
|
||||
|
||||
test('save validates headline max length', function () {
|
||||
Livewire::test(QuickStatus::class, ['k' => VALID_KEY])
|
||||
->set('storeStatus', 'notice')
|
||||
->set('noticeHeadline', str_repeat('A', 41))
|
||||
->call('save')
|
||||
->assertHasErrors(['noticeHeadline']);
|
||||
});
|
||||
|
||||
test('save validates subtext max length', function () {
|
||||
Livewire::test(QuickStatus::class, ['k' => VALID_KEY])
|
||||
->set('storeStatus', 'notice')
|
||||
->set('noticeSubtext', str_repeat('A', 81))
|
||||
->call('save')
|
||||
->assertHasErrors(['noticeSubtext']);
|
||||
});
|
||||
|
||||
test('unauthorized user cannot save', function () {
|
||||
$component = Livewire::test(QuickStatus::class, ['k' => 'wrong'])
|
||||
->set('storeStatus', 'closed')
|
||||
->call('save');
|
||||
|
||||
expect(CabinetTabletSetting::count())->toBe(0);
|
||||
});
|
||||
|
||||
test('all four status options are available', function () {
|
||||
$component = Livewire::test(QuickStatus::class, ['k' => VALID_KEY]);
|
||||
|
||||
expect($component->get('statusOptions'))->toHaveKeys(['auto', 'closed', 'notice', 'warning']);
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue