Skip to content

Commit f868911

Browse files
committed
tests: Update NegotiateTest
1 parent d921113 commit f868911

File tree

1 file changed

+25
-2
lines changed

1 file changed

+25
-2
lines changed

tests/system/HTTP/NegotiateTest.php

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
use CodeIgniter\HTTP\Exceptions\HTTPException;
1717
use CodeIgniter\Test\CIUnitTestCase;
1818
use Config\App;
19+
use Config\Feature;
1920
use PHPUnit\Framework\Attributes\Group;
2021

2122
/**
@@ -111,11 +112,23 @@ public function testNegotiatesEncodingBasics(): void
111112

112113
public function testAcceptLanguageBasics(): void
113114
{
114-
$this->request->setHeader('Accept-Language', 'da, en-gb;q=0.8, en;q=0.7');
115+
$this->request->setHeader('Accept-Language', 'da, en-gb, en-us;q=0.8, en;q=0.7');
115116

116117
$this->assertSame('da', $this->negotiate->language(['da', 'en']));
117118
$this->assertSame('en-gb', $this->negotiate->language(['en-gb', 'en']));
118119
$this->assertSame('en', $this->negotiate->language(['en']));
120+
121+
// Will find the first locale instead of "en-gb"
122+
$this->assertSame('en-us', $this->negotiate->language(['en-us', 'en-gb', 'en']));
123+
$this->assertSame('en', $this->negotiate->language(['en', 'en-us', 'en-gb']));
124+
125+
config(Feature::class)->simpleNegotiateLocale = false;
126+
127+
$this->assertSame('da', $this->negotiate->language(['da', 'en']));
128+
$this->assertSame('en-gb', $this->negotiate->language(['en-gb', 'en']));
129+
$this->assertSame('en', $this->negotiate->language(['en']));
130+
$this->assertSame('en-gb', $this->negotiate->language(['en-us', 'en-gb', 'en']));
131+
$this->assertSame('en-gb', $this->negotiate->language(['en', 'en-us', 'en-gb']));
119132
}
120133

121134
/**
@@ -125,7 +138,17 @@ public function testAcceptLanguageMatchesBroadly(): void
125138
{
126139
$this->request->setHeader('Accept-Language', 'fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7');
127140

128-
$this->assertSame('fr', $this->negotiate->language(['fr', 'en']));
141+
$this->assertSame('fr', $this->negotiate->language(['fr', 'fr-FR', 'en']));
142+
$this->assertSame('fr-FR', $this->negotiate->language(['fr-FR', 'fr', 'en']));
143+
$this->assertSame('fr-BE', $this->negotiate->language(['fr-BE', 'fr', 'en']));
144+
$this->assertSame('en', $this->negotiate->language(['en', 'en-US']));
145+
146+
config(Feature::class)->simpleNegotiateLocale = false;
147+
148+
$this->assertSame('fr-FR', $this->negotiate->language(['fr', 'fr-FR', 'en']));
149+
$this->assertSame('fr-FR', $this->negotiate->language(['fr-FR', 'fr', 'en']));
150+
$this->assertSame('fr', $this->negotiate->language(['fr-BE', 'fr', 'en']));
151+
$this->assertSame('en-US', $this->negotiate->language(['en', 'en-US']));
129152
}
130153

131154
public function testBestMatchEmpty(): void

0 commit comments

Comments
 (0)