Skip to content

Commit ce87b53

Browse files
committed
Use a data provider to clean up the test
1 parent c88739b commit ce87b53

File tree

1 file changed

+25
-18
lines changed

1 file changed

+25
-18
lines changed

tests/Http/Middleware/SelectedSiteTest.php

Lines changed: 25 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace Tests\Http\Middleware;
44

55
use Illuminate\Http\Request;
6+
use PHPUnit\Framework\Attributes\DataProvider;
67
use PHPUnit\Framework\Attributes\Test;
78
use Statamic\Facades\Site;
89
use Statamic\Facades\User;
@@ -81,13 +82,12 @@ public function it_doesnt_do_anything_when_there_are_no_authorized_sites()
8182
$this->assertEquals('de', Site::selected()->handle());
8283
}
8384

84-
#[Test]
85-
public function it_sets_the_correct_site_when_first_logging_in()
85+
#[Test, DataProvider('firstLoginProvider')]
86+
public function it_sets_the_correct_site_when_first_logging_in($existingSelection, $url, $expectedSelection)
8687
{
8788
$this->setSites([
8889
'en' => ['url' => 'https://en.test', 'locale' => 'en'],
8990
'fr' => ['url' => 'https://fr.test', 'locale' => 'fr'],
90-
'de' => ['url' => 'https://de.test', 'locale' => 'de'],
9191
]);
9292

9393
$this->setTestRoles(['test' => [
@@ -96,22 +96,10 @@ public function it_sets_the_correct_site_when_first_logging_in()
9696
$user = tap(User::make()->assignRole('test'))->save();
9797

9898
$this->actingAs($user);
99-
$request = $this->createRequest('https://fr.test/cp/foo');
99+
$request = $this->createRequest($url);
100100
$handled = false;
101101

102-
(new SelectedSite())->handle($request, function () use (&$handled) {
103-
$handled = true;
104-
105-
return new Response;
106-
});
107-
108-
$this->assertTrue($handled);
109-
$this->assertEquals('fr', Site::selected()->handle());
110-
111-
Site::setSelected('en');
112-
113-
$request = $this->createRequest('https://fr.test/cp/bar');
114-
$handled = false;
102+
$this->session(['statamic.cp.selected-site' => $existingSelection]);
115103

116104
(new SelectedSite())->handle($request, function () use (&$handled) {
117105
$handled = true;
@@ -120,7 +108,26 @@ public function it_sets_the_correct_site_when_first_logging_in()
120108
});
121109

122110
$this->assertTrue($handled);
123-
$this->assertEquals('en', Site::selected()->handle());
111+
$this->assertEquals($expectedSelection, Site::selected()->handle());
112+
}
113+
114+
public static function firstLoginProvider()
115+
{
116+
$enUrl = 'https://en.test/cp/foo';
117+
$frUrl = 'https://fr.test/cp/foo';
118+
$unknownUrl = 'https://unknown.test/cp/foo';
119+
120+
return [
121+
'en site: fresh session' => [null, $enUrl, 'en'],
122+
'en site: existing en session' => ['en', $enUrl, 'en'],
123+
'en site: existing fr session' => ['fr', $enUrl, 'fr'],
124+
'fr site: fresh session' => [null, $frUrl, 'fr'],
125+
'fr site: existing fr session' => ['fr', $frUrl, 'fr'],
126+
'fr site: existing en session' => ['en', $frUrl, 'en'],
127+
'unknown site: fresh session' => [null, $unknownUrl, 'en'],
128+
'unknown site: existing en session' => ['en', $unknownUrl, 'en'],
129+
'unknown site: existing fr session' => ['fr', $unknownUrl, 'fr'],
130+
];
124131
}
125132

126133
#[Test]

0 commit comments

Comments
 (0)