Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 876cbe2

Browse files
committed
Less mocks and reflection
1 parent 419f89a commit 876cbe2

File tree

1 file changed

+43
-44
lines changed

1 file changed

+43
-44
lines changed

src/Symfony/Component/Mailer/Bridge/Mailjet/Tests/Transport/MailjetApiTransportTest.php

Lines changed: 43 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ public function testPayloadFormat()
8989
$this->assertEquals('Qux', $replyTo['Name']);
9090
}
9191

92-
public function testDoSendApiSuccess()
92+
public function testSendSuccess()
9393
{
9494
$json = json_encode([
9595
'Messages' => [
@@ -106,63 +106,61 @@ public function testDoSendApiSuccess()
106106
$client = new MockHttpClient($response);
107107

108108
$transport = new MailjetApiTransport(self::USER, self::PASSWORD, $client);
109-
$method = new \ReflectionMethod(MailjetApiTransport::class, 'doSendApi');
110-
$method->setAccessible(true);
111109

112110
$email = new Email();
113-
$envelope = new Envelope(new Address('[email protected]', 'Foo'), [new Address('[email protected]', 'Bar')]);
114-
115-
$sentMessage = $this->createMock(SentMessage::class);
116-
$sentMessage
117-
->expects(self::once())
118-
->method('setMessageId');
111+
$email
112+
113+
114+
->text('foobar');
119115

120-
$method->invoke($transport, $sentMessage, $email, $envelope);
116+
$sentMessage = $transport->send($email);
117+
$this->assertInstanceOf(SentMessage::class, $sentMessage);
118+
$this->assertSame('baz', $sentMessage->getMessageId());
121119
}
122120

123-
public function testDoSendApiWithDecodingException()
121+
public function testSendWithDecodingException()
124122
{
125123
$response = new MockResponse('cannot-be-decoded');
126124

127125
$client = new MockHttpClient($response);
128126

129127
$transport = new MailjetApiTransport(self::USER, self::PASSWORD, $client);
130-
$method = new \ReflectionMethod(MailjetApiTransport::class, 'doSendApi');
131-
$method->setAccessible(true);
132128

133129
$email = new Email();
134-
$envelope = new Envelope(new Address('[email protected]', 'Foo'), [new Address('[email protected]', 'Bar')]);
135-
136-
$sentMessage = $this->createMock(SentMessage::class);
130+
$email
131+
132+
133+
->text('foobar');
137134

138135
$this->expectExceptionObject(
139136
new HttpTransportException('Unable to send an email: "cannot-be-decoded" (code 200).', $response)
140137
);
141-
$method->invoke($transport, $sentMessage, $email, $envelope);
138+
139+
$transport->send($email);
142140
}
143141

144-
public function testDoSendApiWithTransportException()
142+
public function testSendWithTransportException()
145143
{
146144
$response = new MockResponse('', ['error' => 'foo']);
147145

148146
$client = new MockHttpClient($response);
149147

150148
$transport = new MailjetApiTransport(self::USER, self::PASSWORD, $client);
151-
$method = new \ReflectionMethod(MailjetApiTransport::class, 'doSendApi');
152-
$method->setAccessible(true);
153149

154150
$email = new Email();
155-
$envelope = new Envelope(new Address('[email protected]', 'Foo'), [new Address('[email protected]', 'Bar')]);
156-
157-
$sentMessage = $this->createMock(SentMessage::class);
151+
$email
152+
153+
154+
->text('foobar');
158155

159156
$this->expectExceptionObject(
160157
new HttpTransportException('Could not reach the remote Mailjet server.', $response)
161158
);
162-
$method->invoke($transport, $sentMessage, $email, $envelope);
159+
160+
$transport->send($email);
163161
}
164162

165-
public function testDoSendApiWithBadRequestResponse()
163+
public function testSendWithBadRequestResponse()
166164
{
167165
$json = json_encode([
168166
'Messages' => [
@@ -186,45 +184,45 @@ public function testDoSendApiWithBadRequestResponse()
186184
$client = new MockHttpClient($response);
187185

188186
$transport = new MailjetApiTransport(self::USER, self::PASSWORD, $client);
189-
$method = new \ReflectionMethod(MailjetApiTransport::class, 'doSendApi');
190-
$method->setAccessible(true);
191187

192188
$email = new Email();
193-
$envelope = new Envelope(new Address('[email protected]', 'Foo'), [new Address('[email protected]', 'Bar')]);
194-
195-
$sentMessage = $this->createMock(SentMessage::class);
189+
$email
190+
191+
192+
->text('foobar');
196193

197194
$this->expectExceptionObject(
198195
new HttpTransportException('Unable to send an email: "The To is mandatory but missing from the input" (code 400).', $response)
199196
);
200-
$method->invoke($transport, $sentMessage, $email, $envelope);
197+
198+
$transport->send($email);
201199
}
202200

203-
public function testDoSendApiWithNoErrorMessageBadRequestResponse()
201+
public function testSendWithNoErrorMessageBadRequestResponse()
204202
{
205203
$response = new MockResponse('response-content', ['http_code' => 400]);
206204

207205
$client = new MockHttpClient($response);
208206

209207
$transport = new MailjetApiTransport(self::USER, self::PASSWORD, $client);
210-
$method = new \ReflectionMethod(MailjetApiTransport::class, 'doSendApi');
211-
$method->setAccessible(true);
212208

213209
$email = new Email();
214-
$envelope = new Envelope(new Address('[email protected]', 'Foo'), [new Address('[email protected]', 'Bar')]);
215-
216-
$sentMessage = $this->createMock(SentMessage::class);
210+
$email
211+
212+
213+
->text('foobar');
217214

218215
$this->expectExceptionObject(
219216
new HttpTransportException('Unable to send an email: "response-content" (code 400).', $response)
220217
);
221-
$method->invoke($transport, $sentMessage, $email, $envelope);
218+
219+
$transport->send($email);
222220
}
223221

224222
/**
225223
* @dataProvider getMalformedResponse
226224
*/
227-
public function testDoSendApiWithMalformedResponse(array $body)
225+
public function testSendWithMalformedResponse(array $body)
228226
{
229227
$json = json_encode($body);
230228

@@ -233,18 +231,19 @@ public function testDoSendApiWithMalformedResponse(array $body)
233231
$client = new MockHttpClient($response);
234232

235233
$transport = new MailjetApiTransport(self::USER, self::PASSWORD, $client);
236-
$method = new \ReflectionMethod(MailjetApiTransport::class, 'doSendApi');
237-
$method->setAccessible(true);
238234

239235
$email = new Email();
240-
$envelope = new Envelope(new Address('[email protected]', 'Foo'), [new Address('[email protected]', 'Bar')]);
236+
$email
237+
238+
239+
->text('foobar');
241240

242-
$sentMessage = $this->createMock(SentMessage::class);
243241

244242
$this->expectExceptionObject(
245243
new HttpTransportException(sprintf('Unable to send an email: "%s" malformed api response.', $json), $response)
246244
);
247-
$method->invoke($transport, $sentMessage, $email, $envelope);
245+
246+
$transport->send($email);
248247
}
249248

250249
public function getMalformedResponse(): \Generator

0 commit comments

Comments
 (0)