Skip to content

Commit 35df08d

Browse files
committed
test: assertions for rate limit + organize tests
1 parent 3c21fb3 commit 35df08d

File tree

2 files changed

+166
-117
lines changed

2 files changed

+166
-117
lines changed
Lines changed: 166 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,166 @@
1+
<?php
2+
declare(strict_types=1);
3+
4+
namespace Tests\Feature\Forms\UpdatePlayerPanel;
5+
6+
use App\Enums\PlayerTab;
7+
use App\Http\Livewire\UpdatePlayerPanel;
8+
use App\Models\Player;
9+
use Illuminate\Foundation\Testing\WithFaker;
10+
use Illuminate\Support\Arr;
11+
use Illuminate\Support\Facades\Http;
12+
use Livewire\Livewire;
13+
use Symfony\Component\HttpFoundation\Response;
14+
use Tests\Mocks\Csrs\MockCsrAllService;
15+
use Tests\Mocks\Matches\MockMatchesService;
16+
use Tests\Mocks\ServiceRecord\MockServiceRecordService;
17+
use Tests\TestCase;
18+
19+
class InvalidPlayerUpdateTest extends TestCase
20+
{
21+
use WithFaker;
22+
23+
public function testInvalidResponseFromAllHaloDotApiServices(): void
24+
{
25+
// Arrange
26+
$gamertag = $this->faker->word . $this->faker->numerify;
27+
$mockCsrResponse = (new MockCsrAllService())->error401();
28+
$mockMatchesResponse = (new MockMatchesService())->error404();
29+
$mockServiceResponse = (new MockServiceRecordService())->error404();
30+
31+
Http::fakeSequence()
32+
->push($mockCsrResponse, Response::HTTP_UNAUTHORIZED)
33+
->push($mockMatchesResponse, Response::HTTP_NOT_FOUND)
34+
->push($mockServiceResponse, Response::HTTP_NOT_FOUND);
35+
36+
$player = Player::factory()->createOne([
37+
'gamertag' => $gamertag
38+
]);
39+
40+
// Act & Assert
41+
Livewire::test(UpdatePlayerPanel::class, [
42+
'player' => $player,
43+
'type' => PlayerTab::OVERVIEW,
44+
])
45+
->call('processUpdate')
46+
->assertViewHas('color', 'is-danger')
47+
->assertViewHas('message', 'Oops - something went wrong.');
48+
}
49+
50+
public function testInvalidResponseDueToRateLimit(): void
51+
{
52+
// Arrange
53+
$gamertag = $this->faker->word . $this->faker->numerify;
54+
$mockCsrResponse = (new MockCsrAllService())->success($gamertag);
55+
$mockMatchesResponse = (new MockMatchesService())->success($gamertag);
56+
$mockServiceResponse = (new MockServiceRecordService())->error429();
57+
58+
Http::fakeSequence()
59+
->push($mockCsrResponse, Response::HTTP_OK)
60+
->push($mockMatchesResponse, Response::HTTP_OK)
61+
->push($mockServiceResponse, Response::HTTP_TOO_MANY_REQUESTS);
62+
63+
$player = Player::factory()->createOne([
64+
'gamertag' => $gamertag
65+
]);
66+
67+
// Act & Assert
68+
Livewire::test(UpdatePlayerPanel::class, [
69+
'player' => $player,
70+
'type' => PlayerTab::OVERVIEW,
71+
])
72+
->call('processUpdate')
73+
->assertViewHas('color', 'is-danger')
74+
->assertViewHas('message', 'Rate Limit Hit :( - Try later.');
75+
}
76+
77+
public function testCrashingOutIfNewExperienceMode(): void
78+
{
79+
// Arrange
80+
$gamertag = $this->faker->word . $this->faker->numerify;
81+
$mockCsrResponse = (new MockCsrAllService())->success($gamertag);
82+
$mockMatchesResponse = (new MockMatchesService())->success($gamertag);
83+
$mockServiceResponse = (new MockServiceRecordService())->success($gamertag);
84+
85+
// Set values into responses that "fake" a private account.
86+
Arr::set($mockMatchesResponse, 'data.0.experience', 'unknown-gametype');
87+
88+
Http::fakeSequence()
89+
->push($mockCsrResponse, Response::HTTP_OK)
90+
->push($mockMatchesResponse, Response::HTTP_OK)
91+
->push($mockServiceResponse, Response::HTTP_OK);
92+
93+
$player = Player::factory()->createOne([
94+
'gamertag' => $gamertag
95+
]);
96+
97+
// Act & Assert
98+
Livewire::test(UpdatePlayerPanel::class, [
99+
'player' => $player,
100+
'type' => PlayerTab::OVERVIEW,
101+
])
102+
->call('processUpdate')
103+
->assertViewHas('color', 'is-danger')
104+
->assertViewHas('message', 'Oops - something went wrong.');
105+
}
106+
107+
public function testCrashingOutIfNewOutcomeMode(): void
108+
{
109+
// Arrange
110+
$gamertag = $this->faker->word . $this->faker->numerify;
111+
$mockCsrResponse = (new MockCsrAllService())->success($gamertag);
112+
$mockMatchesResponse = (new MockMatchesService())->success($gamertag);
113+
$mockServiceResponse = (new MockServiceRecordService())->success($gamertag);
114+
115+
// Set values into responses that "fake" a private account.
116+
Arr::set($mockMatchesResponse, 'data.0.outcome', 'crashed');
117+
118+
Http::fakeSequence()
119+
->push($mockCsrResponse, Response::HTTP_OK)
120+
->push($mockMatchesResponse, Response::HTTP_OK)
121+
->push($mockServiceResponse, Response::HTTP_OK);
122+
123+
$player = Player::factory()->createOne([
124+
'gamertag' => $gamertag
125+
]);
126+
127+
// Act & Assert
128+
Livewire::test(UpdatePlayerPanel::class, [
129+
'player' => $player,
130+
'type' => PlayerTab::OVERVIEW,
131+
])
132+
->call('processUpdate')
133+
->assertViewHas('color', 'is-danger')
134+
->assertViewHas('message', 'Oops - something went wrong.');
135+
}
136+
137+
public function testCrashingOutIfNewQueueMode(): void
138+
{
139+
// Arrange
140+
$gamertag = $this->faker->word . $this->faker->numerify;
141+
$mockCsrResponse = (new MockCsrAllService())->success($gamertag);
142+
$mockMatchesResponse = (new MockMatchesService())->success($gamertag);
143+
$mockServiceResponse = (new MockServiceRecordService())->success($gamertag);
144+
145+
// Set values into responses that "fake" a private account.
146+
Arr::set($mockCsrResponse, 'data.0.queue', 'closed');
147+
148+
Http::fakeSequence()
149+
->push($mockCsrResponse, Response::HTTP_OK)
150+
->push($mockMatchesResponse, Response::HTTP_OK)
151+
->push($mockServiceResponse, Response::HTTP_OK);
152+
153+
$player = Player::factory()->createOne([
154+
'gamertag' => $gamertag
155+
]);
156+
157+
// Act & Assert
158+
Livewire::test(UpdatePlayerPanel::class, [
159+
'player' => $player,
160+
'type' => PlayerTab::OVERVIEW,
161+
])
162+
->call('processUpdate')
163+
->assertViewHas('color', 'is-danger')
164+
->assertViewHas('message', 'Oops - something went wrong.');
165+
}
166+
}

tests/Feature/Forms/UpdatePlayerPanel/ValidPlayerUpdateTest.php

Lines changed: 0 additions & 117 deletions
Original file line numberDiff line numberDiff line change
@@ -26,33 +26,6 @@ class ValidPlayerUpdateTest extends TestCase
2626
{
2727
use WithFaker;
2828

29-
public function testInvalidResponseFromAllHaloDotApiServices(): void
30-
{
31-
// Arrange
32-
$gamertag = $this->faker->word . $this->faker->numerify;
33-
$mockCsrResponse = (new MockCsrAllService())->error401();
34-
$mockMatchesResponse = (new MockMatchesService())->error404();
35-
$mockServiceResponse = (new MockServiceRecordService())->error429();
36-
37-
Http::fakeSequence()
38-
->push($mockCsrResponse, Response::HTTP_OK)
39-
->push($mockMatchesResponse, Response::HTTP_OK)
40-
->push($mockServiceResponse, Response::HTTP_OK);
41-
42-
$player = Player::factory()->createOne([
43-
'gamertag' => $gamertag
44-
]);
45-
46-
// Act & Assert
47-
Livewire::test(UpdatePlayerPanel::class, [
48-
'player' => $player,
49-
'type' => PlayerTab::OVERVIEW,
50-
])
51-
->call('processUpdate')
52-
->assertViewHas('color', 'is-danger')
53-
->assertViewHas('message', 'Oops - something went wrong.');
54-
}
55-
5629
public function testAutomaticallyMarkedPrivateIfInvalidRecord(): void
5730
{
5831
// Arrange
@@ -120,96 +93,6 @@ public function testAutomaticallyDeferNextPagesIfGamesAlreayLoaded(): void
12093
->assertEmitted('$refresh');
12194
}
12295

123-
public function testCrashingOutIfNewExperienceMode(): void
124-
{
125-
// Arrange
126-
$gamertag = $this->faker->word . $this->faker->numerify;
127-
$mockCsrResponse = (new MockCsrAllService())->success($gamertag);
128-
$mockMatchesResponse = (new MockMatchesService())->success($gamertag);
129-
$mockServiceResponse = (new MockServiceRecordService())->success($gamertag);
130-
131-
// Set values into responses that "fake" a private account.
132-
Arr::set($mockMatchesResponse, 'data.0.experience', 'unknown-gametype');
133-
134-
Http::fakeSequence()
135-
->push($mockCsrResponse, Response::HTTP_OK)
136-
->push($mockMatchesResponse, Response::HTTP_OK)
137-
->push($mockServiceResponse, Response::HTTP_OK);
138-
139-
$player = Player::factory()->createOne([
140-
'gamertag' => $gamertag
141-
]);
142-
143-
// Act & Assert
144-
Livewire::test(UpdatePlayerPanel::class, [
145-
'player' => $player,
146-
'type' => PlayerTab::OVERVIEW,
147-
])
148-
->call('processUpdate')
149-
->assertViewHas('color', 'is-danger')
150-
->assertViewHas('message', 'Oops - something went wrong.');
151-
}
152-
153-
public function testCrashingOutIfNewOutcomeMode(): void
154-
{
155-
// Arrange
156-
$gamertag = $this->faker->word . $this->faker->numerify;
157-
$mockCsrResponse = (new MockCsrAllService())->success($gamertag);
158-
$mockMatchesResponse = (new MockMatchesService())->success($gamertag);
159-
$mockServiceResponse = (new MockServiceRecordService())->success($gamertag);
160-
161-
// Set values into responses that "fake" a private account.
162-
Arr::set($mockMatchesResponse, 'data.0.outcome', 'crashed');
163-
164-
Http::fakeSequence()
165-
->push($mockCsrResponse, Response::HTTP_OK)
166-
->push($mockMatchesResponse, Response::HTTP_OK)
167-
->push($mockServiceResponse, Response::HTTP_OK);
168-
169-
$player = Player::factory()->createOne([
170-
'gamertag' => $gamertag
171-
]);
172-
173-
// Act & Assert
174-
Livewire::test(UpdatePlayerPanel::class, [
175-
'player' => $player,
176-
'type' => PlayerTab::OVERVIEW,
177-
])
178-
->call('processUpdate')
179-
->assertViewHas('color', 'is-danger')
180-
->assertViewHas('message', 'Oops - something went wrong.');
181-
}
182-
183-
public function testCrashingOutIfNewQueueMode(): void
184-
{
185-
// Arrange
186-
$gamertag = $this->faker->word . $this->faker->numerify;
187-
$mockCsrResponse = (new MockCsrAllService())->success($gamertag);
188-
$mockMatchesResponse = (new MockMatchesService())->success($gamertag);
189-
$mockServiceResponse = (new MockServiceRecordService())->success($gamertag);
190-
191-
// Set values into responses that "fake" a private account.
192-
Arr::set($mockCsrResponse, 'data.0.queue', 'closed');
193-
194-
Http::fakeSequence()
195-
->push($mockCsrResponse, Response::HTTP_OK)
196-
->push($mockMatchesResponse, Response::HTTP_OK)
197-
->push($mockServiceResponse, Response::HTTP_OK);
198-
199-
$player = Player::factory()->createOne([
200-
'gamertag' => $gamertag
201-
]);
202-
203-
// Act & Assert
204-
Livewire::test(UpdatePlayerPanel::class, [
205-
'player' => $player,
206-
'type' => PlayerTab::OVERVIEW,
207-
])
208-
->call('processUpdate')
209-
->assertViewHas('color', 'is-danger')
210-
->assertViewHas('message', 'Oops - something went wrong.');
211-
}
212-
21396
public function testInitialPageLoadDeferredFromApiCalls(): void
21497
{
21598
// Arrange

0 commit comments

Comments
 (0)