Skip to content

Commit 1fbdfec

Browse files
committed
Only run setup once per test run
1 parent ed138e5 commit 1fbdfec

File tree

3 files changed

+69
-69
lines changed

3 files changed

+69
-69
lines changed

tests/EmailsTests.php

+43-43
Original file line numberDiff line numberDiff line change
@@ -12,65 +12,65 @@ class EmailsTests extends \PHPUnit\Framework\TestCase
1212
{
1313
/** @var \Mailosaur\MailosaurClient
1414
*/
15-
public $client;
15+
protected static $client;
1616

1717
/** @var string */
18-
public $server;
18+
protected static $server;
1919

2020
/** @var \Mailosaur\Models\MessageSummary[] */
21-
public $emails;
21+
protected static $emails;
2222

2323

24-
public function setUp(): void
24+
public static function setUpBeforeClass(): void
2525
{
2626
$baseUrl = ($h = getenv('MAILOSAUR_BASE_URL')) ? $h : 'https://mailosaur.com/';
2727
$apiKey = getenv('MAILOSAUR_API_KEY');
28-
$this->server = getenv('MAILOSAUR_SERVER');
28+
self::$server = getenv('MAILOSAUR_SERVER');
2929

30-
if (empty($apiKey) || empty($this->server)) {
30+
if (empty($apiKey) || empty(self::$server)) {
3131
throw new \Exception('Missing necessary environment variables - refer to README.md');
3232
}
3333

34-
$this->client = new MailosaurClient($apiKey, $baseUrl);
34+
self::$client = new MailosaurClient($apiKey, $baseUrl);
3535

36-
$this->client->messages->deleteAll($this->server);
36+
self::$client->messages->deleteAll(self::$server);
3737

38-
Mailer::sendEmails($this->client, $this->server, 5);
38+
Mailer::sendEmails(self::$client, self::$server, 5);
3939

40-
$this->emails = $this->client->messages->all($this->server)->items;
40+
self::$emails = self::$client->messages->all(self::$server)->items;
4141
}
4242

4343
public function testListWithReceivedAfter()
4444
{
4545
$pastDate = new \DateTime();
4646
$pastDate->sub(new \DateInterval('PT10M'));
47-
$pastEmails = $this->client->messages->all($this->server, null, null, $pastDate)->items;
47+
$pastEmails = self::$client->messages->all(self::$server, null, null, $pastDate)->items;
4848
$this->assertTrue(count($pastEmails) > 0);
4949

50-
$futureEmails = $this->client->messages->all($this->server, null, null, new \DateTime())->items;
50+
$futureEmails = self::$client->messages->all(self::$server, null, null, new \DateTime())->items;
5151
$this->assertCount(0, $futureEmails);
5252
}
5353

5454
public function testGet()
5555
{
5656
$host = ($h = getenv('MAILOSAUR_SMTP_HOST')) ? $h : 'mailosaur.io';
57-
$testEmailAddress = 'wait_for_test.' . $this->server . '@' . $host;
57+
$testEmailAddress = 'wait_for_test.' . self::$server . '@' . $host;
5858

59-
Mailer::sendEmail($this->client, $this->server, $testEmailAddress);
59+
Mailer::sendEmail(self::$client, self::$server, $testEmailAddress);
6060

6161
$criteria = new SearchCriteria();
6262
$criteria->sentTo = $testEmailAddress;
6363

64-
$email = $this->client->messages->get($this->server, $criteria);
64+
$email = self::$client->messages->get(self::$server, $criteria);
6565

6666
$this->validateEmail($email);
6767
}
6868

6969
public function testGetById()
7070
{
71-
$emailToRetrieve = $this->emails[0];
71+
$emailToRetrieve = self::$emails[0];
7272

73-
$email = $this->client->messages->getById($emailToRetrieve->id);
73+
$email = self::$client->messages->getById($emailToRetrieve->id);
7474

7575
$this->validateEmail($email);
7676
$this->validateHeaders($email);
@@ -79,32 +79,32 @@ public function testGetById()
7979
public function testGetByIdNotFound()
8080
{
8181
$this->expectException(\Mailosaur\Models\MailosaurException::class);
82-
$this->client->messages->getById(uniqid());
82+
self::$client->messages->getById(uniqid());
8383
}
8484

8585
public function testSearchNoCriteriaError()
8686
{
8787
$this->expectException(\Mailosaur\Models\MailosaurException::class);
88-
$this->client->messages->search($this->server, new SearchCriteria());
88+
self::$client->messages->search(self::$server, new SearchCriteria());
8989
}
9090

9191
public function testSearchTimeoutErrorsSuppressed()
9292
{
9393
$criteria = new SearchCriteria();
9494
$criteria->sentFrom = '[email protected]';
95-
$results = $this->client->messages->search($this->server, $criteria, 0, 1, 1, new \DateTime(), false)->items;
95+
$results = self::$client->messages->search(self::$server, $criteria, 0, 1, 1, new \DateTime(), false)->items;
9696
$this->assertCount(0, $results);
9797
}
9898

9999
public function testSearchBySentFrom()
100100
{
101-
$targetEmail = $this->emails[1];
101+
$targetEmail = self::$emails[1];
102102

103103
$criteria = new SearchCriteria();
104104

105105
$criteria->sentFrom = $targetEmail->from[0]->email;
106106

107-
$results = $this->client->messages->search($this->server, $criteria)->items;
107+
$results = self::$client->messages->search(self::$server, $criteria)->items;
108108

109109
$this->assertCount(1, $results);
110110
$this->assertEquals($targetEmail->from[0]->email, $results[0]->from[0]->email);
@@ -118,18 +118,18 @@ public function testSearchBySentFromInvalidEmail()
118118
$criteria = new SearchCriteria();
119119
$criteria->sentFrom = '.not_an_email_address';
120120

121-
$this->client->messages->search($this->server, $criteria);
121+
self::$client->messages->search(self::$server, $criteria);
122122
}
123123

124124
public function testSearchBySentTo()
125125
{
126-
$targetEmail = $this->emails[1];
126+
$targetEmail = self::$emails[1];
127127

128128
$criteria = new SearchCriteria();
129129

130130
$criteria->sentTo = $targetEmail->to[0]->email;
131131

132-
$results = $this->client->messages->search($this->server, $criteria)->items;
132+
$results = self::$client->messages->search(self::$server, $criteria)->items;
133133

134134
$this->assertCount(1, $results);
135135
$this->assertEquals($targetEmail->to[0]->email, $results[0]->to[0]->email);
@@ -143,17 +143,17 @@ public function testSearchBySentToInvalidEmail()
143143
$criteria = new SearchCriteria();
144144
$criteria->sentTo = '.not_an_email_address';
145145

146-
$this->client->messages->search($this->server, $criteria);
146+
self::$client->messages->search(self::$server, $criteria);
147147
}
148148

149149
public function testSearchByBody()
150150
{
151-
$targetEmail = $this->emails[1];
151+
$targetEmail = self::$emails[1];
152152
$uniqueString = substr($targetEmail->subject, 0, 10);
153153
$criteria = new SearchCriteria();
154154
$criteria->body = $uniqueString . ' html';
155155

156-
$results = $this->client->messages->search($this->server, $criteria)->items;
156+
$results = self::$client->messages->search(self::$server, $criteria)->items;
157157

158158
$this->assertCount(1, $results);
159159
$this->assertEquals($targetEmail->to[0]->email, $results[0]->to[0]->email);
@@ -162,11 +162,11 @@ public function testSearchByBody()
162162

163163
public function testSearchBySubject()
164164
{
165-
$targetEmail = $this->emails[1];
165+
$targetEmail = self::$emails[1];
166166
$criteria = new SearchCriteria();
167167
$criteria->subject = substr($targetEmail->subject, 0, 10);
168168

169-
$results = $this->client->messages->search($this->server, $criteria)->items;
169+
$results = self::$client->messages->search(self::$server, $criteria)->items;
170170

171171
$this->assertCount(1, $results);
172172
$this->assertEquals($targetEmail->to[0]->email, $results[0]->to[0]->email);
@@ -175,45 +175,45 @@ public function testSearchBySubject()
175175

176176
public function testSearchMatchAll()
177177
{
178-
$targetEmail = $this->emails[1];
178+
$targetEmail = self::$emails[1];
179179
$criteria = new SearchCriteria();
180180
$criteria->subject = substr($targetEmail->subject, 0, 10);
181181
$criteria->body = 'this is a link';
182182
$criteria->match = 'ALL';
183183

184-
$results = $this->client->messages->search($this->server, $criteria)->items;
184+
$results = self::$client->messages->search(self::$server, $criteria)->items;
185185

186186
$this->assertCount(1, $results);
187187
}
188188

189189
public function testSearchMatchAny()
190190
{
191-
$targetEmail = $this->emails[1];
191+
$targetEmail = self::$emails[1];
192192
$criteria = new SearchCriteria();
193193
$criteria->subject = substr($targetEmail->subject, 0, 10);
194194
$criteria->body = 'this is a link';
195195
$criteria->match = 'ANY';
196196

197-
$results = $this->client->messages->search($this->server, $criteria)->items;
197+
$results = self::$client->messages->search(self::$server, $criteria)->items;
198198

199-
$this->assertCount(5, $results);
199+
$this->assertCount(6, $results);
200200
}
201201

202202
public function testSearchWithSpecialCharacters()
203203
{
204204
$criteria = new SearchCriteria();
205205
$criteria->subject = 'Search with ellipsis … and emoji 👨🏿‍🚒';
206206

207-
$results = $this->client->messages->search($this->server, $criteria)->items;
207+
$results = self::$client->messages->search(self::$server, $criteria)->items;
208208

209209
$this->assertCount(0, $results);
210210
}
211211

212212
public function testSpamAnalysis()
213213
{
214-
$targetId = $this->emails[0]->id;
214+
$targetId = self::$emails[0]->id;
215215

216-
$result = $this->client->analysis->spam($targetId);
216+
$result = self::$client->analysis->spam($targetId);
217217

218218
foreach ($result->spamFilterResults->spamAssassin as $rule) {
219219
$this->assertNotEmpty($rule->rule);
@@ -223,19 +223,19 @@ public function testSpamAnalysis()
223223

224224
public function testDelete()
225225
{
226-
$targetEmailId = $this->emails[4]->id;
226+
$targetEmailId = self::$emails[4]->id;
227227

228-
$this->client->messages->delete($targetEmailId);
228+
self::$client->messages->delete($targetEmailId);
229229

230230
$this->expectException(\Mailosaur\Models\MailosaurException::class);
231231

232-
$this->client->messages->delete($targetEmailId);
232+
self::$client->messages->delete($targetEmailId);
233233
}
234234

235235
public function testAll()
236236
{
237-
foreach ($this->emails as $emailSummary) {
238-
$this->validateEmailSummary($emailSummary);
237+
foreach (self::$emails as $emailsummary) {
238+
$this->validateEmailSummary($emailsummary);
239239
}
240240
}
241241

tests/FilesTests.php

+15-15
Original file line numberDiff line numberDiff line change
@@ -9,53 +9,53 @@
99
class FilesTests extends \PHPUnit\Framework\TestCase
1010
{
1111
/** @var \Mailosaur\MailosaurClient */
12-
public $client;
12+
protected static $client;
1313

1414
/** @var string */
15-
public $server;
15+
protected static $server;
1616

1717
/** @var \Mailosaur\Models\Message */
18-
public $email;
18+
protected static $email;
1919

20-
public function setUp(): void
20+
public static function setUpBeforeClass(): void
2121
{
2222
$baseUrl = ($h = getenv('MAILOSAUR_BASE_URL')) ? $h : 'https://mailosaur.com/';
2323
$apiKey = getenv('MAILOSAUR_API_KEY');
24-
$this->server = getenv('MAILOSAUR_SERVER');
24+
self::$server = getenv('MAILOSAUR_SERVER');
2525

26-
if (empty($apiKey) || empty($this->server)) {
26+
if (empty($apiKey) || empty(self::$server)) {
2727
throw new \Exception('Missing necessary environment variables - refer to README.md');
2828
}
2929

30-
$this->client = new MailosaurClient($apiKey, $baseUrl);
30+
self::$client = new MailosaurClient($apiKey, $baseUrl);
3131

32-
$this->client->messages->deleteAll($this->server);
32+
self::$client->messages->deleteAll(self::$server);
3333

3434
$host = ($h = getenv('MAILOSAUR_SMTP_HOST')) ? $h : 'mailosaur.io';
35-
$testEmailAddress = 'wait_for_test.' . $this->server . '@' . $host;
35+
$testEmailAddress = 'wait_for_test.' . self::$server . '@' . $host;
3636

37-
Mailer::sendEmail($this->client, $this->server, $testEmailAddress);
37+
Mailer::sendEmail(self::$client, self::$server, $testEmailAddress);
3838

3939
$criteria = new SearchCriteria();
4040
$criteria->sentTo = $testEmailAddress;
4141

42-
$this->email = $this->client->messages->get($this->server, $criteria);
42+
self::$email = self::$client->messages->get(self::$server, $criteria);
4343
}
4444

4545
public function testGetEmail()
4646
{
47-
$result = $this->client->files->getEmail($this->email->id);
47+
$result = self::$client->files->getEmail(self::$email->id);
4848

4949
$this->assertNotNull($result);
5050
$this->assertTrue(strlen($result) > 0);
51-
$this->assertStringContainsString($this->email->subject, $result);
51+
$this->assertStringContainsString(self::$email->subject, $result);
5252
}
5353

5454
public function testGetAttachment()
5555
{
56-
$attachment = $this->email->attachments[0];
56+
$attachment = self::$email->attachments[0];
5757

58-
$result = $this->client->files->getAttachment($attachment->id);
58+
$result = self::$client->files->getAttachment($attachment->id);
5959

6060
$this->assertNotNull($result);
6161
$this->assertEquals($attachment->length, strlen($result));

0 commit comments

Comments
 (0)