-
Notifications
You must be signed in to change notification settings - Fork 634
Expand file tree
/
Copy pathUserPreferencesTest.php
More file actions
94 lines (79 loc) · 3.66 KB
/
Copy pathUserPreferencesTest.php
File metadata and controls
94 lines (79 loc) · 3.66 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
<?php
declare(strict_types=1);
namespace phpweb\Test\Unit;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\DataProvider;
use phpweb\UserPreferences;
use PHPUnit\Framework\TestCase;
#[CoversClass(UserPreferences::class)]
final class UserPreferencesTest extends TestCase
{
/** @param array<string, mixed> $cookie */
#[DataProvider('loadCookiesProvider')]
public function testLoad(
array $cookie,
string $languageCode,
string|false $searchType,
bool $isUserGroupTipsEnabled,
): void {
$_COOKIE = $cookie;
$userPreferences = new UserPreferences();
$userPreferences->load();
self::assertSame($languageCode, $userPreferences->languageCode);
self::assertSame($searchType, $userPreferences->searchType);
self::assertSame($isUserGroupTipsEnabled, $userPreferences->isUserGroupTipsEnabled);
}
/** @return array<int, array{array<string, mixed>, string, string|false, bool}> */
public static function loadCookiesProvider(): array
{
return [
[[], '', UserPreferences::URL_NONE, false],
[['MYPHPNET' => ['en,manual,,1']], '', UserPreferences::URL_NONE, false],
[['MYPHPNET' => ''], '', UserPreferences::URL_NONE, false],
[['MYPHPNET' => ',,,'], '', UserPreferences::URL_NONE, false],
[['MYPHPNET' => ',,,0'], '', UserPreferences::URL_NONE, false],
[['MYPHPNET' => ',,ignored,,ignored'], '', UserPreferences::URL_NONE, false],
[['MYPHPNET' => 'en,,,'], 'en', UserPreferences::URL_NONE, false],
[['MYPHPNET' => ',manual,,'], '', UserPreferences::URL_MANUAL, false],
[['MYPHPNET' => ',quickref,,'], '', UserPreferences::URL_FUNC, false],
[['MYPHPNET' => ',invalid,,'], '', UserPreferences::URL_NONE, false],
[['MYPHPNET' => ',,,1'], '', UserPreferences::URL_NONE, true],
[['MYPHPNET' => 'en,manual,,1'], 'en', UserPreferences::URL_MANUAL, true],
];
}
#[DataProvider('urlSearchTypeProvider')]
public function testSetUrlSearchType(mixed $type, string|false $expected): void
{
$userPreferences = new UserPreferences(searchType: UserPreferences::URL_NONE);
$userPreferences->setUrlSearchType($type);
self::assertSame($expected, $userPreferences->searchType);
}
/** @return array<int, array{mixed, string|false}> */
public static function urlSearchTypeProvider(): array
{
return [
['manual', UserPreferences::URL_MANUAL],
['quickref', UserPreferences::URL_FUNC],
[false, UserPreferences::URL_NONE],
['', UserPreferences::URL_NONE],
['invalid', UserPreferences::URL_NONE],
[['manual'], UserPreferences::URL_NONE],
];
}
public function testSetIsUserGroupTipsEnabled(): void
{
$timeBackup = $_SERVER['REQUEST_TIME'];
$_SERVER['REQUEST_TIME'] = 1726600070;
$userPreferences = new UserPreferences(isUserGroupTipsEnabled: false);
$userPreferences->setIsUserGroupTipsEnabled(true);
self::assertTrue($userPreferences->isUserGroupTipsEnabled);
$userPreferences = new UserPreferences(isUserGroupTipsEnabled: true);
$userPreferences->setIsUserGroupTipsEnabled(false);
self::assertFalse($userPreferences->isUserGroupTipsEnabled);
$_SERVER['REQUEST_TIME'] = 1726600066;
$userPreferences = new UserPreferences(isUserGroupTipsEnabled: false);
$userPreferences->setIsUserGroupTipsEnabled(false);
self::assertTrue($userPreferences->isUserGroupTipsEnabled);
$_SERVER['REQUEST_TIME'] = $timeBackup;
}
}