Skip to content

Commit 03be23c

Browse files
committed
Chore: Add check executable, that will run all style checks and tests
1 parent 7cccb76 commit 03be23c

10 files changed

+187
-174
lines changed

bin/check

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#!/usr/bin/env bash
2+
3+
set -e
4+
5+
echo "Running Pint..."
6+
./vendor/bin/pint
7+
8+
echo "Running PHPStan..."
9+
./vendor/bin/phpstan analyse --memory-limit=1G
10+
11+
echo "Running Pest tests..."
12+
./vendor/bin/pest

composer.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,9 @@
6969
]
7070
}
7171
},
72+
"bin": [
73+
"bin/check"
74+
],
7275
"minimum-stability": "dev",
7376
"prefer-stable": true
7477
}

tests/Feature/ClearInboxControllerTest.php

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -11,61 +11,61 @@
1111
Route::post('/mailbox/clear', ClearInboxController::class)->name('inbox.clear');
1212
});
1313
config()->set('inbox.public', true);
14-
14+
1515
// Clear any existing messages before each test
1616
$service = app(CaptureService::class);
1717
$service->clearAll();
1818
});
1919

2020
it('empties store and returns success response', function () {
2121
$service = app(CaptureService::class);
22-
22+
2323
// Store some messages first
2424
$payload1 = [
2525
'subject' => 'Test Email 1',
2626
'from' => [['email' => '[email protected]']],
2727
'raw' => 'Email 1 content',
2828
];
2929
$payload2 = [
30-
'subject' => 'Test Email 2',
30+
'subject' => 'Test Email 2',
3131
'from' => [['email' => '[email protected]']],
3232
'raw' => 'Email 2 content',
3333
];
34-
34+
3535
$service->store($payload1);
3636
$service->store($payload2);
37-
37+
3838
// Verify messages exist
3939
$messagesBefore = $service->all();
4040
expect($messagesBefore)->toHaveCount(2);
41-
41+
4242
// Clear the inbox
4343
$response = $this->post('/mailbox/clear');
44-
44+
4545
$response->assertOk()
4646
->assertJson([]);
47-
47+
4848
// Verify messages are cleared
4949
$messagesAfter = $service->all();
5050
expect($messagesAfter)->toBeEmpty();
5151
});
5252

5353
it('returns json response even when inbox is already empty', function () {
5454
$service = app(CaptureService::class);
55-
55+
5656
// Ensure inbox is empty
5757
$messagesBefore = $service->all();
5858
expect($messagesBefore)->toBeEmpty();
59-
59+
6060
$response = $this->post('/mailbox/clear');
61-
61+
6262
$response->assertOk()
6363
->assertJson([]);
6464
});
6565

6666
it('handles large number of messages efficiently', function () {
6767
$service = app(CaptureService::class);
68-
68+
6969
// Store multiple messages
7070
for ($i = 1; $i <= 10; $i++) {
7171
$payload = [
@@ -75,48 +75,48 @@
7575
];
7676
$service->store($payload);
7777
}
78-
78+
7979
// Verify messages exist
8080
$messagesBefore = $service->all();
8181
expect($messagesBefore)->toHaveCount(10);
82-
82+
8383
// Clear all messages
8484
$response = $this->post('/mailbox/clear');
85-
85+
8686
$response->assertOk();
87-
87+
8888
// Verify all messages are cleared
8989
$messagesAfter = $service->all();
9090
expect($messagesAfter)->toBeEmpty();
9191
});
9292

9393
it('calls CaptureService clearAll method correctly', function () {
9494
$service = app(CaptureService::class);
95-
95+
9696
// Store a message to verify clearAll actually gets called
9797
$payload = [
9898
'subject' => 'Test Email',
9999
'from' => [['email' => '[email protected]']],
100100
'raw' => 'Test email content',
101101
];
102-
102+
103103
$key = $service->store($payload);
104-
104+
105105
// Verify message exists
106106
expect($service->retrieve($key))->not->toBeNull();
107-
107+
108108
$response = $this->post('/mailbox/clear');
109109
$response->assertOk();
110-
110+
111111
// Verify clearAll was effective
112112
expect($service->retrieve($key))->toBeNull();
113113
expect($service->all())->toBeEmpty();
114114
});
115115

116116
it('returns proper content-type header for json response', function () {
117117
$response = $this->post('/mailbox/clear');
118-
118+
119119
$response->assertOk()
120120
->assertHeader('content-type', 'application/json');
121121
});
122-
});
122+
});
Lines changed: 32 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,20 @@
11
<?php
22

3-
use Illuminate\Support\Facades\View;
43
use Redberry\MailboxForLaravel\CaptureService;
54
use Redberry\MailboxForLaravel\Http\Controllers\InboxController;
65

76
describe(InboxController::class, function () {
87
beforeEach(function () {
98
config()->set('inbox.public', true);
10-
9+
1110
// Clear any existing messages before each test
1211
$service = app(CaptureService::class);
1312
$service->clearAll();
1413
});
1514

1615
it('returns view with paginated list of messages sorted newest-first', function () {
1716
$service = app(CaptureService::class);
18-
17+
1918
// Store messages with different timestamps to test sorting
2019
$payload1 = [
2120
'subject' => 'First Email',
@@ -24,23 +23,23 @@
2423
'raw' => 'Email 1',
2524
];
2625
$payload2 = [
27-
'subject' => 'Second Email',
26+
'subject' => 'Second Email',
2827
'timestamp' => 2000,
2928
'from' => [['email' => '[email protected]']],
3029
'raw' => 'Email 2',
3130
];
32-
31+
3332
$key1 = $service->store($payload1);
3433
$key2 = $service->store($payload2);
35-
36-
$controller = new InboxController();
34+
35+
$controller = new InboxController;
3736
$request = request();
38-
37+
3938
$result = $controller->__invoke($request, $service);
40-
39+
4140
expect($result)->toBeInstanceOf(\Illuminate\Contracts\View\View::class);
4241
expect($result->name())->toBe('inbox::index');
43-
42+
4443
$data = $result->getData();
4544
expect($data)->toHaveKey('data');
4645
expect($data['data'])->toHaveKey('messages');
@@ -50,14 +49,14 @@
5049

5150
it('handles empty message list', function () {
5251
$service = app(CaptureService::class);
53-
$controller = new InboxController();
52+
$controller = new InboxController;
5453
$request = request();
55-
54+
5655
$result = $controller->__invoke($request, $service);
57-
56+
5857
expect($result)->toBeInstanceOf(\Illuminate\Contracts\View\View::class);
5958
expect($result->name())->toBe('inbox::index');
60-
59+
6160
$data = $result->getData();
6261
expect($data)->toHaveKey('data');
6362
expect($data['data'])->toHaveKey('messages');
@@ -67,20 +66,20 @@
6766

6867
it('normalizes message data structure for both paginated and non-paginated responses', function () {
6968
$service = app(CaptureService::class);
70-
69+
7170
$payload = [
7271
'subject' => 'Test Email',
7372
'from' => [['email' => '[email protected]']],
7473
'raw' => 'Test email content',
7574
];
76-
75+
7776
$service->store($payload);
78-
79-
$controller = new InboxController();
77+
78+
$controller = new InboxController;
8079
$request = request();
81-
80+
8281
$result = $controller->__invoke($request, $service);
83-
82+
8483
$data = $result->getData();
8584
// Should handle both paginated (with 'data' key) and non-paginated message arrays
8685
expect($data['data']['messages'])->toBeArray();
@@ -89,7 +88,7 @@
8988

9089
it('uses CaptureService to retrieve all messages', function () {
9190
$service = app(CaptureService::class);
92-
91+
9392
// Store multiple messages to verify the service is called correctly
9493
for ($i = 1; $i <= 3; $i++) {
9594
$payload = [
@@ -99,38 +98,38 @@
9998
];
10099
$service->store($payload);
101100
}
102-
103-
$controller = new InboxController();
101+
102+
$controller = new InboxController;
104103
$request = request();
105-
104+
106105
$result = $controller->__invoke($request, $service);
107-
106+
108107
$data = $result->getData();
109108
expect($data['data']['messages'])->toHaveCount(3);
110109
});
111110

112111
it('properly formats data structure for Vue.js consumption', function () {
113112
$service = app(CaptureService::class);
114-
113+
115114
$payload = [
116115
'subject' => 'Test Email',
117116
'from' => [['email' => '[email protected]', 'name' => 'Test User']],
118117
'to' => [['email' => '[email protected]']],
119118
'html' => '<p>Test content</p>',
120119
'raw' => 'Test email content',
121120
];
122-
121+
123122
$service->store($payload);
124-
125-
$controller = new InboxController();
123+
124+
$controller = new InboxController;
126125
$request = request();
127-
126+
128127
$result = $controller->__invoke($request, $service);
129-
128+
130129
$data = $result->getData();
131130
expect($data)->toHaveKey('data');
132131
expect($data['data'])->toHaveKey('messages');
133-
132+
134133
$message = $data['data']['messages'][0];
135134
expect($message)->toHaveKey('subject', 'Test Email');
136135
expect($message)->toHaveKey('from');
@@ -139,4 +138,4 @@
139138
expect($message)->toHaveKey('id');
140139
expect($message)->toHaveKey('timestamp');
141140
});
142-
});
141+
});

0 commit comments

Comments
 (0)