Files
ppeasy_vg12/tests/Unit/Support/DemoTest.php
T
2026-10-09 08:21:06 +02:00

65 lines
2.0 KiB
PHP

<?php
use App\Models\User;
use App\Support\Demo;
beforeEach(function () {
config([
'demo.enabled' => true,
'demo.protected_users' => ['admin'],
'demo.message' => null,
]);
});
test('nobody is protected while demo mode is off', function () {
config(['demo.enabled' => false]);
$this->assertFalse(Demo::enabled());
$this->assertFalse(Demo::isProtectedUser(new User(['username' => 'admin'])));
});
test('a guest is never protected', function () {
$this->assertFalse(Demo::isProtectedUser(null));
});
test('a protected account is matched on its username', function () {
$this->assertTrue(Demo::isProtectedUser(new User(['username' => 'admin'])));
});
test('a protected account is matched on its email', function () {
config(['demo.protected_users' => ['admin@example.com']]);
$this->assertTrue(Demo::isProtectedUser(new User(['email' => 'admin@example.com'])));
});
test('matching ignores case on both sides', function () {
config(['demo.protected_users' => ['ADMIN']]);
$this->assertTrue(Demo::isProtectedUser(new User(['username' => 'Admin'])));
});
test('an ordinary account is not protected', function () {
$this->assertFalse(Demo::isProtectedUser(new User([
'username' => 'jane',
'email' => 'jane@example.com',
])));
});
test('a user without a username is not protected by an empty match', function () {
config(['demo.protected_users' => ['']]);
$this->assertFalse(Demo::isProtectedUser(new User(['email' => 'jane@example.com'])));
});
test('the configured message overrides every reason', function () {
config(['demo.message' => 'Nope.']);
$this->assertSame('Nope.', Demo::message());
$this->assertSame('Nope.', Demo::message('Something more specific.'));
});
test('a reason falls back to the generic refusal', function () {
$this->assertSame('This action is disabled in the demo.', Demo::message());
$this->assertSame('Something more specific.', Demo::message('Something more specific.'));
});