Files
projectsend/tests/Unit/ThemeRegistryTest.php
T
ignacionelson 6e47d76ba6 ProjectSend 2.0.0
Client file sharing, rebuilt from the ground up: a private area per
client, resumable uploads, folders, groups and categories, sharing with
expiry dates and download limits, comments, file versions, an activity
log, a REST API, and sixteen languages.

This repository begins here. ProjectSend 2 was developed privately, and
that development history is not published — the previous generation
remains available, with its own history, at projectsend/legacy.

Free software under the GNU General Public License v2, or (at your
option) any later version.
2026-08-14 01:38:12 -03:00

32 lines
1.2 KiB
PHP

<?php
declare(strict_types=1);
use App\Modules\Platform\Capabilities\CapabilityRegistry;
use App\Modules\Platform\Capabilities\Edition;
use App\Modules\Platform\Theming\ThemeRegistry;
test('"default" always sorts first in available(), regardless of registration order', function () {
$registry = new ThemeRegistry;
$registry->register('zzz', 'ZZZ', 'zzz description');
$registry->register('aaa', 'AAA', 'aaa description');
$registry->register('default', 'Default', 'default description');
$registry->register('mmm', 'MMM', 'mmm description');
$keys = array_map(fn ($theme) => $theme->key, $registry->available(new CapabilityRegistry(Edition::Community)));
expect($keys)->toBe(['default', 'zzz', 'aaa', 'mmm']);
});
test('the rest keep their relative registration order behind "default"', function () {
$registry = new ThemeRegistry;
$registry->register('b', 'B', 'b description');
$registry->register('a', 'A', 'a description');
$registry->register('default', 'Default', 'default description');
$registry->register('c', 'C', 'c description');
$keys = array_map(fn ($theme) => $theme->key, $registry->available(new CapabilityRegistry(Edition::Community)));
expect($keys)->toBe(['default', 'b', 'a', 'c']);
});